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

Langchain RouterChain触发OutputParserException错误求助

问题排查与解决方案

核心问题

意图识别模块输出纯字符串OfferInquiry,但RouterChain绑定的输出解析器要求输入为JSON格式,导致解析失败,触发OutputParserException(错误提示本质是解析器无法处理非JSON文本)。

问题验证

  • 意图识别结果正确:用户荷兰语查询Ik ben op zoek naar een laptop(意为"我在找一台笔记本电脑")对应意图OfferInquiry无误
  • 输出格式不匹配:解析器期望JSON结构,但实际输入是无JSON标识的纯字符串

解决方案

方案1:调整意图识别输出为JSON格式

确保意图识别模块返回标准JSON结构,而非纯字符串。示例:

# 错误输出(纯字符串)
detected_intent = "OfferInquiry"

# 正确输出(JSON字符串)
detected_intent = '{"detected_intent": "OfferInquiry"}'

如果意图识别由LLM完成,需修改提示模板强制返回JSON:

from langchain.prompts import PromptTemplate

intent_prompt = PromptTemplate(
    input_variables=["user_query", "destinations"],
    template="""根据用户查询:{user_query},从可选意图列表{destinations}中识别意图,必须返回严格JSON格式,示例:{"detected_intent": "OfferInquiry"}"""
)

方案2:适配解析器类型

如果不需要JSON格式,将RouterChain使用的JsonOutputParser替换为StrOutputParser,直接处理纯字符串意图:

from langchain.output_parsers import StrOutputParser

# 替换解析器
router_parser = StrOutputParser()
# 将解析器绑定到RouterChain的输出处理环节

方案3:中间格式转换

在解析前将纯字符串意图封装为JSON,兼容现有解析器:

import json
from langchain.output_parsers import JsonOutputParser

detected_intent_str = "OfferInquiry"
# 封装为JSON字符串
intent_json = json.dumps({"detected_intent": detected_intent_str})
# 解析JSON
parser = JsonOutputParser()
parsed_intent = parser.parse(intent_json)

错误日志引用

OutputParserException: Invalid JSON object when parsing text 'OfferInquiry'. Error message: Expecting value: line 1 column 1 (char 0)

内容的提问来源于stack exchange,提问作者Wendy De Wit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:12:46