feat: Adhoc-Recherche bekommt bestehende Artikel als Kontext
- RESEARCH_PROMPT_TEMPLATE: {existing_context} Platzhalter eingefügt
- search(): Baut bei Adhoc-Folge-Refreshes Kontextblock mit bis zu 30 bekannten Headlines auf
- orchestrator: Übergibt bestehende Artikel jetzt für ALLE Incident-Typen, nicht nur Research
Effekt: Bei Adhoc-Auto-Refreshes findet Claude WebSearch gezielt neue Quellen statt immer dieselben Mainstream-Treffer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -624,9 +624,9 @@ class AgentOrchestrator:
|
|||||||
async def _web_search_pipeline():
|
async def _web_search_pipeline():
|
||||||
"""Claude WebSearch-Recherche."""
|
"""Claude WebSearch-Recherche."""
|
||||||
researcher = ResearcherAgent()
|
researcher = ResearcherAgent()
|
||||||
# Bei Research: bestehende Artikel als Kontext mitgeben
|
# Bestehende Artikel als Kontext mitgeben (Research + Adhoc)
|
||||||
existing_for_context = None
|
existing_for_context = None
|
||||||
if incident_type == "research" and existing_db_articles_full:
|
if existing_db_articles_full:
|
||||||
existing_for_context = [
|
existing_for_context = [
|
||||||
{"source": row["source"] if "source" in row.keys() else "",
|
{"source": row["source"] if "source" in row.keys() else "",
|
||||||
"headline": row["headline"],
|
"headline": row["headline"],
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ WICHTIG: Verwende IMMER echte UTF-8-Umlaute (ä, ö, ü, ß) — NIEMALS Umschre
|
|||||||
AUFTRAG: Suche nach aktuellen Informationen zu folgendem Vorfall:
|
AUFTRAG: Suche nach aktuellen Informationen zu folgendem Vorfall:
|
||||||
Titel: {title}
|
Titel: {title}
|
||||||
Kontext: {description}
|
Kontext: {description}
|
||||||
|
{existing_context}
|
||||||
REGELN:
|
REGELN:
|
||||||
- Suche nur bei seriösen Nachrichtenquellen (Nachrichtenagenturen, Qualitätszeitungen, öffentlich-rechtliche Medien, Behörden)
|
- Suche nur bei seriösen Nachrichtenquellen (Nachrichtenagenturen, Qualitätszeitungen, öffentlich-rechtliche Medien, Behörden)
|
||||||
- KEIN Social Media (Twitter/X, Facebook, Instagram, TikTok, Reddit)
|
- KEIN Social Media (Twitter/X, Facebook, Instagram, TikTok, Reddit)
|
||||||
@@ -331,9 +331,21 @@ class ResearcherAgent:
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
lang_instruction = LANG_INTERNATIONAL if international else LANG_GERMAN_ONLY
|
lang_instruction = LANG_INTERNATIONAL if international else LANG_GERMAN_ONLY
|
||||||
|
# Bestehende Artikel als Kontext: bei Folge-Refreshes findet Claude andere Quellen
|
||||||
|
existing_context = ""
|
||||||
|
if existing_articles:
|
||||||
|
known_lines = []
|
||||||
|
for art in existing_articles[:30]: # Max 30 bei adhoc (kompakter als research)
|
||||||
|
source = art.get("source", "Unbekannt")
|
||||||
|
headline = art.get("headline", "")
|
||||||
|
known_lines.append(f"- {source}: {headline}")
|
||||||
|
existing_context = (
|
||||||
|
"BEREITS BEKANNTE QUELLEN (aus RSS-Feeds und vorherigen Recherchen) — suche ANDERE Blickwinkel und Quellen:\n"
|
||||||
|
+ "\n".join(known_lines) + "\n"
|
||||||
|
)
|
||||||
prompt = RESEARCH_PROMPT_TEMPLATE.format(
|
prompt = RESEARCH_PROMPT_TEMPLATE.format(
|
||||||
title=title, description=description, language_instruction=lang_instruction,
|
title=title, description=description, language_instruction=lang_instruction,
|
||||||
output_language=OUTPUT_LANGUAGE,
|
output_language=OUTPUT_LANGUAGE, existing_context=existing_context,
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren