如何在LangChain中结合JSON解析器使用重试与输出修复解析器?
解决LangChain自定义链中输出修复解析器引发的ValidationError问题
错误详情
pydantic.v1.error_wrappers.ValidationError: 1 validation error for Generation
text
str type expected (type=type_error.str)错误截图说明:显示上述ValidationError信息,明确指出Generation类的text字段需要字符串类型,但实际传入的不是有效字符串。
解决方案
- 检查LLM原始输出:在链中添加日志打印LLM的返回结果,确认是否为纯字符串,排除返回None、字典或其他非字符串类型的情况。
- 调整输出修复解析器逻辑:确保解析器的prompt模板明确要求模型返回纯文本格式,避免解析后生成非字符串结构。
- 显式转换输出类型:在解析器处理完成后,强制将结果转换为字符串,再传入Generation对象,示例代码如下:
# 在自定义链的输出处理环节添加类型转换 fixed_output = output_fixing_parser.parse(llm_response) # 确保text字段为字符串类型 generation_result = Generation(text=str(fixed_output))
- 验证Generation类定义:确认使用的Generation模型(LangChain内置或自定义)中text字段的类型注解为
str,避免因字段定义错误导致验证失败。
内容的提问来源于stack exchange,提问作者Thomas Chu
相关产品推荐
相关产品推荐

