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

SQL Agent生成SQL遇解析错误求助:仅支持ChatGeneration输出

解决SQL Agent报错“This output parser only works with ChatGeneration output”的方法

核心原因

你使用的输出解析器仅支持处理聊天模型返回的ChatGeneration类型输出,但当前SQL Agent调用的是普通文本生成模型,返回的是Generation类型结果,两者格式不兼容。Ajax Turbo能正常运行,是因为它的输出格式或解析器逻辑适配了对应模型的返回类型。

具体修复步骤

  • 检查并替换输出解析器
    确认当前使用的解析器是否为聊天模型专用(比如ChatOutputParser子类),如果是,替换为适配普通文本生成的通用解析器,或调整解析逻辑兼容Generation类型输出。例如在LangChain框架中,若原本用ChatSqlOutputParser,可替换为SqlOutputParser。

  • 切换为聊天模型调用
    确保Agent调用的是聊天模型(如GPT-3.5-turbo、GPT-4),而非普通文本补全模型(如text-davinci-003)。聊天模型默认返回ChatGeneration格式,能直接匹配你的解析器。示例代码(LangChain):

    # 错误示例:使用普通文本模型
    # llm = OpenAI(model_name="text-davinci-003")
    # 正确示例:使用聊天模型
    llm = ChatOpenAI(model_name="gpt-3.5-turbo")
    
  • 手动转换输出格式(兼容旧模型)
    若必须使用普通文本模型,可手动将Generation输出转换为ChatGeneration格式后再传入解析器。示例代码:

    from langchain.schema import ChatGeneration, ChatResult, HumanMessage
    
    # original_output为普通模型返回的Generation结果
    chat_generation = ChatGeneration(
        message=HumanMessage(content=original_output.text)
    )
    chat_result = ChatResult(generations=[chat_generation])
    # 传入解析器处理
    parser.parse_result(chat_result)
    
  • 排查输出处理链路
    检查Agent的输出处理流程,确保中间环节没有修改输出结构,比如不要将聊天消息格式强制转换为纯文本,需保留原始的ChatGeneration结构供解析器识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:32:03