一、输出解析器概述
输出解析器是处理和构建语言模型响应的类,其核心功能包括:
- get_format_instructions:返回一个字符串,指导语言模型如何格式化输出。
- parse:接收语言模型的输出字符串,并将其解析为特定的数据结构。
- parse_with_prompt(可选):接收输出字符串和提示,并根据提示修正或重新解析输出。
LangChain 提供了多种输出解析器,如列表解析器、日期时间解析器、枚举解析器、结构化输出解析器、Pydantic(JSON)解析器、自动修复解析器和重试解析器。
二、Pydantic(JSON)解析器实战
- 创建模型实例:设置 OpenAI API 密钥,使用 LangChain 库创建 OpenAI 模型实例(text-davinci-003)。
- 定义输出数据格式:创建一个空的 DataFrame 用于存储模型生成的描述,并通过 Pydantic 的 BaseModel 类定义期望的数据格式(FlowerDescription)。Pydantic 提供了数据验证、数据转换、易于使用和 JSON 支持的特点。
- 创建输出解析器:使用 LangChain 库中的 PydanticOutputParser 创建输出解析器,并获取输出格式指示。输出格式指示通过 JSON Schema 形式描述有效输出应包含的字段和字段的数据类型。
- 创建提示模板:定义包含输入变量和输出格式指示的提示模板。使用模板生成具体输入提示,并传递给模型。
- 生成提示,传入模型并解析输出:循环处理所有花和它们的价格,生成输入提示,获取模型输出,并使用解析器解析输出。解析后的输出添加到 DataFrame 中,并最终打印或保存到 CSV 文件中。
Pydantic 解析器的优点在于容易解析,解析后的字典格式列表便于数据分析和处理。
三、自动修复解析器(OutputFixingParser)实战
自动修复解析器能够自动修复某些常见的模型输出错误。例如,当 JSON 字符串格式不正确时,OutputFixingParser 可以尝试修复格式错误。如果修复失败,它会将格式错误的输出和格式化指令传递给大模型进行修复。
四、重试解析器(RetryWithErrorOutputParser)实战
重试解析器在模型初次输出不符合预期时,尝试修复或重新生成新的输出。特别是当输出不完整或缺失内容时,重试解析器可以利用大模型的推理能力根据原始提示找回相关信息。通过实现 parse_with_prompt 方法,重试解析器能够成功还原格式并恢复缺失内容。