diff --git a/app/server/ChatbotAgent/agent_server.py b/app/server/ChatbotAgent/agent_server.py index 14fe18a..6cc9450 100644 --- a/app/server/ChatbotAgent/agent_server.py +++ b/app/server/ChatbotAgent/agent_server.py @@ -81,7 +81,7 @@ class LCAgent(ls.LitAPI): user_id=request.user_id, gender=request.gender, callback_url=request.callback_url) - logger.info("\n--- Final Recommendation Results ---") + logger.info("--- Final Recommendation Results ---") for i, path in enumerate(recommendation_results.get("successful_outfits", [])): logger.info(f"✅ Outfit {i + 1} saved to: {path}") for failed in recommendation_results.get("failed_outfits", []): diff --git a/app/server/ChatbotAgent/core/stylist_agent_server.py b/app/server/ChatbotAgent/core/stylist_agent_server.py index 8485394..f20d7ee 100644 --- a/app/server/ChatbotAgent/core/stylist_agent_server.py +++ b/app/server/ChatbotAgent/core/stylist_agent_server.py @@ -282,6 +282,14 @@ class AsyncStylistAgent: logger.info(response_data) item_id = "" item_category = "" + headers = { + 'Accept': "*/*", + 'Accept-Encoding': "gzip, deflate, br", + 'User-Agent': "PostmanRuntime-ApipostRuntime/1.1.0", + 'Connection': "keep-alive", + 'Content-Type': "application/json" + } + url = f'{callback_url}/api/style/callback' while True: # 1. 准备用户输入(上下文) user_input = self._build_user_input() @@ -292,12 +300,15 @@ class AsyncStylistAgent: response_data['path'] = minio_path if item_id: response_data['items'].append({"item_id": item_id, "category": item_category}) + if not gemini_data: # if gemini_data: print("🚨 Agent 返回无效响应,终止流程。") self.stop_reason = "Agent failed to return response" response_data['status'] = "failed" response_data['message'] = self.stop_reason + response = post_request(url=url, data=json.dumps(response_data), headers=headers) + logger.info(f"request data :{response_data} | JAVA callback info -> status:{response.status_code} | message:{response.text}") break # 3. 检查终止条件 @@ -306,6 +317,8 @@ class AsyncStylistAgent: self.stop_reason = "Finish reason: " + gemini_data.get('reason', 'No reason provided') response_data['status'] = "stop" response_data['message'] = self.stop_reason + response = post_request(url=url, data=json.dumps(response_data), headers=headers) + logger.info(f"request data :{response_data} | JAVA callback info -> status:{response.status_code} | message:{response.text}") break # 4. 处理推荐单品 @@ -320,6 +333,8 @@ class AsyncStylistAgent: # 这里简化为跳过本次循环 response_data['status'] = "continue" response_data['message'] = f"❌ Agent 推荐了无效类别: {category}。要求 Agent 重新输出。", + response = post_request(url=url, data=json.dumps(response_data), headers=headers) + logger.info(f"request data :{response_data} | JAVA callback info -> status:{response.status_code} | message:{response.text}") continue # 4b. 在本地 DB 中查询单品 @@ -338,6 +353,8 @@ class AsyncStylistAgent: self.stop_reason = "Finish reason: Duplicate item selected." response_data['status'] = "stop" response_data['message'] = self.stop_reason + response = post_request(url=url, data=json.dumps(response_data), headers=headers) + logger.info(f"request data :{response_data} | JAVA callback info -> status:{response.status_code} | message:{response.text}") break if new_item['item_id'] == "ELG383": @@ -345,17 +362,23 @@ class AsyncStylistAgent: self.stop_reason = "Finish reason: ELG383 is seleced repeatly." response_data['status'] = "stop" response_data['message'] = self.stop_reason + response = post_request(url=url, data=json.dumps(response_data), headers=headers) + logger.info(f"request data :{response_data} | JAVA callback info -> status:{response.status_code} | message:{response.text}") break self.outfit_items.append(new_item) # print(f"➕ 成功添加单品: {new_item['category']} ({new_item['item_id']}). 当前搭配数量: {len(self.outfit_items)}") response_data['status'] = "ok" response_data['message'] = self.stop_reason + response = post_request(url=url, data=json.dumps(response_data), headers=headers) + logger.info(f"request data :{response_data} | JAVA callback info -> status:{response.status_code} | message:{response.text}") else: print("⚠️ 未找到匹配单品,无法继续搭配。终止。") self.stop_reason = "Finish reason: No matching item found in local database." response_data['status'] = "stop" response_data['message'] = self.stop_reason + response = post_request(url=url, data=json.dumps(response_data), headers=headers) + logger.info(f"request data :{response_data} | JAVA callback info -> status:{response.status_code} | message:{response.text}") break if len(self.outfit_items) >= self.max_len: # 设置一个最大循环限制,防止无限循环 @@ -363,19 +386,9 @@ class AsyncStylistAgent: self.stop_reason = "Finish reason: Reached max outfit length." response_data['status'] = "stop" response_data['message'] = self.stop_reason + response = post_request(url=url, data=json.dumps(response_data), headers=headers) + logger.info(f"request data :{response_data} | JAVA callback info -> status:{response.status_code} | message:{response.text}") break - - logger.info(f"request data :{response_data}") - headers = { - 'Accept': "*/*", - 'Accept-Encoding': "gzip, deflate, br", - 'User-Agent': "PostmanRuntime-ApipostRuntime/1.1.0", - 'Connection': "keep-alive", - 'Content-Type': "application/json" - } - url = f'{callback_url}/api/style/callback' - response = post_request(url=url, data=json.dumps(response_data), headers=headers) - logger.info(f"JAVA callback info -> status:{response.status_code} | message:{response.text}") return response_data def _upload_to_gcs(self, bucket_name: str, blob_name: str, mime_type, image_bytes) -> str: