以下内容根据AI对话生成,如有雷同,纯属巧合
1. 链式调用 (Chaining)
这是最基本也是最常见的模式。它指的是将多个 LLM 调用、数据处理步骤或工具调用按顺序连接起来,形成一个连贯的工作流。前一个步骤的输出是后一个步骤的输入。
- 要解决的问题:单一 LLM 调用无法完成复杂任务。
- 核心思想:“分而治之”。将一个复杂任务分解为多个简单的、可顺序执行的子任务。
- LangChain 实现:使用
LLMChain
,SequentialChain
,TransformChain
等。 - 类比:就像在工厂的流水线上,产品(数据)经过一道道工序(LLM或处理函数),每一步都为其增加价值,最终形成完整的产品。
示例:翻译+总结
一个经典的链式调用是先将一段外语文档翻译成中文,再对中文内容进行总结。
- 链的第一步:输入 = “一段德语文本”,调用
LLMChain_1
(提示:“请将以下德语翻译成中文:{input}”)-> 输出 = “中文翻译文本”。 - 链的第二步:输入 = “中文翻译文本”,调用
LLMChain_2
(提示:“请总结以下中文文本的要点:{input}”)-> 输出 = “总结要点”。
2. 代理与工具使用 (Agents & Tool Use)
这是最强大、最接近“智能”的模式。代理模式将 LLM 视为一个推理引擎(大脑),它来决定为了回答问题需要采取哪些行动(Actions),即调用哪些工具(Tools)。
- 要解决的问题:LLM 的内部知识可能过时、不专业或无法访问外部世界(如计算、搜索、查询数据库)。
- 核心思想:“赋予 LLM 使用工具的能力”。让 LLM 自主规划、决策和执行,从而扩展其能力边界。
- LangChain 实现:使用
Agent
、Tool
和AgentExecutor
。常见的代理类型有ZERO_SHOT_REACT_DESCRIPTION
,CONVERSATIONAL_REACT_DESCRIPTION
。 - 类比:你(LLM)是一个经理,有一个任务要做。你手下有各种专家(工具):会计师(计算器)、研究员(搜索引擎)、秘书(日历API)。你分析任务(“我需要先知道今天的天气,然后计算一下出行成本”),然后命令相应的专家去执行,最后综合所有结果做出决策。
示例:回答复杂问题
- 用户问题:“埃隆·马斯克(Elon Musk)最近在推特上发了什么?他提到的公司当前股价是多少?”
- 代理的工作流程:
- 思考:要回答这个问题,我需要做两件事:1. 获取马斯克的最新推文。2. 查询相关公司的股价。
- 行动:调用
google_search_tool
,输入查询:“Elon Musk latest tweet”。 - 观察:获得推文内容,比如是关于 SpaceX 的。
- 思考:推文是关于 SpaceX 的,但我需要查的是股价。SpaceX 是私有公司,没有股价。可能用户指的是特斯拉(TSLA)?我应该查一下特斯拉的股价。
- 行动:调用
stock_price_tool
,输入:“TSLA”。 - 观察:获得特斯拉当前股价为 $XYZ。
- 最终回答:“埃隆·马斯克的最新推文内容是:‘为SpaceX团队感到骄傲!’。这条推文主要提及了SpaceX,但SpaceX是私有公司,无公开股价。如果您感兴趣的话,特斯拉(TSLA)当前的股价是 $XYZ。”
3. 检索增强生成 (RAG - Retrieval-Augmented Generation)
RAG 模式用于解决 LLM 的“知识滞后”和“幻觉”问题。它通过在生成答案前,先从外部知识库(如你的文档、数据库)中检索相关信息,并将这些信息作为上下文提供给 LLM,从而让 LLM 生成更准确、更相关的答案。
- 要解决的问题:LLM 的内部知识有截止日期,且无法获取非公开的、私有的或特定领域的信息。
- 核心思想:“先检索,后生成”。为 LLM 提供相关的参考依据,让它“有据可依”地回答问题。
- LangChain 实现:使用
Document Loaders
,Text Splitters
,Vectorstores
(Chroma, FAISS),Embeddings
, 和RetrievalQA
链。 - 类比:开卷考试。LLM 是一个聪明的学生,但它的记忆(闭卷)可能不完整或过时。在考试(回答用户问题)时,允许它先去查阅相关的教科书和笔记(外部知识库),然后基于这些资料组织出最好的答案。
示例:公司内部知识库问答
- 预处理(线下):将公司所有的员工手册、API文档、项目报告等加载并分割成块,转换为向量(Embeddings),存入向量数据库。
- 用户提问:“我们公司的年假政策是怎样的?”
- 检索:系统将用户问题也转换为向量,并在向量数据库中搜索与之最相似的文本块(即最相关的政策段落)。
- 增强:将检索到的政策段落作为上下文,和原始问题一起组合成一个新的、更丰富的提示词(Prompt)。
- 生成:LLM 根据这个“富含上下文”的提示词生成准确答案:“根据公司2023年员工手册第X章规定,年假政策为...”
4. 记忆 (Memory)
LLM 本身是无状态的(Stateless),这意味着它默认不会记住之前的对话内容。记忆模式旨在让应用能够在多轮对话中记住之前的交互信息,从而实现连贯的对话。
- 要解决的问题:LLM 的“金鱼记忆”,无法进行连贯的多轮对话。
- 核心思想:在应用程序层面维护一个“记忆体”,存储历史对话,并在每次调用 LLM 时自动将其作为上下文注入。
- LangChain 实现:使用
ConversationBufferMemory
,ConversationSummaryMemory
,ConversationBufferWindowMemory
等。 - 类比:聊天时看聊天记录。每次你回复对方时,都可以看到之前聊过的所有内容,这样你的回复才能贴合上下文。
示例:
- 用户:“什么是LangChain?” -> AI:(解释LangChain...)
- 用户:“它用什么语言编写?” -> 如果没有记忆,AI 不知道“它”指代什么。
- 有记忆:记忆体包含了上一轮对话的历史
[Human: 什么是LangChain?, AI: LangChain是一个...的框架]
。系统会将记忆和当前问题组合成提示:“之前的对话:...[如上]...\n当前问题:它用什么语言编写?\n回答:”。LLM 就能明白“它”指的是 LangChain,并回答“主要使用Python编写”。
- 有记忆:记忆体包含了上一轮对话的历史
总结与关系
这些模式并非互斥,而是常常组合使用,构建出极其强大的应用:
- 一个高级代理很可能内部使用了 RAG 来检索知识,并使用 链式调用 来处理检索到的内容。
- 一个对话机器人肯定会使用 记忆 模式,并且可能会在后台使用 RAG 来查询产品信息,甚至启动一个代理来完成用户指令(如订餐、查询订单)。
模式 | 要解决的核心问题 | 好比是... |
---|---|---|
链式调用 (Chaining) | 单一调用无法处理复杂任务 | 工厂流水线 |
代理与工具 (Agents) | LLM 无法与外部世界互动 | 经理指挥专家团队 |
检索增强生成 (RAG) | LLM 知识过时/缺乏内部知识 | 开卷考试 |
记忆 (Memory) | LLM 无法记住对话历史 | 查看聊天记录 |