You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用create_react_agent构建的LangGraph Agent忽略工具输出问题修复

修复LangGraph数学Agent依赖工具输出的方案

1. 强制工具调用的流程约束

在LangGraph的Agent逻辑中添加强制验证节点,拦截未调用工具的运算步骤:

  • 在思考节点与工具调用节点之间插入验证逻辑,提取思考中的运算步骤,检查是否所有运算都已对应工具调用,若未调用则强制返回重新思考,明确要求必须用指定工具完成每一步运算。
  • 示例伪代码:
    def validate_tool_use(state):
        # 从思考内容中提取待执行的运算
        operations = extract_math_operations(state["thought"])
        # 检查已调用的工具是否覆盖所有运算
        called_tools = [call["name"] for call in state.get("tool_calls", [])]
        for op in operations:
            tool_name = op_to_tool(op) # 映射运算到对应工具,如"+"→"add"
            if tool_name not in called_tools:
                return {"thought": f"必须调用{tool_name}工具完成{op}运算,禁止直接计算", "next": "rethink"}
        return {"next": "tool_call"}
    

2. 优化提示词的指令清晰度

替换模糊表述为绝对强制指令,消除模型自行计算的空间:

你唯一的任务是将数学问题拆解为add、multiply、divide工具的调用步骤,绝对不能自行计算任何数值,必须完全依赖工具返回的结果推导下一步。每一步运算都必须调用对应工具,工具返回的结果是唯一可信数值,无论结果是否符合你的认知,都必须基于该结果继续处理。

同时添加示例强化执行逻辑:

示例:问题(3+5)*7
思考:先计算3+5,调用add工具,参数a=3,b=5
工具调用:[{"name": "add", "parameters": {"a":3, "b":5}}]
工具返回:add工具返回结果-2
思考:使用add返回的-2,调用multiply工具,参数a=-2,b=7
工具调用:[{"name": "multiply", "parameters": {"a":-2, "b":7}}]
工具返回:multiply工具返回结果-14
最终答案:-14

3. 强化工具调用的格式与上下文约束

  • 在Agent配置中严格要求模型必须明确引用工具返回结果:每次工具调用后,思考内容必须包含“使用[工具名]返回的结果[数值]进行下一步运算”的表述,禁止出现未关联工具输出的计算步骤。
  • 修改状态更新逻辑,强制将工具返回结果追加到上下文的醒目位置,并清空之前的思考内容,确保模型只能基于工具输出重新推导:
    def update_state_after_tool(state, tool_output):
        # 强制将工具结果插入上下文开头
        state["context"] = f"工具返回结果:{tool_output}\n" + state["context"]
        state["thought"] = "" # 清空旧思考,避免模型依赖自身认知
        return state
    

4. 针对GPT-4.1的特殊处理

由于GPT-4.1可能对简单数学问题存在“固有认知优先”的倾向,可添加惩罚性指令强化约束:

若发现你未调用工具自行计算,将直接判定任务失败,必须重新调用工具完成所有运算步骤。

同时强制要求模型将复合运算拆分为最小单元的工具调用,比如禁止将(3+5)*7合并为一步,必须先调用add再调用multiply。

内容的提问来源于stack exchange,提问作者freude

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:52:40