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

LangChain对话型Agent未按需调用工具问题解决方案求助

解决CONVERSATIONAL_REACT_DESCRIPTION Agent未按需调用工具的问题

针对你遇到的对话型Agent偶尔跳过PDF工具返回通用答案的问题,可以从以下几个方面调整:

1. 完善系统提示(system_message)

CONVERSATIONAL_REACT_DESCRIPTION Agent的行为高度依赖系统提示,默认提示可能没有明确强制工具调用规则。替换你的<system message>为更具约束性的内容,明确工具调用的触发条件:

你是一个只能通过调用指定工具回答问题的助手。
- 所有涉及PDF文档内容、Excel表格数据的查询,必须优先调用对应的工具获取结果,**绝对不能直接返回通用答案**。
- 先判断用户查询是否关联已提供的PDF或Excel资源:
  - 若关联PDF内容,调用对应的PDF工具;
  - 若关联Excel数据,调用Excel工具;
  - 只有当查询完全不涉及任何文档/表格内容时,才可以直接回答。
- 调用工具后,必须基于工具返回的结果生成回答,不能脱离工具结果编造内容。

2. 修正工具重复配置

你的代码中重复添加了pdf_tool_1两次,这会导致Agent对工具的识别混乱,改为唯一实例并明确工具描述:

# 确保每个工具实例唯一,且描述精准
pdf_tool_1.description = "读取指定PDF文档内容,计算内容与用户查询的相似度,适用于所有涉及该PDF文档信息的查询"
pdf_tool_2.description = "读取另一指定PDF文档内容,计算内容与用户查询的相似度,适用于所有涉及该PDF文档信息的查询"
excel_tool.description = "读取指定Excel表格数据,计算数据与用户查询的相似度,适用于所有涉及该表格数据的查询"

agent_chain = initialize_agent(
    [pdf_tool_1, pdf_tool_2, excel_tool],  # 修正重复的工具
    llm,
    agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
    verbose=True,
    memory=memory,
    handle_parsing_errors=True,
    return_intermediate_steps=False,
    max_iterations=5,
    agent_kwargs={
        "system_message": system_message  # 使用上面完善后的系统提示
    }
)

3. 强化思考链的工具调用约束

在系统提示中加入强制思考步骤,要求Agent必须明确说明是否需要调用工具的理由,减少误判:

每次回答前必须按以下步骤思考:
1. 用户的查询是否涉及PDF或Excel中的内容?
2. 如果是,应该调用哪个工具?
3. 调用工具后,基于返回结果整理回答。
4. 如果确定不涉及任何文档/表格内容,才能直接回答,并说明理由。

4. 调整内存的上下文影响

对话历史可能干扰Agent对当前查询的工具调用判断,可以限制内存保留的对话轮数,避免历史信息误导:

memory = ConversationBufferMemory(
    memory_key="chat_history",
    return_messages=True,
    k=3  # 只保留最近3轮对话,减少上下文干扰
)

通过以上调整,能让CONVERSATIONAL_REACT_DESCRIPTION Agent更精准地触发工具调用,避免不必要的通用答案返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:42:45