feat(eu-umbau): staan-Recherche-Schleife und Doppelspur (Phase 2)
Im EU-Modus laeuft die Recherche jetzt europaeisch: agents/eu_researcher.py steuert eine Schleife aus Bedrock-Planung (Opus, EU-Profile) und staan-Suchen (services/staan_client.py, Suche + Volltexte via full_content=markdown, Pflicht-Domain-Ausschlussliste je Anfrage). Bildet die 4-Phasen-Tiefenrecherche nach und liefert exakt das JSON der bisherigen CLI-WebSearch, Parsing und Filter in researcher.search bleiben unveraendert. Anti-Halluzination: nur URLs aus echten staan-Treffern werden akzeptiert; published_at nur wenn aus Inhalt oder URL ableitbar (staan liefert keine Daten). Doppelspur im Orchestrator: Lane-Schluessel ist jetzt (Organisation, Backend), Aufloesung zentral in _resolve_ai_backend (Lage > Org-Setting > ENV). CLI- und EU-Lauf derselben Organisation laufen gleichzeitig, gleiche Backends seriell. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -66,6 +66,26 @@ BEDROCK_PRICING = {
|
||||
BEDROCK_CACHE_WRITE_FACTOR = 1.25
|
||||
BEDROCK_CACHE_READ_FACTOR = 0.10
|
||||
|
||||
# --- staan.ai Such-API (EU/DSGVO-Umbau, Phase 2) -------------------------------
|
||||
# Europäischer Suchindex (European Search Perspective). Ersetzt im EU-Modellweg
|
||||
# die eingebaute WebSearch/WebFetch des Claude CLI. Client in
|
||||
# services/staan_client.py, Recherche-Schleife in agents/eu_researcher.py.
|
||||
STAAN_API_KEY = os.environ.get("STAAN_API_KEY", "")
|
||||
STAAN_BASE_URL = os.environ.get("STAAN_BASE_URL", "https://api.staan.ai/v2")
|
||||
# 2 Euro je 1000 Anfragen, als USD-Näherung für die interne Kostenkontrolle.
|
||||
STAAN_COST_PER_QUERY_USD = float(os.environ.get("STAAN_COST_PER_QUERY_USD", "0.0023"))
|
||||
# Pflicht-Ausschlussliste je Suchanfrage (Befund aus Phase 0, hebt die
|
||||
# Trefferqualität deutlich). staan erlaubt maximal 10 Domains je Anfrage,
|
||||
# Nutzer-Ausschlüsse füllen die restlichen Plätze auf.
|
||||
STAAN_EXCLUDE_DOMAINS = [
|
||||
"youtube.com", "wikipedia.org", "facebook.com", "reddit.com",
|
||||
"pinterest.com", "tiktok.com", "instagram.com", "x.com",
|
||||
]
|
||||
# Rundenbegrenzung der EU-Recherche-Schleife (Planungsaufrufe an das Modell,
|
||||
# ohne die Abschlussrunde). research bildet die 4-Phasen-Tiefenrecherche nach.
|
||||
EU_RESEARCH_MAX_ROUNDS_ADHOC = int(os.environ.get("EU_RESEARCH_MAX_ROUNDS_ADHOC", "3"))
|
||||
EU_RESEARCH_MAX_ROUNDS_RESEARCH = int(os.environ.get("EU_RESEARCH_MAX_ROUNDS_RESEARCH", "5"))
|
||||
|
||||
# --- 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