type
Post
status
Published
date
Oct 6, 2025
slug
summary
StrOutputParser、JsonOutputParser、XMLOutputParser、CommaSeparatedListOutputParser、PydanticOutputParser用法
tags
prompt
人工智能
category
技术分享
icon
password

输出解析器介绍

为什么需要输出解析器

语言模型返回的内容通常都是字符串的格式(文本格式),但在实际AI应用开发过程中,往往希望
model可以返回更直观、更格式化的内容,以确保应用能够顺利进行后续的逻辑处理。此时,LangChain提供的输出解析器就派上用场了。
输出解析器(Output Parser)负责获取 model 的输出并将其转换为更合适的格式。这在应用开发中极其重要。

什么是输出解析器

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

输出解析器分类

LangChain提供了多种输出解析器,以下是常见的输出解析器及使用场景:
解析器类型
适用场景
输出格式
StrOutputParser
简单文本输出
字符串
JsonOutputParser
JSON格式数据
字典/列表
PydanticOutputParser
复杂结构化数据
Pydantic模型对象
ListOutputParser
列表数据
Python列表
DatetimeOutputParser
时间日期数据
datetime对象
BooleanOutputParser
布尔值输出
True/False

输出解析器方法

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

输出解析器类继承关系

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

常用输出解析器用法

字符串解析器

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

Json 解析器

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

列表解析器

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

XML 解析器

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

解析器进阶用法

Pydantic解析器

PydanticOutputParser 是 LangChain 输出解析器体系中最常用、最强大的结构化解析器之一。 它与 JsonOutputParser 类似,但功能更强 —— 能直接基于 Pydantic 模型 定义输出结构,并利用其类型校验与自动文档能力。 对于结构更复杂、具有强类型约束的需求,PydanticOutputParser 则是最佳选择。它结合了Pydantic模型的强大功能,提供了类型验证、数据转换等高级功能,使用示例如下:
执行结果:
2025-10-26 09:25:17.838 | INFO | main:<module>:69 - 解析后的结构化结果: name=‘小米’ category=‘科技’ description=‘小米公司是一家专注于智能硬件、电子产品和互联网服务的中国科技公司,成立于2010年,以其高性价比的产品和创新技术而闻名。’ 2025-10-26 09:25:17.838 | INFO | main:<module>:72 - 结果类型: <class ‘main.Product’>
执行结果:
主要输出解析器用法LECL 结合 少样本 实现顺序链-多步骤流水线
Loading...