Skip to main content
Open on GitHub

输出解析器

note

这里的信息指的是解析器,它们从模型的文本输出中尝试将其解析为更结构化的表示。 越来越多的模型支持函数(或工具)调用,这可以自动处理此过程。 建议使用函数/工具调用而不是输出解析。 有关详细信息,请参阅此处的文档。

Output parser 负责将模型的输出转换为更适合下游任务的格式。 当您使用LLMs生成结构化数据,或标准化聊天模型和LLMs的输出时,这非常有用。

LangChain 有许多不同类型的输出解析器。以下是 LangChain 支持的输出解析器列表。下表包含各种信息:

  • 名称: 输出解析器的名称
  • 支持流式处理: 输出解析器是否支持流式处理。
  • 是否有格式说明: 输出解析器是否有格式说明。这通常是可用的,除非 (a) 所需的模式未在提示中指定,而是在其他参数中指定(如OpenAI函数调用),或 (b) 当OutputParser包装另一个OutputParser时。
  • 调用LLM: 此输出解析器本身是否调用LLM。通常只有尝试纠正格式错误输出的输出解析器才会这样做。
  • 输入类型: 预期的输入类型。大多数输出解析器可以处理字符串和消息,但有些(如OpenAI Functions)需要带有特定kwargs的消息。
  • 输出类型: 解析器返回的对象的输出类型。
  • 描述: 我们对此输出解析器的评论以及何时使用它。
名称支持流式传输有格式说明调用LLM输入类型输出类型描述
Strstr | Message字符串从消息对象中解析文本。适用于处理消息内容的不同格式(例如,从内容块中提取文本)。
JSONstr | MessageJSON 对象返回指定的 JSON 对象。您可以指定一个 Pydantic 模型,它将返回该模型的 JSON。可能是获取不使用函数调用的结构化数据的最可靠的输出解析器。
XMLstr | Messagedict返回一个标签的字典。当需要XML输出时使用。与擅长编写XML的模型(如Anthropic的模型)一起使用。
CSVstr | MessageList[str]返回一个逗号分隔的值列表。
OutputFixingstr | Message包装另一个输出解析器。如果该输出解析器出错,则会将错误消息和错误的输出传递给LLM,并要求其修复输出。
RetryWithErrorstr | Message包装另一个输出解析器。如果该输出解析器出错,则会将原始输入、错误的输出和错误消息传递给LLM,并要求其修复。与OutputFixingParser相比,此解析器还会发送原始指令。
Pydanticstr | Messagepydantic.BaseModel接受用户定义的Pydantic模型并返回该格式的数据。
YAMLstr | Messagepydantic.BaseModel接受用户定义的Pydantic模型并返回该格式的数据。使用YAML进行编码。
PandasDataFramestr | Messagedict用于对pandas数据框进行操作。
Enumstr | MessageEnum将响应解析为提供的枚举值之一。
Datetimestr | Messagedatetime.datetime将响应解析为日期时间字符串。
Structuredstr | MessageDict[str, str]一个返回结构化信息的输出解析器。它比其他输出解析器功能较弱,因为它只允许字段为字符串。当您使用较小的LLMs时,这可能很有用。

有关如何使用输出解析器的详细信息,请参阅此处相关的操作指南


这个页面有帮助吗?