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:
claude-dev
2026-07-30 19:48:52 +00:00
Ursprung 59cd97adac
Commit fc33cccd44
7 geänderte Dateien mit 331 neuen und 3 gelöschten Zeilen

Datei anzeigen

@@ -26,6 +26,18 @@ backend:
scheduler: APScheduler (PDF-Ingest 1min, Auto-Refresh 1min, Cleanup 1h, Health-Check taeglich 04:00, Telegram-Status taeglich 04:30)
websocket: FastAPI native (Echtzeit-Updates an Clients)
ki: Claude CLI als Subprocess (WebSearch + WebFetch Tools)
ki_backend_eu: |
EU-Umbau Phase 1 (seit 2026-07-29): zweiter Modellweg ueber AWS Bedrock
(EU-Inferenzprofile Frankfurt, agents/bedrock_client.py). Umschaltbar je
Lage (incidents.ai_backend) > Organisation (org_setting 'ai_backend') >
global (ENV AI_BACKEND, Default 'cli'). Aufloesung je Refresh im
Orchestrator via ContextVar _ai_backend_var. Phase 1 bedient nur
werkzeuglose Aufrufe (tools=None); Aufrufe mit WebSearch/WebFetch laufen
weiter uebers CLI, bis die staan-Recherche-Schleife (Phase 2) fertig ist.
Kosten werden aus Token x BEDROCK_PRICING (config.py) berechnet, damit
das Credits-System unveraendert funktioniert. AWS-Zugang + STAAN_API_KEY
liegen in der Staging-.env. boto3 muss im venv installiert sein (beim
Promote nach Live auch dort nachziehen!).
ki_modelle:
schnell: CLAUDE_MODEL_FAST (Haiku) — Feed-Selektion, Topic-Filter, Geoparsing, Uebersetzung, Chat, QC
mittel: CLAUDE_MODEL_MEDIUM (Sonnet) — nur Netzwerkanalyse (entity_extractor hat aktuell keinen Aufrufer in der App)
@@ -75,7 +87,8 @@ src/:
geoparsing.py: "Haiku-basierte Ortsextraktion, Geocoding offline via geonamescache"
entity_extractor.py: "Netzwerkanalyse (Sonnet). ACHTUNG: aktuell ohne Aufrufer in der App, nur regenerate_relations.py im Repo-Root nutzt es"
translator.py: "Haiku-Uebersetzung in Batches a 5 (groessere Batches rissen den JSON-Output ab)"
claude_client.py: "Shared Claude CLI Client, Usage-Tracking (Token, Kosten), Rate-Limit-Erkennung, Cancel via ContextVar"
claude_client.py: "Shared Claude CLI Client, Usage-Tracking (Token, Kosten), Rate-Limit-Erkennung, Cancel via ContextVar. Routet je nach _ai_backend_var werkzeuglose Aufrufe zu bedrock_client"
bedrock_client.py: "EU-Modellweg ueber AWS Bedrock Converse (nur eu.-Inferenzprofile, Token-zu-USD-Umrechnung ueber BEDROCK_PRICING, gleiche Fehlerkategorien wie das CLI). EU-Umbau Phase 1"
feeds/:
rss_parser.py: "RSS-Feed-Parsing (feedparser + httpx), adaptive Keyword-Schwelle, Frische-Bonus, Domain-Cap"
@@ -315,6 +328,8 @@ staging:
STAGING_MODE: 1 (unlimited_budget, kein Credits-Hard-Stop)
TRANSLATOR_ENABLED: false
TELEGRAM_SESSION_PATH: ~/.telegram-staging/ (eigene Session, dort ist NIEMAND eingeloggt - Telegram-Recherche auf Staging liefert nichts, die Status-Karte im Portal zeigt das ehrlich an)
AI_BACKEND: "(optional) 'cli' oder 'bedrock', globaler Default fuer den EU-Modellweg. Ohne Eintrag gilt 'cli'"
AWS_ACCESS_KEY_ID_usw: "AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION=eu-central-1 und STAAN_API_KEY liegen seit 2026-07-29 in der Staging-.env (IAM-Benutzer nur fuer Bedrock, staan-Suchschluessel fuer Phase 2)"
auth_service:
pfad: /opt/aegis-staging-auth