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 驱动的重试。