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

使用Cohere作为LLM时create_pandas_dataframe_agent报NameError的解决方法

问题描述
  • 使用LangChain的Pandas DataFrame Agent做汽车数据分析,替换默认OpenAI为Cohere后出现一系列异常:
    • 执行时抛出 ObservationNameError: name 'Observation' is not defined
    • 触发 OutputParserException,提示LLM输出同时包含最终答案和可解析动作(比如错误返回"Final Answer: There are 346 records in the dataframe",但实际数据集是3行11列)
    • 添加 agent_executor_kwargs={"handle_parsing_errors": True} 后,程序陷入循环,重复执行相同动作并报错
解决方案

1. 适配Cohere的输出格式

默认Pandas Agent的解析规则是为OpenAI设计的,Cohere的输出格式不匹配。需要明确约束Cohere的输出结构:

  • 中间分析步骤仅输出 Thought-Action-Action Input 序列
  • 得出结论后仅输出 Final Answer: [内容]
  • 明确告知Cohere:Observation是工具返回的结果,无需它生成

2. 替换自定义Prompt模板

用约束性Prompt规范Cohere的输出逻辑,示例:

custom_prompt = """
你是数据分析专家,基于给定的DataFrame回答问题。请严格遵循以下输出格式:

# 中间分析步骤格式
Thought: 下一步的分析思路
Action: python_repl_ast
Action Input: 要执行的Python代码

# 最终答案格式
Final Answer: 你的结论内容

注意:禁止同时输出中间步骤和最终答案;Observation是工具返回结果,无需你编写。
"""

3. 确保LLM与Agent正确集成

检查Cohere初始化配置,确保API密钥有效、模型选择合适,并正确传递给Agent:

from langchain.llms import Cohere
from langchain.agents import create_pandas_dataframe_agent
import pandas as pd

# 加载并验证数据集
df = pd.read_csv("你的汽车数据文件.csv")
print(df.shape)  # 确认输出为(3, 11)

# 初始化Cohere LLM
cohere_llm = Cohere(cohere_api_key="你的Cohere API密钥", model="command-xlarge-nightly")

4. 优化错误处理逻辑

不要仅依赖默认的handle_parsing_errors=True,改用自定义错误提示引导Agent修正输出:

agent = create_pandas_dataframe_agent(
    cohere_llm,
    df,
    verbose=True,
    agent_executor_kwargs={
        "handle_parsing_errors": lambda e: f"输出格式错误,请严格按照要求格式输出,错误详情:{str(e)}"
    },
    prompt=custom_prompt
)

# 运行查询
agent.run("告诉我这个数据集的行数和列数分别是多少")

5. 验证工具调用有效性

先单独测试python_repl_ast工具能否正常访问DataFrame,确保df变量在Agent执行环境中可用,避免因变量未定义导致的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:02:44