Browse Source

feat:添加多轮对话的上下文关联

zhangwl 1 day ago
parent
commit
81a3a2dec3
1 changed files with 11 additions and 8 deletions
  1. 11 8
      app/routers/chat.py

+ 11 - 8
app/routers/chat.py

@@ -284,23 +284,26 @@ async def chat(
             # api_messages = convert_messages_for_api(request.messages)
             api_messages = [{"role": request.messages[-1].role, "content": request.messages[-1].content}]
 
-            # 调用OpenAI API获取完整响应
-            # response = client.chat.completions.create(
-            #     model=request.model or config.MODEL_NAME,
-            #     messages=api_messages,
-            #     max_tokens=request.max_tokens,
-            #     temperature=request.temperature,
-            #     stream=False  # 非流式模式
-            # )
             tools = [{
                 "type": "web_search",
                 "max_keyword": 2,  # 可选参数,用于限制一轮搜索的最大关键词数量
             }]
+
+            # 获取上一轮对话的response_id,用于多轮对话的上下文关联
+            previous_response_id = None
+            if username in chatHistory and len(chatHistory[username]) > 0:
+                # 从后往前查找最后一条assistant消息的response_id
+                for message in reversed(chatHistory[username]):
+                    if message.role == "assistant" and message.response_id:
+                        previous_response_id = message.response_id
+                        break
+
             response = client.responses.create(
                 model=config.MODEL_NAME,
                 input=api_messages,
                 tools=tools,
                 stream=False,
+                previous_response_id=previous_response_id,
             )
 
             # 检查API响应是否有效