如何在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
相关产品推荐
相关产品推荐

