From 39f8b942cb597ff310a0215dfd2fec54fad48345 Mon Sep 17 00:00:00 2001 From: zcr Date: Wed, 17 Dec 2025 11:19:46 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A1.=E9=80=9A=E8=BF=87=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E6=95=B0=E9=87=8F=E5=8C=BA=E5=88=86=E5=88=B7=E6=96=B0?= =?UTF-8?q?(num=3D1)=E5=92=8C=E6=AD=A3=E5=B8=B8=E6=8E=A8=E8=8D=90(num>1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- app/server/ChatbotAgent/agent_server.py | 72 +++++++++++++++---------- 2 files changed, 46 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index 4a567e2..e06af0c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ data/ *.log *.toml .prod_env -google_application_credentials.json \ No newline at end of file +google_application_credentials.json +*.bash \ No newline at end of file diff --git a/app/server/ChatbotAgent/agent_server.py b/app/server/ChatbotAgent/agent_server.py index e153ae5..2c994ea 100644 --- a/app/server/ChatbotAgent/agent_server.py +++ b/app/server/ChatbotAgent/agent_server.py @@ -56,7 +56,6 @@ class AgentRequestModel(BaseModel): batch_sources: List[str] callback_url: str gender: str - is_first_request: bool class LCAgent(ls.LitAPI): @@ -120,8 +119,7 @@ class LCAgent(ls.LitAPI): user_id=request.user_id, gender=request.gender, callback_url=request.callback_url, - outfit_ids=outfit_ids, - is_first_request=request.is_first_request + outfit_ids=outfit_ids ) logger.info("--- Final Recommendation Results ---") for i, path in enumerate(recommendation_results.get("successful_outfits", [])): @@ -174,8 +172,7 @@ class LCAgent(ls.LitAPI): user_id: str = "test", gender: str = "male", callback_url: str = None, - outfit_ids=None, - is_first_request=False + outfit_ids=None ): """ 基于用户的对话历史和需求,推荐一套搭配。 @@ -190,33 +187,52 @@ class LCAgent(ls.LitAPI): task_map = {} stylist_agent_kwages = self.stylist_agent_kwages.copy() - for i in range(num_outfits): - stylist_agent_kwages['outfit_id'] = outfit_ids[i] + if num_outfits == 1: + # 通过请求数量判断 num == 1 单个outfit刷新 + stylist_agent_kwages['outfit_id'] = outfit_ids[0] stylist_agent_kwages['stylist_name'] = stylist_name stylist_agent_kwages['gender'] = gender agent = AsyncStylistAgent(**stylist_agent_kwages) - if is_first_request: - # 第一套搭配使用快速方法 一次跑出所有单品 - task = agent.run_quick_batch_styling( - request_summary=request_summary, - occasions=occasions, - start_outfit=start_outfit, - batch_sources=batch_sources, - user_id=user_id, - callback_url=callback_url, - ) - else: - # 后续 - task = agent.run_iterative_styling( - request_summary=request_summary, - occasions=occasions, - start_outfit=start_outfit, - batch_sources=batch_sources, - user_id=user_id, - callback_url=callback_url, - ) + task = agent.run_iterative_styling( + request_summary=request_summary, + occasions=occasions, + start_outfit=start_outfit, + batch_sources=batch_sources, + user_id=user_id, + callback_url=callback_url, + ) tasks.append(task) - task_map[task] = {"outfit_id": outfit_ids[i], "retries": 0} + task_map[task] = {"outfit_id": outfit_ids[0], "retries": 0} + elif num_outfits > 1: + # 通过请求数量判断 num > 1 四套搭配推荐 (1快 , num-1慢) + for i in range(num_outfits): + stylist_agent_kwages['outfit_id'] = outfit_ids[i] + stylist_agent_kwages['stylist_name'] = stylist_name + stylist_agent_kwages['gender'] = gender + agent = AsyncStylistAgent(**stylist_agent_kwages) + if i == 0: + # 第一套搭配使用快速方法 一次跑出所有单品 + logger.info(f"fast request outfit_id is : {outfit_ids[i]}") + task = agent.run_quick_batch_styling( + request_summary=request_summary, + occasions=occasions, + start_outfit=start_outfit, + batch_sources=batch_sources, + user_id=user_id, + callback_url=callback_url, + ) + else: + # 后续 + task = agent.run_iterative_styling( + request_summary=request_summary, + occasions=occasions, + start_outfit=start_outfit, + batch_sources=batch_sources, + user_id=user_id, + callback_url=callback_url, + ) + tasks.append(task) + task_map[task] = {"outfit_id": outfit_ids[i], "retries": 0} logger.info(f"--- Starting {num_outfits} concurrent outfit generation tasks. ---") # 2. 任务执行与重试循环