Skip to main content

1. Parser输出解析器

Written: 2026.06

2. 输出解析器介绍

2.1 为什么需要输出解析器

输出解析器(Output Parser)负责获取 model 的输出并将其转换为更合适的格式。这在应用开发中极其重要 LangChain 输出解析器可参考文档:https://reference.langchain.com/python/langchain_core/output_parsers/

2.2 什么是输出解析器

输出解析器是LangChain框架中的重要组件,它的作用是将大语言模型的原始输出内容解析为如JSON、XML、YAML等结构化数据。在LangChain中,输出解析器位于模型和最终数据输出之间,作为数据处理的中间层。通过输出解析器,可以实现如下目的:
  • 指定格式输出:将模型的文本输出转换指定格式
  • 数据校验:确保输出内容符合预期的格式和类型
  • 错误处理:当解析失败时,进行错误修复和重试
  • 输出格式提示词:生成对应格式要求的提示词,如要生成JSON的具体描述,可以通过提示词传递给大模型,达到返回特定格式数据的目的

2.3 输出解析器分类

LangChain提供了多种输出解析器,以下是常见的输出解析器及使用场景:

2.4 输出解析器方法

parse:将大模型输出的内容,格式化成指定的格式返回 format_instructions:它会返回一段清晰的格式说明字符串,告诉 model 希望输出成什么格式(比如 JSON,或者特定格式)

2.5 输出解析器类继承关系

分析LangChain源码可知,在 LangChain 的类结构中,顶层基类是 BaseLLMOutputParser,用于定义所有 LLM 输出解析器的抽象父类。而BaseTransformOutputParser是一个泛型类,用于“对模型输出进行转换”,我们常用的 StrOutputParserListOutputParser等均继承自 BaseTransformOutputParser
输出解析器类继承关系

输出解析器类继承关系

3. 常用输出解析器用法

3.1 字符串解析器

StrOutputParser是LangChain中最简单的输出解析器,它可以简单地将任何输入转换为字符串。从结果中提取content字段转换为字符串输出。
字符串解析器
执行结果如下

3.2 Json 解析器

JsonOutputParser,即JSON输出解析器,是一种用于将大模型的自由文本输出转换为结构化JSON数据的工具。 适合场景:特别适用于需要严格结构化输出的场景,比如 API 调用、数据存储或下游任务处理。 实现方式:
  • 用户自己通过提示词指明返回Json格式
  • 借助JsonOutputParser的get_format_instructions() ,生成格式说明,指导模型输出JSON 结构
指定提示词指明返回 json 格式
Json 解析器
执行结果如下
使用get_format_instructions 生成格式说明:
执行结果如下

3.3 列表解析器

利用CommaSeparatedListOutputParser解析器,可以将模型的文本响应转换为一个用逗号分隔的列表(List[str])
列表解析器
执行结果如下

3.4 XML 解析器

XMLOutputParser,将模型的自由文本输出转换为可编程处理的 XML 数据。 注意:XMLOutputParser 不会直接将模型的输出保持为原始XML字符串,而是会解析XML并转换成Python字典(或类似结构化的数据)。目的是为了方便程序后续处理数据,而不是单纯保留XML格式。
XML 解析器
执行结果如下

4. 解析器进阶用法

4.1 Pydantic解析器

PydanticOutputParser 是 LangChain 输出解析器体系中最常用、最强大的结构化解析器之一。 它与 JsonOutputParser 类似,但功能更强 —— 能直接基于 Pydantic 模型 定义输出结构,并利用其类型校验与自动文档能力。 对于结构更复杂、具有强类型约束的需求,PydanticOutputParser 则是最佳选择。它结合了Pydantic模型的强大功能,提供了类型验证、数据转换等高级功能,使用示例如下:
Pydantic解析器
执行结果如下

4.2 自定义输出解析器

在某些情况下,LangChain提供的内置的解析器无法满足业务的要求,这时我们可以创建自定义的输出解析器,如下示例,定义Answer数据模型,规定回答内容和标签格式,并使用自定义解析器将JSON数组标签转为《》格式
自定义输出解析器
执行结果如下