AI 伴学笔记4 接入模型 输出解析器

119 阅读3分钟

微调与接入

LangChain 支持三种模型:

  • 大语言模型 LLM:输入文本,返回字符串
    • OpenAI,豆包,星火等在线大模型,可参考此处接入
    • HuggingFace 下载预训练模型,微调后使用,如 Llama2。使用 HuggingFaceHubHuggingFacePipeline
  • 聊天模型 Chat Model:基于 LLM 但更结构化,支持将聊天消息列表作为输入
  • 文本嵌入模型 Embedding Model:用于文本嵌入,将文本存入

预训练模型

[!note] 预训练模型:通过 Transformer 等架构初步学习词汇、语法、句子结构和上下文信息等语言知识后的模型

可使用 HuggingFace 下载预训练模型并进行微调,需要申请 HuggingFace Token 并安装 transformers

[!note] 模型量化:简化模型权重,以减少模型大小和计算需求,量化后的模型常以 GGML 或 GPTQ 结尾

自定义模型

创建类继承自 LLM,实现 _call 方法即可

  • _call(self, prompt: str, stop: Optional[List[str]]) -> str:接收输入字符串并返回响应字符串
  • _identifying_params(self):可选,输出模型信息

输出解析器

构建语言响应,将文本信息转化为结构化信息,是包含以下方法的类:

  • get_format_instructions() -> str:指导如何格式化语言模型的输出
  • parse(output: str):接收语言模型输出
  • parse_with_prompt(output: str, prompt: str):可选,接收一个提示,根据提示修正模型输出

LangChain 自带解析器位于 langchain.output_parsers 包中,可单独导入使用

PydanticOutputParser

使用 Pydantic 将输出解析为 Json 数据,并提供数据验证、数据转换等功能

  1. 创建 Pydantic 模型,定义需要接受的数据格式

Pasted image 20241110130922.png

  1. 创建解析器,通过 get_format_instructions 获取输出提示用于指导大语言模型输出

Pasted image 20241110131043.png

  1. 创建提示模板并包含输出提示指导,也可以在模板中包含输出解析器(output_parser 参数)

Pasted image 20241110131322.png

  1. 生成提示并使用输出解析器输出

Pasted image 20241110131508.png

OutputFixingParser

自动修复解析器,用于修复模型返回的数据中的格式错误

原理:当格式化错误时,将错误数据和格式化指令传递给大模型,让 LLM 进行相关修复

Pasted image 20241110131945.png

  • parser:原本的解析器,如前面的 PydanticOutputParser 等,自动修复解析器用于修复该解析器产生的错误

RetryWithErrorOutputParser

重试解析器,错误时重新向大模型发起查询并附带更多指导信息,可修复完整性、准确性等问题

与自动修复解析器相比,自动修复解析器只能修复格式上的错误,重试解析器通过重新请求生成可以修复内容上的错误,如缺项等