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-session
  • data: [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êt à créer des expériences de recherche d'exception ?

Une recherche suffisamment avancée ne se fait pas avec les efforts d'une seule personne. Elasticsearch est alimenté par des data scientists, des ML ops, des ingénieurs et bien d'autres qui sont tout aussi passionnés par la recherche que vous. Mettons-nous en relation et travaillons ensemble pour construire l'expérience de recherche magique qui vous permettra d'obtenir les résultats que vous souhaitez.

Jugez-en par vous-même