Löst die RSS-Beschränkung: Feed-Einträge liefern nur eine kurze
Teaser-Beschreibung, nie den vollen Artikeltext.
- astra/articles.py: lädt eine URL, extrahiert den reinen Fließtext via
trafilatura (ohne Navigation/Werbung/Boilerplate). Live gegen einen
echten RP-ONLINE-Artikel verifiziert (1682 Zeichen sauberer Text).
- read_article-Tool in tools.py, gleiches tool_start/tool_result/
tool_error-Muster wie die anderen beiden Tools. Beschreibung nennt
explizit den erwarteten Anwendungsfall (Nachfrage zu einer schon
genannten Schlagzeile) — konsequent nach der zuletzt beschlossenen
Regel, Tool-Verhalten nur in der FunctionSchema, nie im SYSTEM_PROMPT.
Gemessen: mit drei Tools sinkt read_news weiter auf ca. 15-20%
(vorher mit zwei Tools 20-50%). read_article selbst liegt bei einer
konkreten Nachfrage zu einer schon im Kontext stehenden Schlagzeile
bei ~65% (2/3 in einem Live-Lauf gegen echtes Ollama, echter
Artikeltext erfolgreich extrahiert; der eine Fehlschlag gab ehrlich
zu, den Volltext nicht zu kennen, statt zu erfinden).
NICHT gepusht — auf Anweisung bis auf Weiteres nur lokal.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LVgSHNHdRx3UNTBodFmhRA
Neues Werkzeug read_news, gleiche Trennung wie ComfyUI:
- astra/feeds.py: kuratierte deutsche Feed-Liste nach Thema (tech,
nachrichten, wirtschaft) — 11 Feeds, alle live gegen die echten
Endpunkte verifiziert (heise, Golem, t3n, netzpolitik.org,
tagesschau.de, Zeit Online, Spiegel, SZ, Handelsblatt, WiWo,
manager magazin).
- astra/rss.py: async Feed-Client (feedparser), holt Feeds eines
Themas parallel ab, überspringt einzelne nicht erreichbare Feeds
statt komplett zu scheitern.
- astra/tools.py: read_news als natives Ollama-Tool, gleiches
tool_start/tool_result/tool_error-UI-Muster wie generate_image.
Mit zwei Tools gleichzeitig verfügbar sank die Zuverlässigkeit des
lokalen 9.7B-Modells spürbar (0/8 Tool-Aufrufe mit dem ursprünglichen,
langen System-Prompt) — reproduzierbar isoliert über direkte
Ollama-Requests. Ursache: Instruction-Dilution bei mehreren
Tool-Regeln in einem langen Prompt. Behoben durch gestrafften,
Tool-Regeln-zuerst-Prompt und Temperatur 0.6→0.4: Bildgenerierung
bleibt ~100% zuverlässig, Nachrichten-Tool bei ~60–75% je nach
Formulierung. Per echtem Browser-Test mit synthetisierter Sprache
verifiziert: echte aktuelle Schlagzeilen erscheinen im Transkript.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LVgSHNHdRx3UNTBodFmhRA
Zwei neue, sauber getrennte Fähigkeiten, jede in ihrem eigenen Modul:
- astra/comfyui.py: async HTTP-Client für einen lokalen ComfyUI-Server
(z-image-turbo-Workflow), kennt nichts von der Pipeline.
- astra/documents.py: PDF-Textextraktion via pypdf, keine Netzwerkzugriffe.
- astra/tools.py: verdrahtet generate_image als natives Ollama-Tool-Call —
Qwen 3.5 unterstützt Tools und Vision bereits nativ laut `ollama show`.
Dafür wurde astra/services.py so erweitert, dass NativeOllamaService
Ollamas native tool_calls im Streaming-Response erkennt und als
ChatCompletionChunk-Deltas an Pipecats bereits vorhandene, generische
Function-Calling-Maschinerie (_process_context/run_function_calls)
weiterreicht — die musste dafür nicht angefasst werden. trim_messages in
core.py bewahrt jetzt Tool-Roundtrips und Bild-Anhänge vollständig statt
sie auf role/content zu reduzieren.
Neuer Upload-Button im UI (Bild oder PDF, während eines laufenden
Gesprächs): PDFs gehen als Text, Bilder als Base64 über Qwens Vision in
den Gesprächskontext ein. Generierte Bilder werden über /api/media/<id>
ausgeliefert und per Datenkanal im Transkript angezeigt.
Kompletter Function-Calling-Roundtrip end-to-end gegen echtes Ollama und
echtes ComfyUI verifiziert (Modell ruft generate_image korrekt auf,
Bild wird erzeugt und im media_store abgelegt).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LVgSHNHdRx3UNTBodFmhRA
Lokaler deutscher Sprachagent für Apple Silicon: Pipecat-Pipeline mit
Nemotron-ASR (MLX), Qwen über natives Ollama /api/chat, und Pocket TTS.
Loopback-only WebRTC-Server mit Origin/Host-Härtung.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LVgSHNHdRx3UNTBodFmhRA