AI 伴学笔记5 链

117 阅读2分钟

链是对一组功能的封装

说明
LLM 链LLMChain最简单、基本的链,集成提示模板、模型访问、输出解析的完整 LLM 访问流程,广泛应用于整个 LangChain 中
顺序链SequentialChain,包括 SimpleSequentialChain用于将上一个调用的输出作为下一个调用的输入
SimpleSequentialChain 每个步骤有单一的输入输出,且上一步输出是下一步的输入
SequentialChain 是更通用的顺序链,允许多个输入输出
转换链TransformChain通过设置转换函数,将输入文本进行格式转换,类似于 map 函数,如将很长的文档分割成多个句子,只保留前几句以满足 LLM 令牌数量限制
路由链RouterChain包含条件判断和目标链,在正式调用之前先通过调用 LLM 动态判断调用条件,选择最接近的目标链,
工具链APIChain,LLMMathChain,RetrievalQA 等APIChain:允许 LLM 与 API 交互以检索相关信息,利用提供的 API 相关问题构建链
LLMMathChain:允许调用大模型作为数学工具,解决数学问题
RetrievalQA:通过嵌入向量检索进行查询,构建问答系统

调用方法

通过以下几种方法调用 LangChain 链:

  • 像函数一样直接调用,参数为一个 dict,等价于使用 run 方法
  • run(dict) 方法,直接调用其内部的 _call_ 函数
  • predict(**kvarg) 方法,函数使用具名参数而不是 dict
  • apply(list[dict]) 方法,接收一个列表,一次执行多个查询,返回结果列表
  • generate(dict) 方法 :返回一个 LLResult 对象而不是字符串,包含调用的相关信息

LLMChain

整合请求模板和输出解析的 LLM 调用过程

Pasted image 20241110144844.png

SequentialChain

链式调用

Pasted image 20241110145750.png

  • chains:所有调用链,按列表顺序依次调用
  • input_variables:所有请求模板的参数,应包含链中每个请求模板涉及的参数
  • output_variables:前面请求的输出将以此列表对应值为键组合到下一个链的输入中

RouterChain

带有分支选择能力的 Chain,选择更相关的链

  1. 初始化语言模型,创建多条目标链和默认链。这里将目标链组合成一个 dict 用于后面选择

Pasted image 20241110152352.png

  1. 创建路由模板,创建 LLMRouterChain 路由链。该链作用是向 LLM 查询问题更贴近哪组调用链

Pasted image 20241110151851.png

  1. 使用多路选择链 MultiPromptChain 将路由链、目标链和默认链整合。调用时先调用路由链,请求 LLM 决定使用哪个链。如果每一个链都不符合,则使用默认链

Pasted image 20241110152723.png