输出解析器| 豆包MarsCode AI 刷题

76 阅读2分钟

一、输出解析器概述

输出解析器是处理和构建语言模型响应的类,其核心功能包括:

  1. get_format_instructions:返回一个字符串,指导语言模型如何格式化输出。
  2. parse:接收语言模型的输出字符串,并将其解析为特定的数据结构。
  3. parse_with_prompt(可选):接收输出字符串和提示,并根据提示修正或重新解析输出。

LangChain 提供了多种输出解析器,如列表解析器、日期时间解析器、枚举解析器、结构化输出解析器、Pydantic(JSON)解析器、自动修复解析器和重试解析器。

二、Pydantic(JSON)解析器实战

  1. 创建模型实例:设置 OpenAI API 密钥,使用 LangChain 库创建 OpenAI 模型实例(text-davinci-003)。
  2. 定义输出数据格式:创建一个空的 DataFrame 用于存储模型生成的描述,并通过 Pydantic 的 BaseModel 类定义期望的数据格式(FlowerDescription)。Pydantic 提供了数据验证、数据转换、易于使用和 JSON 支持的特点。
  3. 创建输出解析器:使用 LangChain 库中的 PydanticOutputParser 创建输出解析器,并获取输出格式指示。输出格式指示通过 JSON Schema 形式描述有效输出应包含的字段和字段的数据类型。
  4. 创建提示模板:定义包含输入变量和输出格式指示的提示模板。使用模板生成具体输入提示,并传递给模型。
  5. 生成提示,传入模型并解析输出:循环处理所有花和它们的价格,生成输入提示,获取模型输出,并使用解析器解析输出。解析后的输出添加到 DataFrame 中,并最终打印或保存到 CSV 文件中。

Pydantic 解析器的优点在于容易解析,解析后的字典格式列表便于数据分析和处理。

三、自动修复解析器(OutputFixingParser)实战

自动修复解析器能够自动修复某些常见的模型输出错误。例如,当 JSON 字符串格式不正确时,OutputFixingParser 可以尝试修复格式错误。如果修复失败,它会将格式错误的输出和格式化指令传递给大模型进行修复。

四、重试解析器(RetryWithErrorOutputParser)实战

重试解析器在模型初次输出不符合预期时,尝试修复或重新生成新的输出。特别是当输出不完整或缺失内容时,重试解析器可以利用大模型的推理能力根据原始提示找回相关信息。通过实现 parse_with_prompt 方法,重试解析器能够成功还原格式并恢复缺失内容。