Chat atelier : evenement SSE sources + affichage des pages utilisees

Le Brain emet un evenement sources (source_id, page, score des passages
retenus) AVANT le premier token ; le Core le relaie tel quel (JSON brut) ;
l UI affiche une ligne discrete sous la reponse (ex: 12, 47, 103),
prefixee du nom de fichier si plusieurs sources. Transparence pour le MJ
et diagnostic immediat quand le RAG repond a cote.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 15:45:56 +02:00
parent 0e4820a2f8
commit 3d1cf6e495
10 changed files with 102 additions and 10 deletions

View File

@@ -85,9 +85,14 @@ async def chat_notebook_stream(
async def event_stream() -> AsyncIterator[str]:
try:
async for token in use_case.stream(body.source_ids, messages, context=body.context, top_k=top_k):
if token:
yield sse_event("token", {"token": token})
async for ev in use_case.stream(body.source_ids, messages, context=body.context, top_k=top_k):
if ev["type"] == "token":
if ev.get("token"):
yield sse_event("token", {"token": ev["token"]})
else:
# 'sources' (et tout futur évènement typé) : relayé tel quel.
ev_type = ev.pop("type")
yield sse_event(ev_type, ev)
yield sse_event("done", {})
except (LLMProviderError, EmbeddingError) as exc:
yield sse_event("error", {"message": str(exc)})