From 1ab07ed3387d18256045d4f2b08f2cd42fa73aa5 Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 29 Jul 2026 22:05:06 +0200 Subject: [PATCH] .env.example aktualisiert --- .env.example | 845 +++++++++++++++++++++++++-------------------------- 1 file changed, 418 insertions(+), 427 deletions(-) diff --git a/.env.example b/.env.example index 769006b..4b40516 100644 --- a/.env.example +++ b/.env.example @@ -1,628 +1,619 @@ ############################################################################### -# GLPI AI AGENT +# GLPI AI STACK - GEMEINSAME .ENV +# +# Diese Datei hat zwei Aufgaben: +# +# 1. Docker Compose verwendet sie zur Variablenersetzung: +# ${KB_DATA_PATH:-./knowledge} +# ${AGENT_PORT:-7080} +# usw. +# +# 2. Der GLPI AI Agent lädt sie über: +# env_file: +# - .env # # Hinweise: -# - Boolesche Werte: true | false -# - Zeitangaben: z. B. 30s, 5m, 2h, 72h -# - Prozent-/Scorewerte werden als 0.0 bis 1.0 angegeben: -# 0.70 = 70 % -# - Komma-separierte Listen ohne Leerzeichen schreiben. +# - Boolean: true | false +# - Zeitangaben: 30s, 5m, 2h, 72h +# - Scores: 0.0 bis 1.0 +# 0.70 = 70 % +# - Listen: komma-separiert, möglichst ohne Leerzeichen # -# WICHTIG: -# DRY_RUN=true verhindert Änderungen an GLPI. -# Für die Einführungs-/Testphase unbedingt aktiviert lassen. +# relative Host-Pfade wie ./knowledge2 beziehen sich auf das Compose-Projekt. +# Pfade innerhalb des Agent-Containers sollten absolut angegeben werden. ############################################################################### - ############################################################################### -# 01. ALLGEMEINER BETRIEB +# 01. DOCKER COMPOSE - PORTS ############################################################################### - -# true: -# Agent analysiert Tickets, schreibt aber keine Änderungen nach GLPI. -# false: -# freigegebene Kategorieänderungen und Antworten werden tatsächlich geschrieben. -DRY_RUN=true - -# Logging-Level. -# Mögliche Werte: -# debug | info | warn | error -LOG_LEVEL=info - -# HTTP-Listener für WebUI, API, /healthz und /readyz. -HTTP_ADDR=:7080 - -# Persistente Laufzeitdaten: -# - Audit-Logs -# - Knowledge-Index -# - Web-KB -# - Lernbeispiele -# - GLPI-KB-Cache -DATA_DIR=./data - -KB_DATA_PATH=./knowledge -KB_BACKUP_PATH=./backups -KB_STAGING_PATH=./staging - +# WebUI / API / Diagnose-Cockpit des GLPI AI Agents. +# Aufruf normalerweise: +# http://:7080 AGENT_PORT=7080 +# Knowledge-Base-Suchoberfläche. KB_SEARCH_PORT=7081 +# Knowledge-Base-Administration. KB_EDITOR_PORT=7082 - - ############################################################################### -# 02. WEBINTERFACE / AUTHENTIFIZIERUNG +# 02. DOCKER COMPOSE - GEMEINSAME DATENVERZEICHNISSE ############################################################################### - -# Dashboard/API-Benutzer. -WEB_USERNAME=admin - -# Unbedingt ein langes zufälliges Passwort verwenden. -WEB_PASSWORD= - -# false = Authentifizierung erforderlich. -# true = WebUI ohne Login erreichbar. +# Zentrale Knowledge Base auf dem Docker-Host. # -# In Produktion dringend false lassen. -# KNOWLEDGE_WEB_EDIT_ENABLED=true ist zusammen mit anonymem Zugriff nicht -# empfehlenswert bzw. wird je nach Agent-Version abgelehnt. +# Dieses Verzeichnis wird gemeinsam verwendet von: +# - Agent read-only +# - KB Editor read-write +# - KB Search read-only +# +# Wichtig: +# In der compose.yml sollten ALLE drei Dienste KB_DATA_PATH verwenden. +KB_DATA_PATH=./knowledge +# Backups des Knowledge-Base-Editors. +KB_BACKUP_PATH=./backups +# Staging-Bereich für neue bzw. KI-unterstützt erzeugte KB-Artikel. +KB_STAGING_PATH=./staging +############################################################################### +# 03. KNOWLEDGE-BASE WEBANWENDUNGEN +############################################################################### +# --------------------------------------------------------------------------- +# KB EDITOR +# --------------------------------------------------------------------------- +EDITOR_TITLE=KB Administration +EDITOR_SUBTITLE=Wissensbasis verwalten +# Optionaler Basic-Auth-Zugang des Editors. +# +# Leer bedeutet je nach Anwendungskonfiguration keine Basic-Auth-Anmeldung. +# Für produktiven Betrieb sollten Benutzername und Passwort gesetzt werden. +EDITOR_AUTH_USER= +EDITOR_AUTH_PASSWORD= +# --------------------------------------------------------------------------- +# KB SEARCH +# --------------------------------------------------------------------------- +SEARCH_TITLE=Stadt Hilden - KB-Datenbank +SEARCH_SUBTITLE=Interne Lösungsdatenbank +SEARCH_AUTH_USER= +SEARCH_AUTH_PASSWORD= +# Intervall, in dem die Suchanwendung die KB-Dateien erneut einliest. +# +# Beispiele: +# 30s +# 60s +# 5m +AUTO_RELOAD_INTERVAL=60s +############################################################################### +# 04. KNOWLEDGE-BASE WEBANWENDUNGEN - OLLAMA +############################################################################### +# KI-Fallback der KB-Anwendungen. +# +# HINWEIS: +# Diese Einstellung betrifft kb-editor / kb-search. +# Der GLPI AI Agent besitzt unabhängig davon seine eigene Ollama-Konfiguration. +AI_FALLBACK_ENABLED=true +# Ollama-Adresse für kb-editor / kb-search innerhalb des Compose-Netzwerks. +# +# Nicht mit OLLAMA_URL des Agents verwechseln. +OLLAMA_BASE_URL=http://ollama:11434 +# Chat-Modell. +# +# Diese Variable wird aktuell sowohl von den KB-Anwendungen als auch vom +# Agenten verwendet. Dadurch verwenden alle Anwendungen dasselbe Modell. +OLLAMA_MODEL=qwen3:8b +# Gemeinsamer Timeout. +OLLAMA_TIMEOUT=10m +# Maximale parallele Ollama-Aufrufe. +# +# Bei einer einzelnen GPU bzw. begrenzten Ressourcen ist 1 ein guter +# Ausgangswert. +OLLAMA_MAX_CONCURRENT=1 +# Soll ein vom KB-System erzeugter Staging-Artikel automatisch mit +# auto_reply=true erzeugt werden? +# +# Sicherer Ausgangswert: +# false +OLLAMA_STAGING_AUTO_REPLY=false +# min_score für erzeugte Staging-Artikel. +OLLAMA_STAGING_MIN_SCORE=0.70 +############################################################################### +# 05. GLPI AI AGENT - ALLGEMEINER BETRIEB +############################################################################### +# true: +# Der Agent analysiert vollständig, schreibt aber keine Änderungen nach GLPI. +# +# false: +# Durch die Policy freigegebene Aktionen werden tatsächlich ausgeführt. +# +# Für Tests / Einführung: +# true +DRY_RUN=true +# Mögliche Werte: +# debug +# info +# warn +# error +LOG_LEVEL=info +# HTTP-Listener INNERHALB des Agent-Containers. +# +# AGENT_PORT oben bestimmt dagegen den veröffentlichten Host-Port. +HTTP_ADDR=:7080 +# Persistentes Verzeichnis IM Container. +# +# Compose mountet: +# agent-data:/app/data +# +# Enthält unter anderem: +# - Knowledge-Index +# - Audit/Run-Daten +# - Category Learning +# - Managed Knowledge +# - GLPI-KB-Cache +DATA_DIR=/app/data +############################################################################### +# 06. AGENT WEBUI / API / DIAGNOSE +############################################################################### +# Benutzer für Agent-Dashboard, Knowledge-Verwaltung und Diagnose-Cockpit. +WEB_USERNAME=admin +WEB_PASSWORD= +# false: +# Anmeldung erforderlich. +# +# true: +# Weboberfläche ohne Authentifizierung erreichbar. +# +# In Produktion normalerweise false. WEB_ALLOW_ANONYMOUS=false - -# Kennzeichnung automatisch ausgewählter KI-Inhalte. -# true = TrustedNet-KI-Badge wird jeder automatischen Antwort vorangestellt. +# TrustedNet-Kennzeichnung vor automatisch ausgewählten Antworten. +# +# true: +# TrustedNet-KI-Badge wird vor Anrede und Antwort eingefügt. +# +# false: +# keine KI-Kennzeichnung. AI_CONTENT_LABEL_ENABLED=true - - ############################################################################### -# 03. OPTIONALER GLPI-WEBHOOK +# 07. OPTIONALER GLPI-WEBHOOK ############################################################################### - # Optionales Shared Secret für eingehende GLPI-Webhooks. # -# Der Absender muss denselben Wert z. B. als: -# X-Webhook-Secret +# Der Absender muss dasselbe Secret z. B. über: +# X-Webhook-Secret # übertragen. # -# Leer lassen, wenn kein Webhook verwendet wird. +# Leer lassen, falls kein Webhook verwendet wird. WEBHOOK_SECRET= - - ############################################################################### -# 04. GLPI 11 / HIGH-LEVEL API / OAUTH2 +# 08. GLPI 11 / HIGH-LEVEL API / OAUTH2 ############################################################################### - GLPI_URL=https://glpi.example.com - -# Aktuell verwendete High-Level-API-Version. +# Verwendete GLPI High-Level API. GLPI_API_VERSION=v2.3 - -# OAuth2-Zugangsdaten des Service Accounts. +# OAuth2 Service Account. GLPI_CLIENT_ID= GLPI_CLIENT_SECRET= GLPI_USERNAME=ai GLPI_PASSWORD= - -# Numerische GLPI-Benutzer-ID des Agent-Service-Accounts. +# Numerische GLPI-Benutzer-ID des Service-Accounts. # -# Wichtig für die Erkennung: -# "Ist dieses Followup vom Agenten selbst oder von einem Menschen?" +# Wird unter anderem benötigt, um Agent-Followups von menschlichen +# Followups unterscheiden zu können. GLPI_AGENT_USER_ID=999 - -# true erlaubt unverschlüsseltes HTTP. -# Nur für lokale Entwicklungs-/Testsysteme verwenden. +# Nur für lokale Testsysteme ohne TLS. +# +# Produktion: +# false GLPI_ALLOW_INSECURE_HTTP=false - -# Nur Tickets mit diesen GLPI-Status-IDs werden verarbeitet. +############################################################################### +# 09. GLPI TICKET-POLLING +############################################################################### +# Fail-closed Whitelist erlaubter GLPI-Ticketstatus. # # Beispiel: -# 1 = nur "Neu" -# 1,2 = mehrere erlaubte Status +# 1 +# 1,2 # -# Fail-closed: lieber zunächst nur Status 1 erlauben. +# Status 1 entspricht typischerweise "Neu". GLPI_ALLOWED_STATUS_IDS=1 - -# Wie oft GLPI auf neue/geänderte Tickets geprüft wird. +# Polling-Intervall. GLPI_POLL_INTERVAL=30s - -# Maximal geladene Tickets pro Poll. +# Maximale Anzahl Tickets pro Poll. GLPI_POLL_LIMIT=50 - -# Optionaler serverseitiger GLPI-Filter. -# Die Agent-Policy prüft GLPI_ALLOWED_STATUS_IDS trotzdem nochmals selbst. +# Optionale serverseitige Vorfilterung. # -# Filter-Syntax gegen /api.php/doc der eigenen GLPI-Instanz prüfen. +# Die Agent-Policy prüft GLPI_ALLOWED_STATUS_IDS anschließend trotzdem selbst. +# +# Änderungen der Syntax immer gegen /api.php/doc der eigenen GLPI-Instanz +# prüfen. GLPI_TICKET_FILTER=status.id==1 - -# HTTP-Timeout für GLPI-API-Aufrufe. +# HTTP-Timeout für GLPI-Aufrufe. GLPI_TIMEOUT=20s - - ############################################################################### -# 05. OLLAMA / LLM +# 10. GLPI AI AGENT - OLLAMA ############################################################################### - -# Innerhalb Docker Compose typischerweise: -# http://ollama:11434 -# -# Bei nativem Betrieb: -# http://localhost:11434 +# Ollama-Adresse aus Sicht des Agent-Containers. OLLAMA_URL=http://ollama:11434 - -# Chat-/Entscheidungsmodell. -OLLAMA_MODEL=qwen3:8b - -# Embedding-Modell für Knowledge-Retrieval. +# OLLAMA_MODEL ist bereits oben im gemeinsamen Compose-/Ollama-Bereich gesetzt: +# OLLAMA_MODEL=qwen3:8b +# Embedding-Modell für RAG. OLLAMA_EMBEDDING_MODEL=embeddinggemma - -# Retrieval-Profil: -# auto = erkennt z. B. embeddinggemma und verwendet passende Query-/Doc-Prompts -# plain = keine modellspezifischen Retrieval-Prompts -# -# Empfohlen: -KNOWLEDGE_EMBEDDING_PROFILE=auto - -# Maximale Dauer eines einzelnen Ollama-Requests. -OLLAMA_TIMEOUT=10m - -# Maximale Anzahl generierter Tokens für strukturierte Entscheidungen. -OLLAMA_NUM_PREDICT=768 - -# Anzahl Wiederholungen bei ungültigem/unvollständigem JSON. -OLLAMA_JSON_RETRIES=1 - -# Modell nach Nutzung im Speicher halten. -OLLAMA_KEEP_ALIVE=10m - -# Thinking bei unterstützten Modellen deaktivieren. -# Für die strukturierte Ticketklassifikation normalerweise sinnvoll. -OLLAMA_THINK=false - -# Maximale parallele Requests an Ollama. -# -# Bei einer GPU/einem Ollama-Slot zunächst 1 verwenden. -OLLAMA_MAX_CONCURRENT=1 - - -############################################################################### -# 06. KNOWLEDGE BASE / RAG - GRUNDKONFIGURATION -############################################################################### - -# Verzeichnis für statische / Git-verwaltete Knowledge-JSONs. -KNOWLEDGE_DIR=./knowledge - -# false deaktiviert das komplette RAG/Embedding-System. -RAG_ENABLED=true - -# Verhalten bei externen/String-Kategorien aus gemeinsam genutzten KB-Dateien. +# Modellspezifisches Retrieval-Prompting. # # Mögliche Werte: # -# unscoped -# KB wird trotzdem geladen. -# Fremdkategorien dienen weiterhin als Retrieval-Tags. -# Nicht zuordenbare GLPI-Kategorien werden nicht erzwungen. +# auto +# Modell automatisch erkennen und passende Retrieval-Prompts verwenden. +# Für embeddinggemma empfohlen. # -# skip -# KB mit nicht zuordenbaren Kategorien komplett überspringen. -# -# strict -# unbekannte Kategorie erzeugt einen Start-/Scanfehler. -# -# Für gemeinsam genutzte Datenbestände empfohlen: -KNOWLEDGE_CATEGORY_MODE=unscoped - -# Optionales Mapping externer Kategorien auf GLPI-ITIL-Kategorie-IDs. -# -# Beispiel: -# { -# "Active Directory": 2, -# "Outlook": 12, -# "E-Mail": 12, -# "Security": [20,21] -# } -KNOWLEDGE_CATEGORY_MAP_FILE=/app/data/knowledge-category-map.json - -# Dateien anhand von Glob-Mustern ignorieren. +# plain +# keine modellspezifischen Retrieval-Prompts. +KNOWLEDGE_EMBEDDING_PROFILE=auto +# OLLAMA_TIMEOUT und OLLAMA_MAX_CONCURRENT sind bereits oben gesetzt. +# Maximale Anzahl generierter Tokens für strukturierte Antworten. +OLLAMA_NUM_PREDICT=768 +# Wiederholungen bei fehlerhaftem / abgeschnittenem JSON. +OLLAMA_JSON_RETRIES=1 +# Ollama-Modell nach Benutzung im Speicher halten. # # Beispiele: -# KNOWLEDGE_IGNORE_GLOBS=KB-SEC-ATTCK-*.json -# KNOWLEDGE_IGNORE_GLOBS=legacy-*.json,external-only-*.json +# 5m +# 10m +# 30m +OLLAMA_KEEP_ALIVE=10m +# Thinking bei unterstützten Modellen deaktivieren. # -# Leer = nichts explizit ignorieren. -KNOWLEDGE_IGNORE_GLOBS= - - +# Für strukturierte Klassifikations-/Policy-Aufgaben empfohlen. +OLLAMA_THINK=false ############################################################################### -# 07. PERSISTENTER / INKREMENTELLER KNOWLEDGE-INDEX +# 11. KNOWLEDGE BASE / RAG - BASIS ############################################################################### - +# Knowledge-Verzeichnis IM Agent-Container. +# +# Compose sollte hierhin KB_DATA_PATH mounten: +# ${KB_DATA_PATH:-./knowledge2}:/app/knowledge:ro +KNOWLEDGE_DIR=/app/knowledge +# Gesamtes Retrieval-System aktivieren. +RAG_ENABLED=true +############################################################################### +# 12. EXTERNE KNOWLEDGE-KATEGORIEN +############################################################################### +# Verhalten bei String-/Fremdkategorien, z. B.: +# +# "AI-Staging" +# "Outlook" +# "E-Mail" +# "Signatur" +# # Mögliche Werte: # -# incremental -# vorhandenen persistenten Index sofort laden und Änderungen im Hintergrund -# nachziehen. Für Produktion empfohlen. +# unscoped +# Artikel bleibt nutzbar. +# Fremdkategorien können als Retrieval-Metadaten dienen. # -# rebuild -# Index vollständig neu aufbauen. +# skip +# Artikel mit unbekannten Kategorien überspringen. # -# readonly -# nur vorhandenen Snapshot benutzen, keine Quelldateien aktualisieren. +# strict +# unbekannte Kategorie als Fehler behandeln. # +# Für eine gemeinsam mit anderen Anwendungen verwendete KB: +# unscoped +KNOWLEDGE_CATEGORY_MODE=unscoped +# Optionales Mapping von Fremdkategorien auf GLPI-ITIL-Kategorie-IDs. +# +# Beispiel knowledge-category-map.json: +# +# { +# "Outlook": 12, +# "E-Mail": 12, +# "Active Directory": 2, +# "Security": [20,21] +# } +KNOWLEDGE_CATEGORY_MAP_FILE=/app/data/knowledge-category-map.json +# Optional bestimmte KB-Dateien ignorieren. +# +# Beispiele: +# KB-SEC-ATTCK-*.json +# legacy-*.json,external-only-*.json +# +# Leer: +# keine zusätzlichen Ignore-Regeln. +KNOWLEDGE_IGNORE_GLOBS= +############################################################################### +# 13. PERSISTENTER KNOWLEDGE-INDEX +############################################################################### +# Mögliche Werte: +# +# incremental +# Persistent gespeicherten Index sofort verwenden. +# Neue/geänderte Dateien anschließend inkrementell nachziehen. +# Für Produktion empfohlen. +# +# rebuild +# vollständigen Index neu erzeugen. +# +# readonly +# nur bestehenden Index verwenden, keine Änderungen übernehmen. KNOWLEDGE_INDEX_MODE=incremental - -# Anzahl Embedding-Inputs pro Batch. +# Anzahl Texte pro Embedding-Batch. KNOWLEDGE_EMBED_BATCH_SIZE=64 - -# Intervall für Hintergrundprüfung auf neue/geänderte/gelöschte Knowledge-Dateien. +# Intervall für neue/geänderte/gelöschte Dateien. # -# 0 = kein automatischer Rescan. +# Beispiele: +# 30s +# 1m +# 5m +# +# 0: +# keinen automatischen Hintergrundscan durchführen. KNOWLEDGE_INDEX_SCAN_INTERVAL=5m - - ############################################################################### -# 08. KNOWLEDGE-RETRIEVAL / KANDIDATENAUSWAHL +# 14. RETRIEVAL / DYNAMISCHE KANDIDATENAUSWAHL ############################################################################### - -# Minimale Retrieval-Relevanz, damit eine KB überhaupt als plausibler Kandidat -# betrachtet werden kann. +# Unterhalb dieses Retrieval-Scores wird eine KB nicht als geeigneter +# Kandidat betrachtet. # -# KEINE Wahrscheinlichkeit. +# Der Wert ist KEINE Wahrscheinlichkeit. KNOWLEDGE_RETRIEVAL_FLOOR=0.30 - -# Maximaler Abstand zum besten Treffer. +# Maximale Differenz zum besten Treffer. # # Beispiel: -# bester Treffer = 0.82 -# MAX_GAP = 0.20 -# dynamischer Cutoff = 0.62 # -# Nur KBs >= 0.62 werden in diesem Beispiel an die KI weitergegeben. +# bester Treffer 0.82 +# MAX_GAP 0.20 +# dynamischer Cutoff 0.62 +# +# Ein Kandidat mit 0.55 würde dann nicht an die KI gesendet. KNOWLEDGE_CANDIDATE_MAX_GAP=0.20 - -# Maximale Anzahl KB-Kandidaten, die Ollama erhält. -# -# Das ist nur die Obergrenze. -# Durch Floor und Max-Gap können es deutlich weniger sein. +# Maximale Anzahl Knowledge-Kandidaten, die tatsächlich an Ollama gehen. KNOWLEDGE_TOP_K=6 - -# Anzahl Kandidaten, die für Dashboard/Audit gespeichert werden. +# Anzahl Kandidaten für Audit / Diagnose. +# # Kann größer als KNOWLEDGE_TOP_K sein. KNOWLEDGE_AUDIT_TOP_K=10 - - ############################################################################### -# 09. HYBRID-RETRIEVAL / RANKING +# 15. HYBRID-RETRIEVAL - RANKING-GEWICHTE ############################################################################### - -# Gewichtung des Kandidaten-Rankings. +# Die Werte beschreiben die Gewichtung beim KB-Ranking. # -# Summe sollte sinnvollerweise 1.0 ergeben. -# Fehlende Metadaten werden nicht negativ gewertet; vorhandene Komponenten -# werden intern entsprechend berücksichtigt. - -# Embedding-/Chunk-Semantik +# Summe aktuell: +# 1.0 +# +# Fehlende Metadaten sollen nicht automatisch negativ bewertet werden. +# Embedding-/Chunk-Semantik. KNOWLEDGE_WEIGHT_SEMANTIC=0.45 - -# Ähnlichkeit Ticket-Betreff <-> KB-Titel +# Ticket-Betreff gegenüber KB-Titel. KNOWLEDGE_WEIGHT_TITLE=0.20 - -# Lexikalische Übereinstimmungen / typische Helpdesk-Begriffe +# Lexikalische / sprachliche Übereinstimmung. KNOWLEDGE_WEIGHT_LEXICAL=0.20 - -# Explizite KB-Keywords +# KB-Keywords. KNOWLEDGE_WEIGHT_KEYWORDS=0.075 - -# GLPI-Kategorie / bestätigte Lernsignale +# Kategorie-/Lernsignal. KNOWLEDGE_WEIGHT_CATEGORY=0.075 - - ############################################################################### -# 10. FINALE KNOWLEDGE-EVIDENZ FÜR AUTO-REPLY +# 16. FINALE EVIDENZ FÜR AUTO-REPLY ############################################################################### - -# Mindestwert der finalen Evidenz für eine automatische Antwort. +# Mindestwert der FINALEN Evidenz. # # WICHTIG: -# Das ist NICHT mehr nur der rohe Retrieval-Score. +# Das ist nicht der reine Retrieval-Score. # -# Finale Evidenz berücksichtigt: +# Die finale Evidenz kombiniert: # - Retrieval -# - KI-Auswahl / KI-Confidence +# - AI Confidence # - Kategorieübereinstimmung -# KNOWLEDGE_MIN_SCORE=0.70 - -# Gewicht des Retrieval-Scores in der finalen Evidenz. +# Gewicht Retrieval. KNOWLEDGE_EVIDENCE_WEIGHT_RETRIEVAL=0.45 - -# Gewicht der KI-Auswahl / Reply-Confidence. +# Gewicht KI-Auswahl / KI-Confidence. KNOWLEDGE_EVIDENCE_WEIGHT_AI=0.35 - -# Gewicht der Kategorieübereinstimmung. +# Gewicht Kategorieübereinstimmung. KNOWLEDGE_EVIDENCE_WEIGHT_CATEGORY=0.20 - - ############################################################################### -# 11. KNOWLEDGE-CHUNKING +# 17. KNOWLEDGE-CHUNKING ############################################################################### - -# Anzahl Wörter pro KB-Chunk. +# Ungefähre Anzahl Wörter pro Dokument-Chunk. KNOWLEDGE_CHUNK_WORDS=160 - -# Überlappung zwischen benachbarten Chunks. +# Überlappung benachbarter Chunks. KNOWLEDGE_CHUNK_OVERLAP_WORDS=30 - -# Maximale Anzahl Chunks pro Knowledge-Dokument. +# Maximale Anzahl Chunks pro KB-Dokument. KNOWLEDGE_MAX_CHUNKS_PER_DOC=24 - -# Maximale Anzahl Chunks eines langen Tickets. +# Maximale Anzahl Query-Chunks bei sehr langen Tickets. KNOWLEDGE_MAX_QUERY_CHUNKS=64 - -# Begrenzung der Kategorien im Ollama-Prompt. -# Verhindert übergroße Prompts bei sehr großen GLPI-Kategorieäumen. +# Maximale Anzahl Kategorien im Kategorie-Prompt. CATEGORY_PROMPT_LIMIT=80 - - ############################################################################### -# 12. KNOWLEDGE-QUELLEN / TRUST POLICY +# 18. KNOWLEDGE-QUELLEN / TRUST POLICY ############################################################################### - -# Nur diese Source-Labels dürfen überhaupt durchsucht werden. +# Nur Knowledge-Dokumente mit diesen source-Werten werden indexiert/gesucht. # -# Beispiel: -# internal-kb,glpi-kb,vendor-docs +# Beispiele: +# internal-kb +# glpi-kb +# runbook +# vendor-docs KNOWLEDGE_ALLOWED_SOURCES=internal-kb,glpi-kb - -# Nur diese Quellen dürfen automatische Antworten auslösen. +# Nur diese Quellen dürfen grundsätzlich automatische Antworten liefern. # -# Muss Teilmenge von KNOWLEDGE_ALLOWED_SOURCES sein. +# Muss eine Teilmenge von KNOWLEDGE_ALLOWED_SOURCES sein. # -# "none" = Auto-Reply aus Knowledge-Quellen komplett deaktivieren. +# Beispiel zum kompletten Abschalten: +# KNOWLEDGE_AUTO_REPLY_SOURCES=none KNOWLEDGE_AUTO_REPLY_SOURCES=internal-kb,glpi-kb - -# Webbasierte CRUD-Verwaltung eigener Knowledge-Artikel. +# Webbasierte Bearbeitung von Agent-eigenen Knowledge-Artikeln. # -# Web-Artikel liegen unter: -# DATA_DIR/knowledge-managed/ +# Diese werden unter: +# DATA_DIR/knowledge-managed +# gespeichert. # -# KNOWLEDGE_DIR bleibt read-only / Git-verwaltet. +# Das statische KNOWLEDGE_DIR bleibt read-only. KNOWLEDGE_WEB_EDIT_ENABLED=true - - ############################################################################### -# 13. GLPI KNOWLEDGE BASE - READ-ONLY CONNECTOR +# 19. GLPI KNOWLEDGE BASE CONNECTOR ############################################################################### - -# GLPI Knowledge Base synchronisieren. +# GLPI-interne Knowledge Base synchronisieren. GLPI_KB_ENABLED=true - # auto: -# KnowbaseItem-Route wird aus /api.php/doc.json ermittelt. -# -# Alternativ kann ein expliziter API-Pfad angegeben werden. +# Agent ermittelt die KnowbaseItem-Route aus /api.php/doc.json. GLPI_KB_PATH=auto - -# Optionaler serverseitiger Filter. -# Leer = alle für den Service-Account sichtbaren KB-Artikel. +# Optionaler serverseitiger GLPI-Filter. +# +# Leer: +# alle für den Service Account sichtbaren Artikel, begrenzt durch LIMIT. GLPI_KB_FILTER= - -# Maximale Anzahl synchronisierter GLPI-KB-Artikel. +# Maximale Anzahl GLPI-KB-Artikel. GLPI_KB_LIMIT=500 - # Synchronisationsintervall. GLPI_KB_SYNC_INTERVAL=10m - -# Source-Label synchronisierter GLPI-KBs. -# Muss in KNOWLEDGE_ALLOWED_SOURCES stehen. +# source-Wert importierter GLPI-KB-Artikel. GLPI_KB_SOURCE=glpi-kb - # true: -# freigegebene GLPI-KB-Artikel können Auto-Replies auslösen. +# GLPI-KB-Artikel können grundsätzlich Auto-Replies auslösen. # -# false: -# GLPI-KB wird nur für Recherche, RAG und Klassifizierung verwendet. +# Zusätzlich gelten weiterhin alle anderen Policy-Gates. GLPI_KB_AUTO_REPLY=true - -# Whitelist der GLPI-KNOWLEDGE-BASE-Kategorie-IDs. +# Whitelist der GLPI KNOWLEDGE-BASE-Kategorie-IDs. # # WICHTIG: -# Das sind NICHT die GLPI-ITIL-/Ticketkategorie-IDs. +# Dies sind NICHT die ITIL-/Ticketkategorie-IDs. # # Mehrere Werte: -# 1,4,7 +# 1,2,7 GLPI_KB_AUTO_REPLY_CATEGORY_IDS=1 - - ############################################################################### -# 14. HUMAN-IN-THE-LOOP / LERNEN +# 20. HUMAN-IN-THE-LOOP / KATEGORIE-LERNEN ############################################################################### - -# Menschlich bestätigte/korrigierte Kategorieentscheidungen als Lernbeispiele -# verwenden. +# Menschlich bestätigte/korrigierte Entscheidungen als Lernbeispiele verwenden. # -# Die KI lernt NICHT automatisch aus ihren eigenen Entscheidungen. +# Der Agent lernt NICHT automatisch aus seinen eigenen unbestätigten +# Entscheidungen. LEARNING_ENABLED=true - -# Maximale Anzahl gespeicherter Lernbeispiele. +# Maximale Anzahl gespeicherter Beispiele. LEARNING_MAX_EXAMPLES=500 - -# Maximale Anzahl Beispiele je Kategorie, die in einen KI-Prompt übernommen werden. +# Maximale Beispiele pro Kategorie im Prompt. LEARNING_EXAMPLES_PER_CATEGORY=5 - - ############################################################################### -# 15. KOMMUNIKATION MIT ENDNUTZERN +# 21. KOMMUNIKATIONSPOLICY ############################################################################### - -# Auto-Reply-KBs müssen zu Sprache und Kommunikationsstil passen. +# Erwartete Sprache von Auto-Reply-KBs. COMMUNICATION_LANGUAGE=de-DE +# Erwarteter Kommunikationsstil. COMMUNICATION_STYLE=formal - -# Wird vor den freigegebenen KB-Inhalt gesetzt. +# Wird vor die Knowledge-Antwort gesetzt. COMMUNICATION_SALUTATION=Guten Tag, - -# Abschluss der Antwort. +# Abschluss. COMMUNICATION_CLOSING=Mit freundlichen Grüßen COMMUNICATION_SIGNATURE=IT-Service - - ############################################################################### -# 16. EXTERNER BETRIEBSKONTEXT +# 22. OPERATIONAL CONTEXT - GLOBAL ############################################################################### - -# Globaler Schalter für: +# Globaler Schalter für zusätzliche Betriebsinformationen: # - Changes # - Major Incidents -# - Benutzer/Geräte +# - Requester-Geräte # - Uptime Kuma CONTEXT_ENABLED=true - -# Gemeinsames Timeout für Kontextabfragen. +# Timeout für Kontextabfragen. CONTEXT_TIMEOUT=12s - -# Minimale deterministische Relevanz zwischen Ticket und Incident/Outage. +# Mindestscore, ab dem Incident/Outage als für das Ticket relevant gilt. CONTEXT_RELEVANCE_MIN_SCORE=0.20 - -# Wenn eine aktivierte Kontextquelle fehlschlägt: -# true = Auto-Reply sicherheitshalber blockieren. +# true: +# Fehler einer aktivierten Kontextquelle blockieren Auto-Reply. +# +# Fail-closed und für Produktion empfohlen. CONTEXT_BLOCK_AUTO_REPLY_ON_ERRORS=true - -# Bei relevantem Major Incident / zentraler Störung: -# true = individuelle Standard-Auto-Replies blockieren. +# true: +# relevante zentrale Störung blockiert individuelle Standardantwort. CONTEXT_BLOCK_AUTO_REPLY_ON_INCIDENT=true - - ############################################################################### -# 17. GLPI CHANGE CALENDAR +# 23. GLPI CHANGE CALENDAR ############################################################################### - CHANGE_CALENDAR_ENABLED=true - -# High-Level-API-Route. -# Wird gegen /api.php/doc.json geprüft. +# API-Route. GLPI_CHANGE_PATH=/Assistance/Change - -# Optionaler GLPI-Filter. +# Optionaler serverseitiger GLPI-Filter. GLPI_CHANGE_FILTER= - -# Maximal geladene Changes. +# Maximale Anzahl geladener Changes. GLPI_CHANGE_LIMIT=100 - -# Vergangener Zeitraum, der für Tickets berücksichtigt wird. +# Betrachteter Zeitraum in der Vergangenheit. CHANGE_LOOKBACK=72h - -# Zukünftiger Zeitraum. +# Betrachteter Zeitraum in der Zukunft. CHANGE_LOOKAHEAD=24h - - ############################################################################### -# 18. MAJOR INCIDENTS +# 24. MAJOR INCIDENTS ############################################################################### - -# false = Funktion vollständig deaktiviert. +# Major Incidents über GLPI-Tickets ermitteln. +# +# Erst aktivieren, wenn GLPI_MAJOR_INCIDENT_FILTER getestet wurde. MAJOR_INCIDENTS_ENABLED=false - -# Muss bei aktiviertem Major-Incident-Modus bewusst gesetzt werden. -# -# Beispiel hängt von der eigenen GLPI-Struktur ab. -# Gegen /api.php/doc bzw. die GLPI-Filtersemantik prüfen. +# Expliziter Filter für Tickets, die als Major Incident gelten. GLPI_MAJOR_INCIDENT_FILTER= - GLPI_MAJOR_INCIDENT_LIMIT=20 - - ############################################################################### -# 19. BENUTZER -> GERÄT / ASSET-KONTEXT +# 25. REQUESTER -> GERÄT / ASSET CONTEXT ############################################################################### - -# Zusätzlich zu direkt am Ticket verknüpften Assets die dem Requester -# zugeordneten Geräte suchen. +# Zusätzlich zu direkt verknüpften Ticket-Assets Geräte des Requesters suchen. USER_DEVICE_CONTEXT_ENABLED=true - -# Eine oder mehrere Asset-Routen. -# Mehrere Werte ggf. komma-separiert, sofern vom Agent unterstützt. +# Asset-Routen. GLPI_USER_DEVICE_PATHS=/Assets/Computer - -# {{user_id}} wird durch die jeweilige GLPI-Requester-ID ersetzt. -# -# Nicht durch eine feste Benutzer-ID ersetzen. +# {{user_id}} wird vom Agenten ersetzt. GLPI_USER_DEVICE_FILTER_TEMPLATE=user.id=={{user_id}} - +# Maximale Anzahl Geräte je Suche. GLPI_USER_DEVICE_LIMIT=20 - - ############################################################################### -# 20. UPTIME KUMA +# 26. UPTIME KUMA ############################################################################### - -# false = keine Uptime-Kuma-Abfragen. +# Globaler Schalter für Uptime-Kuma-Kontext. UPTIME_KUMA_ENABLED=false - UPTIME_KUMA_URL=https://uptime.example.com - -# Mögliche Modi: +# Mögliche Werte: # -# metrics -# Authentifizierter Prometheus-/metrics-Endpunkt. -# Für interne Systeme empfohlen. -# -# status_page -# Veröffentlichte Uptime-Kuma-Statusseiten. +# metrics +# authentifizierte Prometheus-Metrics. # +# status_page +# öffentliche/publizierte Statusseiten. UPTIME_KUMA_MODE=metrics - -# Nur für metrics erforderlich. -# Bei deaktiviertem Uptime Kuma am besten leer lassen. +# Nur in metrics erforderlich. UPTIME_KUMA_API_KEY= - -# Nur für status_page erforderlich. -# Mehrere Slugs komma-separiert: -# it-services,network,applications +# Nur in status_page erforderlich. +# +# Mehrere Slugs: +# it-services,network,applications UPTIME_KUMA_STATUS_PAGES=it-services - UPTIME_KUMA_TIMEOUT=10s - -# Maximal an den Agenten übergebene aktuelle Probleme. +# Maximale Anzahl gleichzeitig berücksichtigter Probleme. UPTIME_KUMA_MAX_ISSUES=20 - -# Maintenance-Zustände ebenfalls als Kontext berücksichtigen. +# Maintenance ebenfalls als Kontext berücksichtigen. UPTIME_KUMA_INCLUDE_MAINTENANCE=true - - ############################################################################### -# 21. POLICY-GATES +# 27. POLICY-GATES ############################################################################### - -# Automatische Kategorisierung grundsätzlich zulassen. +# Automatische Kategorisierung zulassen. AUTO_CATEGORY=true - -# Automatische Endnutzerantworten grundsätzlich zulassen. +# Automatische Antworten grundsätzlich zulassen. # -# DRY_RUN=true verhindert trotzdem das Schreiben. +# DRY_RUN=true verhindert trotzdem das tatsächliche Schreiben nach GLPI. AUTO_REPLY=true - -# Minimale KI-Confidence für Kategorieempfehlungen. +# Mindestconfidence der KI für Kategorieänderungen. CATEGORY_CONFIDENCE=0.70 - -# Minimale KI-Confidence für Lösungsvorschläge. +# Mindestconfidence der KI für Antwortauswahl. +# +# Dies allein reicht NICHT für Auto-Reply. +# Zusätzlich gelten unter anderem: # -# Zusätzlich gelten u. a.: # - Knowledge-Evidenz +# - Retrieval-Regeln # - Source Policy -# - Auto-Reply-Freigabe der KB -# - kein vorhandenes Followup +# - KB auto_reply +# - Kommunikationspolicy +# - Followup-Prüfung # - Kontext-/Incident-Regeln +# - zweite Followup-Prüfung unmittelbar vor dem Schreiben REPLY_CONFIDENCE=0.70 - - ############################################################################### -# 22. WORKER / QUEUE +# 28. WORKER / QUEUE ############################################################################### - -# Maximale Anzahl wartender Ticketjobs. +# Maximale Anzahl wartender Jobs. QUEUE_SIZE=256 - # Parallele Ticket-Worker. # -# Darf größer als OLLAMA_MAX_CONCURRENT sein: -# Ollama wird separat durch seine eigene Parallelitätsgrenze geschützt. +# Darf größer als OLLAMA_MAX_CONCURRENT sein. +# Ollama wird separat begrenzt. WORKERS=2 \ No newline at end of file