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

LangChain中create_pandas_dataframe_agent自定义工具添加问题排查

LangChain Pandas Agent 添加自定义工具问题解决

问题原因与解决方案

1. TypeError: 多值参数冲突问题

当使用AgentType.OPENAI_FUNCTIONS类型创建pandas agent时,create_pandas_dataframe_agent函数内部会自动生成处理DataFrame的内置工具。直接传入tools参数会和内部生成的工具重复传递给OpenAIFunctionsAgent,触发got multiple values for keyword argument 'tools'错误。

解决方法:使用extra_tools参数传递自定义工具,该参数专门用于添加额外工具,不会与内置工具冲突。

2. Agent不调用自定义工具问题

问题根源有两个:

  • 参数传递错误:原代码用tool参数无法正确注入自定义工具
  • 工具描述模糊:LLM无法准确判断触发工具的场景

解决方法:

  • 改用extra_tools参数传递自定义工具
  • 优化工具描述,明确触发条件,让LLM清晰知道何时调用工具

修改后的代码示例

自定义工具定义(优化描述)

class callStaf(BaseModel):
    def run(self, keyword):
        return {"status": "submitted", "staff name": "abcd-xxx-xx1234"}

tools = [
    Tool(
        name="CallStaff",
        func=callStaf.run,
        description="当用户明确提出需要工作人员协助、请求人工介入时,调用此工具联系工作人员。",
    )
]

修正后的pandas agent创建代码

conversational_agent = create_pandas_dataframe_agent(
    ChatOpenAI(temperature=0, model="gpt-3.5-turbo"),
    df,
    prefix=self.prefix.format(summary=summary, history=history),
    verbose=True,
    handle_parsing_errors=True,
    agent_type=AgentType.OPENAI_FUNCTIONS,
    extra_tools=tools  # 替换为extra_tools参数
)

补充说明

create_pandas_dataframe_agent针对不同agent_type有参数差异:

  • 对于OPENAI_FUNCTIONS类型,必须用extra_tools添加自定义工具
  • 旧版本的tool参数已废弃,无法正确传递多工具列表,会导致工具不生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:07:08