在前端输入问题时,会向/api/chat端点发送POST 请求。请求正文必须包括用户的问题,格式如下:
根据服务器发送事件(SSE)规范的定义,应用程序的响应是一个事件流。服务器返回给客户端的事件顺序如下:
data: [SESSION_ID] session-id-assigned-to-this-chat-sessiondata: [SOURCE] json-formatted-document(对已确定的每个相关文件来源重复)。data: response chunk(对 LLM 返回的每个响应块重复)。data: [DONE]
客户可通过在请求 URL 中添加session_id 查询字符串参数,选择提出后续问题。
聊天机器人终端的高级逻辑在文件api/app.py 中 Flask 应用程序的api_chat() 函数中:
文件api/chat.py中的ask_question() 函数是一个生成器函数,它使用 Flask 的响应流功能(基于yield 关键字)对上述事件进行流式处理: