回调逻辑修改

This commit is contained in:
zhh
2025-10-31 11:24:22 +08:00
parent e195372bef
commit a50e99031a
2 changed files with 26 additions and 13 deletions

View File

@@ -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", []):

View File

@@ -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
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}")
logger.info(f"request data {response_data} | JAVA callback info -> status:{response.status_code} | message:{response.text}")
break
return response_data
def _upload_to_gcs(self, bucket_name: str, blob_name: str, mime_type, image_bytes) -> str: