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

如何在Langchain的Python REPL工具中正确传入DataFrame执行查询?

解决Langchain中Python REPL工具识别DataFrame变量名的问题

方法1:自定义工具描述,明确告知变量名

LLM生成代码时默认使用data作为DataFrame变量名,你可以通过修改PythonAstREPLTool的描述,明确告诉模型当前可用的变量是df,对应CSV加载后的数据集:

df = pd.read_csv(file_path)

# 自定义工具描述,明确变量名信息
repl_tool = PythonAstREPLTool(
    locals={"df": df},
    description="用于执行Python代码的工具,当前已加载的CSV数据存储在名为`df`的DataFrame变量中,所有针对数据的操作请使用`df`变量。"
)

tools = [repl_tool]

agent = initialize_agent(
    agent='chat-conversational-react-description',
    tools=tools,
    llm=llm,
    verbose=True,
    max_iterations=3,
    early_stopping_method='generate',
    memory=conversational_memory
)

query = 'What is the longest name?'
print(agent(query))

方法2:将DataFrame变量名改为data

直接把加载后的DataFrame变量名改成LLM默认假设的data,这样生成的代码就能直接匹配:

data = pd.read_csv(file_path)

tools = [PythonAstREPLTool(locals={"data": data})]

agent = initialize_agent(
    agent='chat-conversational-react-description',
    tools=tools,
    llm=llm,
    verbose=True,
    max_iterations=3,
    early_stopping_method='generate',
    memory=conversational_memory
)

query = 'What is the longest name?'
print(agent(query))

方法3:使用专用的PandasDataFrameTool

Langchain提供了专门针对DataFrame的PandasDataFrameTool,无需手动指定变量名,工具会自动处理数据上下文,更适合DataFrame查询场景:

from langchain.tools import PandasDataFrameTool

df = pd.read_csv(file_path)

# 创建专用工具,直接传入DataFrame
tools = [PandasDataFrameTool(df=df, name="pandas_df")]

agent = initialize_agent(
    agent='chat-conversational-react-description',
    tools=tools,
    llm=llm,
    verbose=True,
    max_iterations=3,
    early_stopping_method='generate',
    memory=conversational_memory
)

query = 'What is the longest name?'
print(agent(query))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 05:28:25