WebSearch: eingetragene Web-Quellen via Haiku vorselektieren
Bisher hatten Quellen vom Typ web_source keine praktische Wirkung auf die Recherche - sie lagen nur als Marker in der DB. Jetzt werden sie aktiv in den Recherche-Prompt eingebunden. Ablauf: 1. Vor dem Hauptaufruf an Opus prüft ein günstiger Haiku-Call alle aktiven Web-Quellen des Tenants (plus globale) und wählt die thematisch passenden aus. Leere Selektion ist ausdrücklich erlaubt. 2. Die ausgewählten Domains werden dem Recherche-Prompt als "EINGETRAGENE WEB-QUELLEN" Block beigegeben mit der Empfehlung, gezielt mit "site:domain query" zu suchen, falls thematisch passend. 3. site: ist Empfehlung, kein Zwang - Claude bleibt flexibel und ergänzt seine sonstige Recherche. - source_rules.get_feeds_with_metadata: SELECT um notes-Feld erweitert, damit der Selektor besseren Kontext zur Quelle hat. - ResearcherAgent.select_relevant_web_sources: neuer Helper analog zu select_relevant_feeds, mit Skip-Optimierung wenn ≤3 Quellen. - WEB_SOURCE_SELECTION_PROMPT: explizite Regel "lieber leer als pauschal alle", verhindert Token-Verschwendung. - ResearcherAgent.search: neuer Parameter preferred_sources, beide Templates (RESEARCH + DEEP_RESEARCH) bekommen optionalen preferred_sources_block. - Orchestrator._web_search_pipeline: Vorselektion vor researcher.search, Token-Usage in usage_acc, Logging der gewählten Domains. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -844,7 +844,7 @@ class AgentOrchestrator:
|
||||
return articles, feed_usage
|
||||
|
||||
async def _web_search_pipeline():
|
||||
"""Claude WebSearch-Recherche."""
|
||||
"""Claude WebSearch-Recherche mit Vorselektion eingetragener Web-Quellen."""
|
||||
researcher = ResearcherAgent()
|
||||
# Bestehende Artikel als Kontext mitgeben (Research + Adhoc)
|
||||
existing_for_context = None
|
||||
@@ -855,13 +855,31 @@ class AgentOrchestrator:
|
||||
"source_url": row["source_url"]}
|
||||
for row in existing_db_articles_full
|
||||
]
|
||||
|
||||
# Web-Quellen vorselektieren (Haiku) — nur thematisch passende werden Claude im Prompt empfohlen
|
||||
preferred_sources = []
|
||||
try:
|
||||
from source_rules import get_feeds_with_metadata
|
||||
web_sources = await get_feeds_with_metadata(tenant_id=tenant_id, source_type="web_source")
|
||||
if web_sources:
|
||||
preferred_sources, web_sel_usage = await researcher.select_relevant_web_sources(
|
||||
title, description, web_sources,
|
||||
)
|
||||
if web_sel_usage:
|
||||
usage_acc.add(web_sel_usage)
|
||||
except Exception as e:
|
||||
logger.warning(f"Web-Source-Vorselektion fehlgeschlagen (Pipeline laeuft weiter): {e}")
|
||||
preferred_sources = []
|
||||
|
||||
results, usage, parse_failed = await researcher.search(
|
||||
title, description, incident_type,
|
||||
international=international, user_id=user_id,
|
||||
existing_articles=existing_for_context,
|
||||
preferred_sources=preferred_sources,
|
||||
)
|
||||
logger.info(
|
||||
f"Claude-Recherche: {len(results)} Ergebnisse"
|
||||
+ (f" (mit {len(preferred_sources)} Web-Quellen-Hinweis)" if preferred_sources else "")
|
||||
+ (" (Parser fehlgeschlagen)" if parse_failed else "")
|
||||
)
|
||||
return results, usage, parse_failed
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren