Chatbot Endpoint

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 :

{
    "question": "the question goes here"
}

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 :

@app.route("/api/chat", methods=["POST"])
def api_chat():
    request_json = request.get_json()
    question = request_json.get("question")
    if question is None:
        return jsonify({"msg": "Missing question from request JSON"}), 400

    session_id = request.args.get("session_id", str(uuid4()))
    return Response(ask_question(question, session_id), mimetype="text/event-stream")

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:

@stream_with_context
def ask_question(question, session_id):
    yield f"data: {SESSION_ID_TAG} {session_id}\n\n"
    # ...
    yield f"data: {DONE_TAG}\n\n"

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