From cde7357df8b4e87ca977c70f9f3cc6060b72498b Mon Sep 17 00:00:00 2001 From: zhh Date: Mon, 3 Nov 2025 15:21:43 +0800 Subject: [PATCH] =?UTF-8?q?chatbot=20=E5=92=8C=20agent=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0session=5Fid=20=E4=BD=9C=E4=BC=9A=E8=AF=9D=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=EF=BC=8C=E5=BC=83=E7=94=A8user=5Fid=20=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E4=BC=9A=E8=AF=9D=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- app/server/ChatbotAgent/agent_server.py | 7 ++++--- app/server/ChatbotAgent/chatbot_server.py | 9 ++++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 834faba..4b7a90f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ app/core/data/ *.sqlite3 *.log db -*.sqlite \ No newline at end of file +*.sqlite +*.png \ No newline at end of file diff --git a/app/server/ChatbotAgent/agent_server.py b/app/server/ChatbotAgent/agent_server.py index bc5787c..3e44e9d 100644 --- a/app/server/ChatbotAgent/agent_server.py +++ b/app/server/ChatbotAgent/agent_server.py @@ -17,6 +17,7 @@ logger = logging.getLogger(__name__) class AgentRequestModel(BaseModel): user_id: str + session_id: str num_outfits: int stylist_path: str callback_url: str @@ -71,7 +72,7 @@ class LCAgent(ls.LitAPI): async def background_run(self, request: AgentRequestModel): # 1. 根据用户ID查询对话历史,总结对话内容 - request_summary = await self.get_conversation_summary(request.user_id) + request_summary = await self.get_conversation_summary(request.session_id) logger.info(f"request_summary: {request_summary}") # 2.根据对话总结推荐搭配 @@ -89,13 +90,13 @@ class LCAgent(ls.LitAPI): for failed in recommendation_results.get("failed_outfits", []): logger.error(f"❌ {failed}") - async def get_conversation_summary(self, user_id: str) -> str: + async def get_conversation_summary(self, session_id: str) -> str: """ 分析用户的完整会话历史,并打包成一个简洁的需求总结。 这个总结可以直接作为输入 Prompt 传递给 Stylist Agent。` """ - history_messages = self.redis.get_history(user_id) + history_messages = self.redis.get_history(session_id) input_message = "\n".join([f"{msg.role.value}: {msg.content}" for msg in history_messages]) # 临时调用 LLM 或使用本地逻辑生成总结 summary = await self.llm.generate_response(history=[Message(role=Role.USER, content=input_message)], diff --git a/app/server/ChatbotAgent/chatbot_server.py b/app/server/ChatbotAgent/chatbot_server.py index 518d0df..6c1d0d9 100644 --- a/app/server/ChatbotAgent/chatbot_server.py +++ b/app/server/ChatbotAgent/chatbot_server.py @@ -18,6 +18,7 @@ logger = logging.getLogger(__name__) class PredictRequest(BaseModel): user_id: str # 用戶ID + session_id: str user_message: str # 用戶輸入 gender: str # 服装类型 @@ -55,8 +56,10 @@ class LCChatBot(ls.LitAPI): # 添加用户消息到历史 user_message = request.user_message user_id = request.user_id + session_id = request.session_id + user_msg = Message(role=Role.USER, content=user_message) - chat_history = self.redis.get_history(user_id) + chat_history = self.redis.get_history(session_id) chat_history.append(user_msg) if request.gender == 'male': BASIC_PROMPT = MEN_BASIC_PROMPT @@ -98,8 +101,8 @@ class LCChatBot(ls.LitAPI): else: assistant_msg = Message(role=Role.ASSISTANT, content="No response generated. Try again later.") - self.redis.save_message(user_id, user_msg) - self.redis.save_message(user_id, assistant_msg) + self.redis.save_message(session_id, user_msg) + self.redis.save_message(session_id, assistant_msg) async def encode_response(self, output): # The for-loop must have async keyword here since output is an AsyncGenerator