回调逻辑修改
This commit is contained in:
@@ -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", []):
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user