强制遵循use_report参数控制是否调用Researcher

This commit is contained in:
zcr
2026-03-06 11:17:07 +08:00
parent 5951205ac9
commit 5106875618

View File

@@ -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 ---