Technik:Appsettings.json und CoPlanner Agent Konfiguration

Aus CoPlanner 11
Zur Navigation springenZur Suche springen

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.4-mini",
    "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.4-mini",
    "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": ""`.