From 510687561801f24074d578fec6730203f5994839 Mon Sep 17 00:00:00 2001 From: zcr Date: Fri, 6 Mar 2026 11:17:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=BA=E5=88=B6=E9=81=B5=E5=BE=AAuse=5Frepor?= =?UTF-8?q?t=E5=8F=82=E6=95=B0=E6=8E=A7=E5=88=B6=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E8=B0=83=E7=94=A8Researcher?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/agent/graph.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/server/agent/graph.py b/src/server/agent/graph.py index e18bcb2..95174bd 100644 --- a/src/server/agent/graph.py +++ b/src/server/agent/graph.py @@ -47,15 +47,32 @@ def supervisor_node(state: AgentState, config: RunnableConfig): else: return {"next": "FINISH"} - system_prompt = """你是家具设计主管。分配任务给专家: - - Designer: 设计建议、参数细化。 - - Visualizer: 绘图需求。 - - Researcher: 市场报告。 + system_prompt = f"""你是家具设计主管,负责分配任务。 + 当前设定: + - 是否需要市场研究报告:{'是' if use_report else '否'} + + 严格遵守以下规则: + - 如果 **不需要** 市场研究报告(use_report = False),**绝对不能** 选择 Researcher + - 只有在 **明确需要** 市场报告、竞争分析、材质趋势、价格区间等外部资讯时,才选择 Researcher,且 **必须** use_report = True + - 常见分配: + - 纯设计、风格、尺寸、材质建议 → Designer + - 需要生成图片、渲染 → Visualizer + - 需要产生建议按钮 → Suggester + - 需要市场报告 → Researcher(但只有 use_report=True 时才允许) + - 对话已完整、无需继续 → FINISH + + 用户最后说了什么?请根据实际需求决定下一步。 """ chain = llm_supervisor.with_structured_output(RouteResponse) decision = chain.invoke([{"role": "system", "content": system_prompt}] + messages) - return {"next": decision.next} + next_node = decision.next + + if next_node == "Researcher" and not use_report: + print("警告:LLM 違規選擇 Researcher,已強制改為 FINISH 或 Suggester") + next_node = "Suggester" if state.get("require_suggestion", False) else "FINISH" + + return {"next": next_node} # --- 构建 Graph ---