Lorsque vous saisissez une question dans la partie frontale, une requête POST est envoyée au point de terminaison /api/chat. Le corps de la demande doit inclure la question de l'utilisateur, dans le format suivant :
La réponse de l'application est un flux d'événements, tel que défini dans la spécification SSE (Server-Sent Events). Les événements que le serveur renvoie au client se déroulent dans l'ordre suivant :
data: [SESSION_ID] session-id-assigned-to-this-chat-sessiondata: [SOURCE] json-formatted-document(répété pour chaque source documentaire pertinente identifiée)data: response chunk(répété pour chaque élément de réponse renvoyé par le LLM)data: [DONE]
Le client peut choisir de poser une question de suivi en ajoutant un argument de chaîne de requête session_id à l'URL de la requête.
La logique de haut niveau du point final du chatbot se trouve dans la fonction api_chat() de l'application Flask, dans le fichier api/app.py :
La fonction ask_question() dans le fichier api/chat.py est une fonction génératrice qui diffuse les événements décrits ci-dessus à l'aide de la fonction de diffusion des réponses de Flask, qui est basée sur le mot-clé yield:
Précédemment
IngestionSuivant
Phase de récupération