跳到主要内容

OUTPUT_PARSING_FAILURE

一个 输出解析器 无法按预期处理模型输出。

为了说明这一点,假设你有一个输出解析器,它期望聊天模型输出由 Markdown 代码标签(三个反引号)包围的 JSON。以下是一个良好输入的示例

AIMessage {
content: "```\n{\"foo\": \"bar\"}\n```"
}

在内部,我们的输出解析器可能会尝试去除 Markdown 围栏和换行符,然后运行 JSON.parse()

如果聊天模型反而生成了格式错误的 JSON 输出,如下所示

AIMessage {
content: "```\n{\"foo\":\n```"
}

当我们的输出解析器尝试解析它时,JSON.parse() 调用将失败。

请注意,某些预构建的结构,例如 旧版 LangChain 代理 和链,可能会在内部使用输出解析器,因此即使你没有显式地实例化和使用输出解析器,也可能会看到此错误。

故障排除

以下方法可能有助于解决此错误

  • 如果可能,请考虑使用 工具调用或其他结构化输出技术,而无需输出解析器,以可靠地输出可解析的值。
    • 如果您正在使用预构建的链或代理,请使用 LangGraph 来显式地组合您的逻辑。
  • 在您的提示中添加更精确的格式化说明。在上面的示例中,在您的输入中添加 "You must always return valid JSON fenced by a markdown code block. Do not return any additional text." 可能有助于引导模型返回预期的格式。
  • 如果您使用的是较小或功能较弱的模型,请尝试使用功能更强大的模型。
  • 添加 LLM 驱动的重试

此页面是否有帮助?


您也可以留下详细的反馈 在 GitHub 上.