输出解析器
注意
此处信息指的是从模型获取文本输出并尝试将其解析为更结构化表示的解析器。越来越多的模型支持函数(或工具)调用,这可以自动处理此过程。建议使用函数/工具调用而非输出解析。请参阅相关文档此处。
输出解析器
负责获取模型输出并将其转换为更适合下游任务的格式。当您使用大型语言模型(LLM)生成结构化数据,或标准化聊天模型和大型语言模型(LLM)的输出时,这会非常有用。
LangChain 支持多种不同类型的输出解析器。这是 LangChain 支持的输出解析器列表。下表包含各种信息
- 名称:输出解析器的名称
- 支持流式传输:输出解析器是否支持流式传输。
- 包含格式说明:输出解析器是否包含格式说明。通常情况下都会提供,除非 (a) 所需的 schema 未在提示中指定,而是在其他参数中(如 OpenAI 函数调用),或 (b) 当 OutputParser 封装了另一个 OutputParser 时。
- 调用 LLM:此输出解析器本身是否调用大型语言模型(LLM)。这通常只由尝试更正格式错误的输出解析器完成。
- 输入类型:预期输入类型。大多数输出解析器适用于字符串和消息,但有些(如 OpenAI 函数)需要包含特定 `kwargs` 的消息。
- 输出类型:解析器返回对象的输出类型。
- 描述:我们对该输出解析器的评论以及何时使用它。
名称 | 支持流式传输 | 包含格式说明 | 调用 LLM | 输入类型 | 输出类型 | 描述 |
---|---|---|---|---|---|---|
字符串 | ✅ | str | Message | 字符串 | 从消息对象中解析文本。用于处理消息内容的可变格式(例如,从内容块中提取文本)。 | ||
JSON | ✅ | ✅ | str | Message | JSON 对象 | 按指定返回 JSON 对象。您可以指定一个 Pydantic 模型,它将返回该模型的 JSON。可能是获取不使用函数调用的结构化数据最可靠的输出解析器。 | |
XML | ✅ | ✅ | str | Message | 字典 | 返回标签字典。在需要 XML 输出时使用。与擅长编写 XML 的模型(如 Anthropic 的模型)配合使用。 | |
CSV | ✅ | ✅ | str | Message | List[str] | 返回逗号分隔值列表。 | |
OutputFixing | ✅ | str | Message | 封装另一个输出解析器。如果该输出解析器出错,它将把错误消息和错误输出传递给大型语言模型(LLM),并要求其修复输出。 | |||
RetryWithError | ✅ | str | Message | 封装另一个输出解析器。如果该输出解析器出错,它将把原始输入、错误输出和错误消息传递给大型语言模型(LLM),并要求其修复。与 OutputFixingParser 相比,此解析器还会发送原始指令。 | |||
Pydantic | ✅ | str | Message | pydantic.BaseModel | 接受用户定义的 Pydantic 模型并以该格式返回数据。 | ||
YAML | ✅ | str | Message | pydantic.BaseModel | 接受用户定义的 Pydantic 模型并以该格式返回数据。使用 YAML 进行编码。 | ||
PandasDataFrame | ✅ | str | Message | 字典 | 用于对 pandas DataFrames 进行操作。 | ||
枚举 | ✅ | str | Message | 枚举 | 将响应解析为所提供的枚举值之一。 | ||
日期时间 | ✅ | str | Message | datetime.datetime | 将响应解析为日期时间字符串。 | ||
结构化 | ✅ | str | Message | Dict[str, str] | 一个返回结构化信息的输出解析器。它不如其他输出解析器强大,因为它只允许字段为字符串。当您使用较小的 LLM 时,这会很有用。 |
有关如何使用输出解析器的具体信息,请参阅此处的相关操作指南。