输出解析器
注意
此处的信息指的是解析器,它们接收模型的文本输出并尝试将其解析为更结构化的表示形式。越来越多的模型支持函数(或工具)调用,这可以自动处理此问题。建议使用函数/工具调用而不是输出解析。请参阅此处的文档。
输出解析器负责获取模型的输出并将其转换为更适合下游任务的格式。当您使用 LLM 生成结构化数据,或规范化来自聊天模型和 LLM 的输出时,这非常有用。
LangChain 有许多不同类型的输出解析器。这是 LangChain 支持的输出解析器列表。下表包含各种信息
- 名称:输出解析器的名称
- 支持流式传输:输出解析器是否支持流式传输。
- 具有格式说明:输出解析器是否具有格式说明。这通常是可用的,除非 (a) 所需的模式未在提示中指定,而是在其他参数(如 OpenAI 函数调用)中指定,或者 (b) 当 OutputParser 包装另一个 OutputParser 时。
- 调用 LLM:此输出解析器本身是否调用 LLM。这通常仅由尝试纠正格式错误的输出的输出解析器完成。
- 输入类型:预期的输入类型。大多数输出解析器都适用于字符串和消息,但有些(如 OpenAI Functions)需要带有特定 kwargs 的消息。
- 输出类型:解析器返回的对象的输出类型。
- 描述:我们对此输出解析器的评论以及何时使用它。
名称 | 支持流式传输 | 具有格式说明 | 调用 LLM | 输入类型 | 输出类型 | 描述 |
---|---|---|---|---|---|---|
JSON | ✅ | ✅ | 字符串 | 消息 | JSON 对象 | 返回指定的 JSON 对象。可能是获取不使用函数调用的结构化数据最可靠的输出解析器。 | |
XML | ✅ | ✅ | 字符串 | 消息 | 对象 | 返回标签对象。当需要 XML 输出时使用。与擅长编写 XML 的模型(如 Anthropic 的模型)一起使用。 | |
CSV | ✅ | ✅ | 字符串 | 消息 | Array<字符串> | 返回逗号分隔值的列表。 | |
输出修复 | ✅ | 字符串 | 消息 | 包装另一个输出解析器。如果该输出解析器出错,则这将把错误消息和错误的输出传递给 LLM,并要求它修复输出。 | |||
日期时间 | ✅ | 字符串 | 消息 | 日期 | 将响应解析为日期时间字符串。 | ||
结构化 | ✅ | 字符串 | 消息 | Record<字符串, 字符串> | 一个返回结构化信息的输出解析器。它不如其他输出解析器强大,因为它只允许字段为字符串。当您使用较小的 LLM 时,这可能很有用。 |
有关如何使用输出解析器的具体信息,请参阅此处的相关操作指南。