feat(eu-umbau): Bedrock als zweiter KI-Modellweg (Phase 1)
Zweiter Modellweg ueber AWS Bedrock (EU-Inferenzprofile Frankfurt), umschaltbar je Lage (incidents.ai_backend) > Organisation (org_setting ai_backend) > global (ENV AI_BACKEND, Default cli). Neue Datei agents/bedrock_client.py (Converse API, nur eu.-Profile, Token-zu-USD-Umrechnung ueber BEDROCK_PRICING, gleiche Fehlerkategorien wie das CLI). Routing zentral in call_claude; Aufrufe mit WebSearch/WebFetch laufen bis zur staan-Schleife (Phase 2) weiter uebers CLI. Migration: Spalte incidents.ai_backend. requirements: boto3. Hinweis Promote: boto3 muss im Live-venv installiert werden. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -34,6 +34,38 @@ CLAUDE_MODEL_FAST = "claude-haiku-4-5-20251001" # Für einfache Aufgaben (Feed-
|
||||
CLAUDE_MODEL_MEDIUM = "claude-sonnet-4-6" # Für qualitätskritische Aufgaben (Netzwerkanalyse)
|
||||
CLAUDE_MODEL_STANDARD = "claude-opus-4-7" # Standard-Opus für Recherche, Analyse, Faktencheck
|
||||
|
||||
# --- KI-Backend (EU/DSGVO-Umbau, Phase 1) -------------------------------------
|
||||
# 'cli' = heutiger Weg über das Claude CLI (Anthropic, Abo-Konto).
|
||||
# 'bedrock' = AWS Bedrock über EU-Inferenzprofile (Frankfurt). Verarbeitung
|
||||
# bleibt in Europa. Phase 1 bedient nur werkzeuglose Aufrufe,
|
||||
# WebSearch-Aufrufe laufen weiter übers CLI, bis die
|
||||
# staan-Recherche-Schleife (Phase 2) fertig ist.
|
||||
# Auflösung je Refresh in agents/orchestrator.py. Lage (incidents.ai_backend)
|
||||
# gewinnt vor Org-Setting 'ai_backend', das vor diesem globalen Default.
|
||||
AI_BACKEND = os.environ.get("AI_BACKEND", "cli").strip().lower()
|
||||
BEDROCK_REGION = os.environ.get("BEDROCK_REGION") or os.environ.get("AWS_REGION", "eu-central-1")
|
||||
# Obergrenze je Bedrock-Antwort. In Phase 1 laufen nur JSON-Aufgaben über
|
||||
# Bedrock (Feed-Selektion, Topic-Filter, Geoparsing, Übersetzung, QC),
|
||||
# dafür reichen 16k gut aus. Große Lagebilder bleiben in Phase 1 beim CLI.
|
||||
BEDROCK_MAX_TOKENS = int(os.environ.get("BEDROCK_MAX_TOKENS", "16000"))
|
||||
# Abbildung der CLI-Modellnamen auf EU-Inferenzprofile. NUR eu.-Profile
|
||||
# eintragen, agents/bedrock_client.py verweigert alles andere.
|
||||
BEDROCK_MODEL_MAP = {
|
||||
CLAUDE_MODEL_FAST: "eu.anthropic.claude-haiku-4-5-20251001-v1:0",
|
||||
CLAUDE_MODEL_MEDIUM: "eu.anthropic.claude-sonnet-4-6",
|
||||
CLAUDE_MODEL_STANDARD: "eu.anthropic.claude-opus-4-7",
|
||||
}
|
||||
# Preise in USD je 1 Mio Token (Stand 29.07.2026, Anthropic-Listenpreise,
|
||||
# Bedrock rechnet für Anthropic-Modelle zu denselben Sätzen ab). Nach der
|
||||
# ersten AWS-Rechnung gegen die tatsächlichen Beträge verifizieren.
|
||||
BEDROCK_PRICING = {
|
||||
CLAUDE_MODEL_FAST: {"input": 1.00, "output": 5.00},
|
||||
CLAUDE_MODEL_MEDIUM: {"input": 3.00, "output": 15.00},
|
||||
CLAUDE_MODEL_STANDARD: {"input": 5.00, "output": 25.00},
|
||||
}
|
||||
BEDROCK_CACHE_WRITE_FACTOR = 1.25
|
||||
BEDROCK_CACHE_READ_FACTOR = 0.10
|
||||
|
||||
# --- Verbrauchssaetze (Credits je Aktion) -------------------------------------
|
||||
# Beschlossen 2026-07-23, der Verbrauchsrechner im Verwaltungsportal nutzt
|
||||
# dieselben Werte: Live-Lauf 45, Recherche je Durchlauf 40 (das Anlegen faehrt
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren