Ponto final do chatbot

Quando você insere uma pergunta no front-end, uma solicitação POST para o endpoint /api/chat é enviada. O corpo da solicitação deve incluir a pergunta do usuário, no seguinte formato:

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

A resposta da aplicação é um fluxo de eventos, conforme definido na especificação Server-Sent Events (SSE). Os eventos que o servidor retorna ao cliente seguem a seguinte sequência:

  • data: [SESSION_ID] session-id-assigned-to-this-chat-session

  • data: [SOURCE] json-formatted-document (repetido para cada fonte documental relevante identificada)

  • data: response chunk (repetido para cada bloco de resposta retornado pelo LLM)

  • data: [DONE]

O cliente pode optar por fazer uma pergunta de acompanhamento adicionando um argumento de string de consulta session_id ao URL da solicitação.

A lógica de alto nível para o endpoint do chatbot está na função api_chat() do aplicativo Flask, no arquivo 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")

A função ask_question() no arquivo api/chat.py é uma função geradora que transmite os eventos descritos acima usando o recurso de streaming de resposta do Flask, que é baseado na palavra-chave 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"

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)