All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 4s
3.0 KiB
3.0 KiB
| doc_type | audience | scope | status | version | context |
|---|---|---|---|---|---|
| technical_reference | developer, architect | backend, chat, ollama, traffic_control | active | 2.6 | Technische Implementierung des FastAPI-Routers, der Decision Engine und des Traffic Control Systems. |
Chat Backend & Traffic Control
1. Hybrid Router (Decision Engine)
Der zentrale Einstiegspunkt für jede Chatanfrage ist der Hybrid Router (app/routers/chat.py). Er entscheidet dynamisch, welche Strategie gewählt wird, basierend auf dem User-Input.
1.1 Intent-Erkennung (Logik)
Der Router prüft den Input in drei Stufen (Wasserfall-Prinzip):
- Question Detection (Regelbasiert):
- Prüfung auf Vorhandensein von
?oder W-Wörtern (Wer, Wie, Was, Soll ich). - Wenn positiv: RAG Modus (Interview wird blockiert).
- Prüfung auf Vorhandensein von
- Keyword Scan (Fast Path):
- Lädt
types.yaml(Objekte, z.B. "Projekt") unddecision_engine.yaml(Handlungen, z.B. "neu"). - Wenn Match (z.B. "Projekt" + "neu"): INTERVIEW Modus.
- Lädt
- LLM Fallback (Slow Path):
- Wenn unklar: Anfrage an LLM zur Klassifizierung.
1.2 RAG Flow (Technisch)
Wenn der Intent FACT oder DECISION ist, wird folgender Flow ausgeführt:
- Pre-Processing: Query Rewriting (optional).
- Context Enrichment:
- Abruf via
retriever.py(Hybrid Search). - Injection von Metadaten (
[TYPE],[SCORE]) in den Prompt.
- Abruf via
- Prompt Construction: Assembly aus System-Prompt (Persona) + Context + Query.
- Streaming: LLM-Antwort wird via SSE (Server-Sent Events) an den Client gestreamt.
- Post-Processing: Anhängen des
ExplanationLayers (JSON-Breakdown) an das Ende des Streams.
2. Traffic Control (WP-15)
Das Traffic Control System (app/core/llm_service.py) schützt das System vor Überlastung, wenn rechenintensive Hintergrundprozesse (Smart Edge Import) und Latenz-kritische Chat-Anfragen gleichzeitig laufen.
2.1 Prioritäts-Semaphor
Jeder LLM-Request muss ein priority-Flag setzen.
Prioritäten-Levels:
| Priority | Verwendung | Limitierung |
|---|---|---|
| realtime | Chat-Anfragen | Keine (Hardware-Limit) |
| background | Smart Edge Allocation, Drafts | MINDNET_LLM_BACKGROUND_LIMIT |
Funktionsweise:
- Hintergrund-Tasks nutzen
asyncio.Semaphore. - Wenn das Limit (Default: 2) erreicht ist, warten weitere Import-Tasks.
- Chat-Tasks umgehen die Semaphore und werden sofort bearbeitet.
2.2 Timeout-Konfiguration
Deadlocks werden durch strikte Timeouts verhindert, die in der .env definiert sind.
- Chat:
MINDNET_LLM_TIMEOUT(Default: 300s). - Frontend:
MINDNET_API_TIMEOUT(Default: 300s).
3. Feedback Traceability
Unterstützt das geplante Self-Tuning (WP08).
- Query ID: Generiert bei jedem
/queryCall eineUUIDv4. - Logging: Speichert einen Snapshot in
data/logs/query_snapshot.jsonl(Input + Retrieved Context). - Feedback: Der
/feedbackEndpoint verknüpft das User-Rating (1-5) mit derquery_id.