Technik:Appsettings.json und CoPlanner Agent Konfiguration: Unterschied zwischen den Versionen

Aus CoPlanner 11
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 17: Zeile 17:
{
{
   "Agent": {
   "Agent": {
     "ModelId": "gpt-5.4-mini",
     "ModelId": "gpt-5.6-luna",
    "ReasoningEffort": "low",
    "Api": "responses",
    "Endpoint": "https://api.openai.com/v1",
    "RequestTimeoutSeconds": 300,
    "AllowPlanningData": true,
    "AllowDimensionSearch": true,
     "ApiKey": "sk-...",
     "ApiKey": "sk-...",
   },
   },
Zeile 55: Zeile 61:
</syntaxhighlight>
</syntaxhighlight>


= CoPlanner Agent einrichten (LLM Anbindung)=
= [[WebApps:CoPlanner Agent|CoPlanner Agent]] einrichten (LLM Anbindung)=


'''''Der CoPlanner Agent ist ab CoPlanner 11 Release 3 2026 verfügbar'''''
'''''Der [[WebApps:CoPlanner Agent|CoPlanner Agent]] ist ab CoPlanner 11 Release 3 2026 verfügbar'''''


Der CoPlanner Agent beantwortet Fragen zur offenen Planungsmaske und steuert sie per Chat (aktueller Stand: Nullwertunterdrückung, weitere Kommandos in Arbeit). Die Anbindung läuft über die OpenAI-Plattform.
Die Anbindung läuft über die OpenAI-Plattform.


== Voraussetzungen ==
== Voraussetzungen ==
Zeile 65: Zeile 71:
* CoPlanner-Lizenz mit NeoFeatures-Flag – ohne das Flag wird der Agent im Client nicht angeboten.
* CoPlanner-Lizenz mit NeoFeatures-Flag – ohne das Flag wird der Agent im Client nicht angeboten.
* OpenAI-API-Key (siehe nächster Abschnitt).
* OpenAI-API-Key (siehe nächster Abschnitt).
* Der CoPlanner-Server braucht ausgehenden HTTPS-Zugriff auf api.openai.com.
* Der CoPlanner-Server braucht ausgehenden HTTPS-Zugriff auf api.openai.com. (bzw. die unter `Endpoint` eingestellte Adresse).


== OpenAI-Konto und API-Key ==
== OpenAI-Konto und API-Key ==
Zeile 81: Zeile 87:
Den Key wie ein Passwort behandeln: nicht weitergeben, gut aufbewahren und nur in der Server-Konfiguration eintragen.
Den Key wie ein Passwort behandeln: nicht weitergeben, gut aufbewahren und nur in der Server-Konfiguration eintragen.


== Server-Konfiguration ==
== Server-Konfiguration (On-Premises) ==


In der <code>appsettings.json</code> im Server-Verzeichnis (neben der Server-Exe) den Abschnitt <code>Agent</code> ergänzen:
In der <code>appsettings.json</code> im Server-Verzeichnis (neben der Server-Exe) den Abschnitt <code>Agent</code> ergänzen. Nötig ist nur der Key, alles andere hat einen getesteten Default


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">"Agent": {
"Agent": {
    "ModelId": "gpt-5.6-luna",
  "ApiKey": "sk-...",
    "ReasoningEffort": "low",
  "ModelId": "gpt-5.4-mini"
    "Api": "responses",
}
    "Endpoint": "https://api.openai.com/v1",
</syntaxhighlight>
    "RequestTimeoutSeconds": 300,
    "AllowPlanningData": true,
    "AllowDimensionSearch": true,
    "ApiKey": "sk-...",
}</syntaxhighlight>


* <code>ApiKey</code> – Pflicht. Ohne Key (oder leer) meldet der CopServer dem Client <code>enableAiAgent=false</code>, der Agent-Eintrag erscheint dann gar nicht.
{| class="wikitable"
* <code>ModelId</code> – optional, Standardwert: <code>gpt-5.4-mini</code>.
! Einstellung !! Default !! Bedeutung
|-
| <code>ApiKey</code> || leer || Pflicht. OpenAI-Key. Ohne Key (oder leer) meldet der CopServer dem Client <code>enableAiAgent=false</code>, der Agent-Eintrag erscheint dann gar nicht.
|-
| <code>ModelId</code> || <code>gpt-5.6-luna</code> || Modell, siehe Abschnitt Modelle
|-
| <code>ReasoningEffort</code> || <code>low</code> || Denkaufwand des Modells. Leer = nicht senden (nötig für Modelle ohne Reasoning).
|-
| <code>Api</code> || <code>responses</code> || OpenAI-Schnittstelle: <code>responses</code> oder <code>chat-completions</code>
|-
| <code>Endpoint</code> || <code><nowiki>https://api.openai.com/v1</nowiki></code> || Adresse der OpenAI-API, siehe Abschnitt Modelle und Adresse
|-
| <code>RequestTimeoutSeconds</code> || <code>300</code> || Wartezeit je Modellaufruf in Sekunden
|-
| <code>AllowPlanningData</code> || <code>true</code> || <code>false</code>: keine Inhalte der Maske (Zellwerte) an OpenAI. Der Agent steuert weiter die Ansicht, beantwortet aber keine Fragen zu Werten.
|-
| <code>AllowDimensionSearch</code> || <code>true</code> || <code>false</code>: keine Elementlisten und Vorschläge aus Dimensionen an OpenAI. Genau oder mit einem Teil des Namens genannte Elemente findet der Agent weiter, Tippfehler und Abkürzungen nicht mehr.
|}
* Nach Änderungen CopServer neu starten – die Datei wird nur beim Start gelesen.
* Nach Änderungen CopServer neu starten – die Datei wird nur beim Start gelesen.
* Statt in der Datei kann der Key auch als Umgebungsvariable <code>Agent__ApiKey</code> gesetzt werden. Das greift aber nur, wenn die <code>appsettings.json</code> gar keinen Eintrag <code>ApiKey</code> enthält - auch ein leerer Eintrag hat Vorrang vor der Umgebungsvariable.


== Modelle ==
== Modelle ==


Der Endpunkt ist fest die OpenAI-Plattform (kein Azure OpenAI, kein eigener Endpunkt). Konfigurierbar ist jedes OpenAI-Chat-Modell, das Tool-Calling unterstützt – Modellnamen laut OpenAI-Dokumentation.
Konfigurierbar ist jedes OpenAI-Modell, das Tool-Calling unterstützt – Modellnamen laut OpenAI-Dokumentation.


{| class="wikitable"
{| class="wikitable"
! ModelId
! ModelId !! Einordnung
! Einordnung
|-
|-
| <code>gpt-5.4-mini</code>
| <code>gpt-5.6-luna</code> || Default - mit <code>ReasoningEffort</code> <code>low</code> getestet, schnell und günstig
| Standardmodell – schnell und kostengünstig, für die Maskensteuerung ausreichend
|-
|-
| <code>gpt-5.4</code>
| <code>gpt-5.6-terra</code> || mit <code>ReasoningEffort</code> <code>medium</code> rund zehnmal so teuer (3,4 statt 0,35 Cent je Anfrage) und im Vergleichstest nicht klar besser - stärker beim Lesen von Werten
| Höhere Antwortqualität bei komplexeren Fragen, aber spürbar teurer
|-
| <code>gpt-5.4-mini</code> || ohne Reasoning - <code>ReasoningEffort</code> auf <code>""</code> setzen
|}
|}


Reasoning-Modelle (o-Serie) sind nicht getestet.
Wer `ModelId` ändert, muss prüfen, ob das Modell Reasoning kann: Modelle ohne Reasoning brauchen `"ReasoningEffort": ""`.
 
== Wo finde ich den Agenten? ==
 
Web-Client, Planungsmaske im Pivot-Modus: im vertikalen Maskenmenü der Eintrag '''CoPlanner Agent''' (KI-Funken-Icon). Der Klick öffnet den Chat-Dialog, erneuter Klick schließt ihn.
 
Der Eintrag erscheint nur, wenn alle Voraussetzungen erfüllt sind:
 
* Maske im Pivot-Modus (nicht Tabellen-/Zeilensicht)
* Lizenz mit NeoFeatures-Flag
* API-Key am Server konfiguriert

Aktuelle Version vom 1. Oktober 2026, 14:06 Uhr

appsettings.json Konfiguration

Bei Verwendung von https wird in dieser Datei angegeben, woher das Zertifikat bezogen werden soll.

Das Zertifikat kann entweder als Datei abgespeichert oder aus dem Zertifikatsspeicher bezogen werden. Bei Pfadangaben müssen immer zwei \ und nicht nur einer verwendet werden (z.B. D:\\MyCertFolder\\MyCert.pfx).

Erlaubte Hostnamen

Mit "AllowedHosts" werden die Hostnamen eingeschränkt, unter denen der Server erreichbar ist. Mehrere Hostnamen können durch Strichpunkte getrennt angegeben werden.

{
    "AllowedHosts": "servername.coplanner.com;localhost"
}

Beispiel appsettings.json

{
  "Agent": {
    "ModelId": "gpt-5.6-luna",
    "ReasoningEffort": "low",
    "Api": "responses",
    "Endpoint": "https://api.openai.com/v1",
    "RequestTimeoutSeconds": 300,
    "AllowPlanningData": true,
    "AllowDimensionSearch": true,
    "ApiKey": "sk-...",
  },
  "WebConfig": {
    "JwtBearerIssuer": "YOURCERTIFIKATIONAUTHORITY",
    "JwtBearerIssuerKey": "YOURKEY",
    "ForwardedSecret": "YOUURSECRET"
  },
  "Kestrel": {
    "Certificates": {
      "Default": {
        "Subject": "YOURSUBJECT", //// Issued to (Ausgestellt für) field
        "Store": "MY", //// possible values "MY", "Root", "Trust", "CA" -> https://learn.microsoft.com/en-us/windows/win32/seccrypto/system-store-locations
        "Location": "YOURLOCATION", //// possible values "CurrentUser", "LocalMachine" -> https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-7.0
        "AllowInvalid": "false"
      }
      //"Default": {
      //  "Path": "<path to .pfx file>",
      //  "Password": "<certificate password>"
      //}
      // or
      //"Default": {
      //  "Path": "<path to .pem/.crt file>",
      //  "KeyPath": "<path to .key file>",
      //  "Password": "<certificate password>"
      //}
      // or
      //"Default": {
      //  "Thumbprint": "<thumbprint; required>",
      //  "Store": "<certificate store; required>", //// possible values "MY", "Root", "Trust", "CA" -> https://learn.microsoft.com/en-us/windows/win32/seccrypto/system-store-locations
      //  "Location": "<location; defaults to CurrentUser>", //// possible values "CurrentUser", "LocalMachine" -> https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-7.0
      //  "AllowInvalid": "<true or false; defaults to false>"
      //}
    }
  }
}

CoPlanner Agent einrichten (LLM Anbindung)

Der CoPlanner Agent ist ab CoPlanner 11 Release 3 2026 verfügbar

Die Anbindung läuft über die OpenAI-Plattform.

Voraussetzungen

  • CoPlanner-Lizenz mit NeoFeatures-Flag – ohne das Flag wird der Agent im Client nicht angeboten.
  • OpenAI-API-Key (siehe nächster Abschnitt).
  • Der CoPlanner-Server braucht ausgehenden HTTPS-Zugriff auf api.openai.com. (bzw. die unter `Endpoint` eingestellte Adresse).

OpenAI-Konto und API-Key

Ein API-Key ist ein persönlicher Zugangsschlüssel (beginnt mit sk-...), mit dem der CoPlanner-Server Anfragen an OpenAI stellt – vergleichbar mit einem Passwort für den Programmzugriff. Ein ChatGPT-Abo ist dafür nicht nötig, die API wird separat und rein nach Verbrauch abgerechnet.

So kommt man zum Key:

  1. Auf platform.openai.com ein Konto anlegen (E-Mail oder bestehendes Microsoft-/Google-Konto).
  2. Unter Billing eine Zahlungsmethode hinterlegen und ein Startguthaben aufladen (z. B. 10 USD – Prepaid, es entsteht kein Abo).
  3. Unter API Keys mit Create new secret key einen Key erzeugen. Der Key wird nur einmal angezeigt – direkt kopieren und sicher ablegen.

Zu den Kosten: Abgerechnet wird nur die tatsächliche Nutzung (nach verarbeiteter Textmenge). Eine typische Agent-Anfrage mit dem Standardmodell kostet Bruchteile eines Cents – normale Nutzung bleibt damit im Bereich weniger Euro pro Monat. Unter Limits lässt sich zusätzlich ein Monatsbudget festlegen, mehr als das kann nie anfallen.

Den Key wie ein Passwort behandeln: nicht weitergeben, gut aufbewahren und nur in der Server-Konfiguration eintragen.

Server-Konfiguration (On-Premises)

In der appsettings.json im Server-Verzeichnis (neben der Server-Exe) den Abschnitt Agent ergänzen. Nötig ist nur der Key, alles andere hat einen getesteten Default

"Agent": {
    "ModelId": "gpt-5.6-luna",
    "ReasoningEffort": "low",
    "Api": "responses",
    "Endpoint": "https://api.openai.com/v1",
    "RequestTimeoutSeconds": 300,
    "AllowPlanningData": true,
    "AllowDimensionSearch": true,
    "ApiKey": "sk-...",
}
Einstellung Default Bedeutung
ApiKey leer Pflicht. OpenAI-Key. Ohne Key (oder leer) meldet der CopServer dem Client enableAiAgent=false, der Agent-Eintrag erscheint dann gar nicht.
ModelId gpt-5.6-luna Modell, siehe Abschnitt Modelle
ReasoningEffort low Denkaufwand des Modells. Leer = nicht senden (nötig für Modelle ohne Reasoning).
Api responses OpenAI-Schnittstelle: responses oder chat-completions
Endpoint https://api.openai.com/v1 Adresse der OpenAI-API, siehe Abschnitt Modelle und Adresse
RequestTimeoutSeconds 300 Wartezeit je Modellaufruf in Sekunden
AllowPlanningData true false: keine Inhalte der Maske (Zellwerte) an OpenAI. Der Agent steuert weiter die Ansicht, beantwortet aber keine Fragen zu Werten.
AllowDimensionSearch true false: keine Elementlisten und Vorschläge aus Dimensionen an OpenAI. Genau oder mit einem Teil des Namens genannte Elemente findet der Agent weiter, Tippfehler und Abkürzungen nicht mehr.
  • Nach Änderungen CopServer neu starten – die Datei wird nur beim Start gelesen.
  • Statt in der Datei kann der Key auch als Umgebungsvariable Agent__ApiKey gesetzt werden. Das greift aber nur, wenn die appsettings.json gar keinen Eintrag ApiKey enthält - auch ein leerer Eintrag hat Vorrang vor der Umgebungsvariable.

Modelle

Konfigurierbar ist jedes OpenAI-Modell, das Tool-Calling unterstützt – Modellnamen laut OpenAI-Dokumentation.

ModelId Einordnung
gpt-5.6-luna Default - mit ReasoningEffort low getestet, schnell und günstig
gpt-5.6-terra mit ReasoningEffort medium rund zehnmal so teuer (3,4 statt 0,35 Cent je Anfrage) und im Vergleichstest nicht klar besser - stärker beim Lesen von Werten
gpt-5.4-mini ohne Reasoning - ReasoningEffort auf "" setzen

Wer `ModelId` ändert, muss prüfen, ob das Modell Reasoning kann: Modelle ohne Reasoning brauchen `"ReasoningEffort": ""`.