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

Langchain Zero Shot ReAct Agent无法输出详细Final Answer求助

问题分析

使用Zero Shot ReAct Agent从向量数据库获取文档时,工具返回的Observation包含详尽的思维链提示用例解释,但Agent输出的Final Answer仅为简略基础信息,调整prompt前缀后问题仍存在,核心是Agent未按要求完整复用Observation内容。

解决方案
  • 强化Prompt指令,明确要求直接复用Observation
    修改ZeroShotAgent的prompt前缀,添加强约束指令,同时自定义格式说明避免Agent总结:

    prefix = """你是专业的教师聊天机器人,需基于数据库文档为学生提供学术性详细解答。
    核心要求:当通过工具获取到Observation内容后,**必须直接将Observation的全部内容作为Final Answer输出,不得进行任何精简、总结或改写**。
    你的目标是完整呈现从数据库中获取的所有相关细节,确保回答详尽准确。
    
    你可以使用以下工具:
    """
    
    format_instructions = """使用以下格式:
    
    Question: 需回答的问题
    Thought: 判断是否需要工具;若已获取足够信息,直接输出Final Answer
    Action: 工具名称(如需使用)
    Action Input: 工具输入参数(如需使用)
    Observation: 工具返回结果
    Final Answer: 直接复制Observation的全部内容,不得修改
    """
    
    agent = ZeroShotAgent(
        llm_chain=llm_chain,
        tools=tools,
        verbose=True,
        handle_parsing_errors=True,
        format_instructions=format_instructions
    )
    
  • 直接提取Observation作为最终输出(应急方案)
    若Prompt调整无效,可在Agent执行后直接从中间步骤提取Observation替换Final Answer:

    res = agent_chain(query)
    # 遍历中间步骤获取Observation
    for step in res['intermediate_steps']:
        res['output'] = step[1]
    
  • 检查工具返回格式
    确保向量数据库检索工具返回的Observation为纯文本原文,无多余格式标记,避免Agent误判需提炼内容。

验证方法

执行查询后,对比Final Answer与Observation内容是否完全一致;若仍有偏差,进一步细化Prompt中的约束语句,重复强调“完全复制Observation”“不得总结”等要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:42:15