1.langchain的作用
- 实现与LLMs的多次交互,并将多次交互进行组合实现更好的理解
- 组件化:与LLMs交互的过程进行了抽象,可以对接多种LLMs
- 序列化:提示词、chain等文件方便进行自定义配置
- 丰富的chains套件:很多针对特定方向的插件,偏向于工程化应用
2.六个方向上的便利
- LLMs & Prompt:LangChain是一个提供通用接口的平台,它支持几乎所有主流的语言模型(Language Model)系统。除了通用接口外,LangChain还提供了提示词的管理和优化功能,以及一系列相关的工具,方便开发人员与语言模型进行交互和应用。
- Chains:LangChain通过将提示词、大型语言模型和结果解析封装成"Chain",为AI原生应用提供了端到端的交互序列。它提供了标准的接口,允许不同的Chain进行组合,从而实现更加灵活和强大的应用。
- Data Augemented Generation:数据增强生成式是一种解决预训练语料数据无法及时更新导致回答内容陈旧的方法。LangChain提供了支持数据增强生成式的Chain,这些Chain首先与外部数据源进行交互,获取相应的数据,然后再与语言模型(LLMs)进行交互。这种方法在特定的应用场景中非常典型,比如基于特定数据源的问答机器人。
- Agent:在一个任务中,代理的主要责任是通过 LangChain 提供的标准接口,将任务拆分成子任务,并利用 LLMs 执行这些子任务,观察执行结果。代理将重复执行这个过程,直到整个任务完成。
- Memory:在LangChain中,内存指的是在Chain或Agent调用之间保持状态的持久化机制。LangChain为内存提供了标准接口,并提供了多种内存实现。
- Evaluation:LangChain为评估提供了一系列功能和工具,使开发人员能够对语言模型进行全面的性能评估和分析。
3.langchain基本概念
langchain将整个系统分为了输入/输出系统、大语言模型,输入部分是Prompt类组件,输出部分是Output Parser类组件。
Prompt Templates
- 预先写好交互的格式,留出语句中的主体,方便交互
- 模板包括指令、少量的实例、相关的上下文信息
- LLMs分为大语言模型和聊天模型两种类型,进而Prompt也有两种,
- prompt template:提供字符串格式的提示词
- chat prompt template:提示聊天消息格式的提示词
from langchain import PromptTemplate
prompt_template = PromptTemplate.from_template(
"请以严肃的口吻写一篇介绍 {topic} 的文章,字数不超过 {count} 字。"
)
res = prompt_template.format(topic="中国", count="100")
print(res)
# 请以严肃的口吻写一篇介绍 中国 的文章,字数不超过 100 字。
LLMs
- LLMs:大语言模型,字符串格式输入,返回字符串格式结果
- Chat models:聊天模型,聊天消息列表形式输入,返回也是如此
Output Parsers
- 能够把大模型输出的散乱的信息,通过提示词变成合理的结构化数据形式
LLMChain
- 提示词、LLMs、输出解析,三个组合在一起形成了一个chain
- 不同的chain还可以通过某些方式连接在一起,实现更高阶的功能
Memory
- 是一种用于存储数据的工具,由于LLM 没有任何长期记忆,它有助于在多次调用之间保持状态。
Agents
- 一种使用LLM做出决策的工具,它们可以执行特定的任务并生成文本输出。
- Agents通常由三个部分组成:Action、Observation和Decision。Action是代理执行的操作,Observation是代理接收到的信息,Decision是代理基于Action和Observation做出的决策。
4.关键模块
Embedding 嵌入
- 为了实现知识库的存储、查询,使用了向量化的方式
Agents模块
- 某些应用程序需要基于用户输入的对LLM和其他工具的灵活调用链。Agents为此类应用程序提供了灵活性。代理可以访问单一工具,并根据用户输入确定要使用的工具。代理可以使用多个工具,并使用一个工具的输出作为下一个工具的输入。
- 主要有两种类型的代理:Plan-and-Execute Agents 用于制定动作计划;Action Agents 决定实施何种动作。
- 先列个大纲在这,后续开始逐步研究。