Documentation / Reference API
Chat / SSE
L'endpoint principal de Bangré. Streame une reponse RAG en francais avec citations validees, en SSE.
Endpoint
POST/api/v1/chat-rag/stream
URL de developpement : http://localhost:8000/api/v1/chat-rag/stream. URL de production (placeholder) : https://api.bangre.bf/api/v1/chat-rag/stream.
Corps de requete
messagestringrequired
Question utilisateur. Longueur min 1, pas de limite haute stricte cote API.
filters.domainestringoptional
Code du domaine cible (
impots, douanes...). Defaut : premier domaine actif.filters.statutstringoptional
Defaut :
en_vigueur. Toute autre valeur est tracee en warning serveur.filters.doc_typestringoptional
Restreint au type (
loi, decret, arrete...).modelstringoptional
Nom Ollama du LLM. Defaut : valeur DB (default_llm_model).
conversation_iduuidoptional
Continue une conversation existante. Necessite un JWT proprietaire.
top_kintoptional
Nombre de chunks recuperes avant rerank. Defaut DB : 8.
Stream SSE
Reponse text/event-stream. Deux types d'evenements :
message: porte un objet{ delta: string }, un token a la fois.final: porte le payload de fin (citations, validation, latence, disclaimer, conversation_id).
sse
event: message
data: {"delta": "La "}
event: message
data: {"delta": "TVA "}
event: final
data: {"citations":[...],"validation":{"ok":true,"warning":null},"latency_ms":842,"disclaimer":"...","conversation_id":"5c2a..."}Format des frames
Le streaming utilise CRLF (
\r\n\r\n) entre evenements, parser SSE standard OK.Evenement final
citationsCitation[]required
Liste des chunks utilises. Champs :
document_id, article_number, snippet (240 char max).validation.okboolrequired
False si la validation post-LLM detecte des chiffres absents du contexte.
validation.warningstring | nulloptional
Texte du warning si validation echouee.
latency_msintrequired
Latence totale de l'appel cote serveur.
disclaimerstringrequired
Texte legal a afficher en bas de la reponse.
conversation_iduuid | nullrequired
Identifiant de la conversation persistee, null pour les appels anonymes.
Exemples
curl -N -X POST http://localhost:8000/api/v1/chat-rag/stream \
-H "Authorization: Bearer $BANGRE_JWT" \
-H "Content-Type: application/json" \
-d '{
"message": "Quel est le taux de TVA en vigueur ?",
"filters": { "domaine": "impots" },
"top_k": 8
}'Comportement
- Si
filters.statutest absent, le serveur forceen_vigueurvia la config DB. - Si
filters.domaineest absent, le serveur prend le premier domaine actif. - La validation post-LLM verifie que les chiffres et dates de la reponse apparaissent dans le contexte. Si non,
validation.okestfalseet un warning textuel est joint. - Avec un JWT valide, la conversation (user + assistant) est persistee de facon best-effort. Une erreur de persistance n'interrompt jamais le stream.
Persistance
Sans bearer,
conversation_id vaut null et rien n'est persiste cote serveur.