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

LangChain Pandas Dataframe Agent能否添加SerpAPI工具实现混合查询?

问题

作为LangChain新手,已能单独使用Pandas Dataframe Agent分析sales_df数据集,也能通过SerpAPI调用谷歌搜索获取网络信息。现在想整合两者,打造一个优先从数据集查答案、无结果时自动联网搜索的Agent,但添加SerpAPI工具后,Agent不识别该工具,仍只从数据集检索,导致结果错误。

问题分析

create_pandas_dataframe_agent是封装好的专用Agent,默认的prompt和逻辑更偏向仅处理Dataframe查询,即便手动添加工具,也可能因内置prompt未包含工具调用决策逻辑,导致Agent忽略额外工具。另外你提供的整合代码存在变量未定义问题(tools变量未初始化就使用tools + my_tools),也会引发运行异常。

解决方案

放弃直接用create_pandas_dataframe_agent添加工具,改为将Dataframe查询包装成Tool,再和SerpAPI工具一起通过initialize_agent初始化通用Agent,让Agent能根据问题类型自主选择工具。

修正后代码示例

from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAI
from langchain.tools import Tool
from langchain import SerpAPIWrapper
from langchain.agents.agent_toolkits import create_pandas_dataframe_agent

# 初始化LLM
llm = OpenAI(temperature=0)

# 1. 包装Dataframe查询工具
def df_query_tool(query):
    agent = create_pandas_dataframe_agent(llm, sales_df, verbose=False)
    return agent.run(query)

df_tool = Tool.from_function(
    func=df_query_tool,
    name="Dataframe Query",
    description="用于查询sales_df数据集中的销售相关信息,比如哪个itemnumber销量最高"
)

# 2. 初始化SerpAPI搜索工具
search = SerpAPIWrapper(serpapi_api_key=SERPAPI_API_KEY)
search_tool = Tool.from_function(
    func=search.run,
    name="Search",
    description="当需要查找数据集以外的信息时使用,比如某个itemnumber对应的商品描述"
)

# 3. 整合所有工具并初始化Agent
tools = [df_tool, search_tool]
agent = initialize_agent(
    tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)

# 测试问题
question = 'Which itemnumber has the most sales and what is the product description of the itemnumber?'
agent.run(question)

关键调整说明

  • 将Dataframe查询逻辑封装成独立Tool,让通用Agent能识别这是一个可用工具
  • 使用ZERO_SHOT_REACT_DESCRIPTION类型的Agent,它会根据每个工具的描述,判断当前问题应该调用哪个工具
  • 明确每个工具的功能描述,帮助Agent做出正确的工具选择决策

内容的提问来源于stack exchange,提问作者Mark von Oven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:52:52