我正在尝试使用 langchain 中的 Python Repl 工具和 CSV 文件,并根据 CSV 文件内容向我发送答案。问题是它获取了编写代码执行的action_input步骤的正确性。但是,它无法回答,因为它无法确定应该运行代码的数据帧。
例如,我询问它有关包含名为“name”的列的数据框中最长的名称,它返回以下内容:
进入新的AgentExecutor链... { “行动”:“python_repl_ast”, "action_input": "将 pandas 导入为 pd # 假设数据集存储在名为“data”的 pandas DataFrame 中 名称 = 数据['名称'] 最长的名称 = max(名称, key=len) 最长的名字” } 观察:NameError:名称“数据”未定义 想法:{ "action": "最终答案", “action_input”:“对于造成的混乱,我深表歉意。不幸的是,我无法访问查找最长名称所需的数据集。还有什么可以帮助您的吗?” }
这是完整的代码: `
df = pd.read_csv(file_path)
tools = [PythonAstREPLTool(locals={"df": 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))`
有没有办法将数据帧对象传递给 Pandas REPL 工具,以便代码正确执行并向我返回答案?使用 GPT-3.5-turbo API 模型时遇到此问题。
初始化代理后,您可以重新利用(?)它来接受与输出相关的 df,使用下面的方法
from langchain.agents import create_pandas_dataframe_agent
agent = create_pandas_dataframe_agent(
OpenAI(temperature=0), df, verbose=True
)