LangChain=AI瑞士军刀?零基础小白秒变多任务高手!
LangChain基本概念
LangChain 提供了一套工具、组件和接口,简化了创建LLM应用的过程。

LangChain是由多个组件组成的:
- Models:模型,比如GPT-4o;
- Prompts:提示,包括提示管理、提示优化和提示序列化;
- Memory:记忆,用来保存和模型交互时的上下文;
- Indexes:索引,用于结构化文档,方便和模型交互。如果要构建自己的知识库,就需要各种类型文档的加载,转换,长文本切割,文本向量计算,向量索引存储查询等;
- Chains:链,一系列对各种组件的调用;
- Agents:代理,决定模型采取哪些行动,执行并且观察流程,直到完成为止;
| 组件 | 说明 |
|---|---|
| LLM / ChatModel | 大语言模型的封装,LLM 用于文本补全,ChatModel 用于对话(支持 tool calling) |
| Prompt Template | 提示词模板,支持变量替换,将用户输入格式化为LLM 能理解的 prompt |
| Chain | 将多个组件串联,如 prompt | llm,数据依次流经各组件 |
| Agent | 智能代理,能根据用户问题自主决策调用哪些工具 |
| Tools | 工具集,扩展 Agent 能力,如搜索、计算、数据库查询等 |
| Memory | 记忆组件,保存对话历史,实现多轮对话 |
LangChain 从 0.3X 到 1.X 发生了结构性变化(概念性没变):
1)包结构完全重构:
langchain-core:只放抽象基类与 LangChain Expression Language(LCEL),所有第三方集成都不直接依赖完整 langchain。
langchain-community:社区维护的几十种 loader、retriever、tool 等实现。
合作伙伴包独立成库,例如 langchain-openai、langchain-anthropic,体积更小、升级更灵活。
2)新增官方子项目:
LangGraph:用图编排多步、多角色、有状态的工作流,替代过去靠多重 Chain 嵌套的写法。
LangServe:一键把链/代理封装成 REST API,自带 /invoke、/stream、/batch 端点与 Swagger 页面。
LangSmith:可视化调试、回归测试、在线监控平台,与 1.X 的回调系统深度打通。
3)API 风格全面转向 LCEL(链式表达式)
鼓励用 | 运算符把组件拼成 Runnable,而不是继承 Chain 基类。

| 工具 | 核心定位 | 架构特点 | 适用场景 |
|---|---|---|---|
| LangChain | 开源LLM应用开发框架 | 基于链(Chain)的线性或分支工作流,支持Agent模式 | 快速构建RAG、对话系统、工具调用等线性任务 |
| LangGraph | LangChain的扩展,专注于复杂工作流 | 基于图(Graph)的循环和条件逻辑,支持多Agent协作 | 需要循环、动态分支或状态管理的复杂任务(如自适应RAG、多Agent系统) |
1)工作流编排:
LangChain:线性链,适合固定流程任务(如文档问答)。
LangGraph:支持循环、条件边和状态传递,适合动态调整的复杂逻辑(如多轮决策)。
2)工具调用与扩展性
LangChain/LangGraph:工具作为链或图的节点,支持自定义工具和重试逻辑。
(3)RAG(检索增强生成)
LangChain:开箱即用的文档加载、向量检索功能。
LangGraph:需手动设计RAG节点,但支持反馈循环优化检索质量。
传统chain的使用
最基础的 LangChain 用法:将 Prompt 模板和 LLM 组合成可执行链。


prompt | llm 是 LangChain 1.x 推荐的链式组合方式(LCEL 表达式);
invoke() 是执行 Chain 的标准方法;
输入是字典格式,key 对应 input_variables;
LangChain官方文档中对Agent的定义:

Tools
在LangChain中集成了一些常用的tools,你也可以自定义自己的工具。
# LangChain Tools
Apify;
ArXiv API Tool;
AWS Lambda API;
Shell Tool;
Bing Search;
ChatGPT Plugins;
DuckDuckGo Search;
File System Tools;
Google Places;
Google Search;
Google Serper API;
Gradio Tools;
GraphQL tool;
HuggingFace Tools;
Human as a tool;
IFTTT WebHooks;
Metaphor Search;
Call the API;
Use Metaphor as a tool;
OpenWeatherMap API;
Python REPL;
Requests;
SceneXplain;
Search Tools;
SearxNG Search API;
SerpAPI;
Twilio;
Wikipedia;
Wolfram Alpha;
YouTubeSearchTool;
Zapier Natural Language Actions API;
Example with SimpleSequentialChain;
查询工具
Serpapi工具:支持Google, Baidu, Yahoo, Ebay, YouTube等多种API查询。
pip install google-search-results
Serpapi网站:https://serpapi.com/,获取api-key。


Agent 使用 ChatModel 而非普通 LLM(因为需要 toolcalling 能力);
load_tools() 可加载预置工具,如 serpapi、wikipedia 等;
Agent 的输入格式是 messages 列表;
时序图:

使用多个Tools
llm-math工具:给Agent提供数学相关的计算,比如:当前温度的0.5次方是多少?
当前北京的温度是多少华氏度,这个温度的1/4是多少?
Serpapi,搜索当前北京的温度;
llm-math,计算这个温度的1/4;
除了预置工具,还可以用 @tool 装饰器创建自定义工具。


@tool 装饰器将函数转为 LangChain 工具;
docstring 非常重要:函数定义下方的 “”“…”“” 三引号字;
符串就是 docstring,Agent 通过它判断何时使用该工具。
Memory
Memory:
- Chains 和 Agent之前是无状态的,如果你想让他能记住之前的交互,就需要引入内存;
- 可以让LLM拥有短期记忆对话过程中,记住用户的input 和 中间的output;

在LangChain中提供了几种短期记忆的方式:
- BufferMemory: 将之前的对话完全存储下来,传给LLM;
- BufferWindowMemory: 最近的K组对话存储下来,传给LLM;
- ConversionMemory: 对对话进行摘要,将摘要存储在内存中,相当于将压缩过的历史对话传递给LLM;
- VectorStore-backed Memory: 将之前所有对话通过向量存储到VectorDB(向量数据库)中,每次对话,会根据用户的输入信息,匹配向量数据库中最相似的K组对话;
带记忆的对话链

MessagesPlaceholder 用于在 Prompt 中插入历史消息;
RunnableWithMessageHistory 自动管理消息历史;
session_id 用于区分不同用户/会话;
时序图:


ReAct范式
ReAct范式:将推理和动作相结合,克服LLM胡言乱语的问题,同时提高了结果的可解释性和可信赖度。
人们在从事一项需要多个步骤的任务时,在步骤和步骤之间,或者动作和动作之间,一般都会有推理过程。

除了苹果遥控器,还有什么设备能解决苹果遥控器最早设计交互的控制问题?
ReAct = Reason + Act;
Apple遥控器最早只能控制Front Row软件。
Front Row软件可以被两种设备控制,Apple遥控器和键盘的功能键。
所以,正确答案是键盘的功能键。
ReAct这个方式,简单有效,可解释性强;
机器把想法写出来,然后结合想法和观察,做出相应的动作:
- Though: …
- Action: …
- Observation: …
Agent设计
这个模版中,最重要的是:Thought、Action、Action Input。
这 3 个部分是 AI 在Chain中进行自我思考的过程。
这种思考模式,可以重复N次,直到Thought: 我现在知道最终答案,
Final Answer: 原始输入问题的最终答案。
AGENT_TMPL = """按照给定的格式回答以下问题。你可以使用下面这些工具:
{tools}
回答时需要遵循以下用---括起来的格式:
---
Question: 我需要回答的问题
Thought: 回答这个上述我需要做些什么
Action: "{tool_names}" 中的一个工具名
Action Input: 选择这个工具所需要的输入
Observation: 选择这个工具返回的结果
...(这个 思考/行动/行动输入/观察 可以重复N次)
Thought: 我现在知道最终答案
Final Answer: 原始输入问题的最终答案
---
现在开始回答,记得在给出最终答案前,需要按照指定格式
进行一步一步的推理。
Question: {input}
{agent_scratchpad}
"""
Agent通过ReAct知道调用哪个工具。
特斯拉客服助手案例:


Agent 的核心是把 LLM 当作推理引擎,让它能使用外部工具,以及自己的长期记忆,从而完成灵活的决策步骤,进行复杂任务;
LangChain 里的 Chain 的概念,是由人来定义的一套流程步骤来让 LLM 执行,可以看成是把LLM 当成了一个强大的多任务工具;
典型的 Agent 逻辑(比如 ReAct):
- 由 LLM 选择工具。
- 执行工具后,将输出结果返回给 LLM
- 不断重复上述过程,直到达到停止条件,通常是 LLM 自己认为找到答案了。
ReAct框架: 使用LangChain的ReAct框架,允许代理执行思考-行动-观察的循环:
- 思考:分析任务,确定下一步行动;
- 行动:调用适当的工具;
- 观察:分析工具返回的结果;
- 重复:根据观察结果继续思考,直到任务完成;
案例:工具链组合设计
工具链组合设计
在Agent系统中,工具链是实现复杂任务的关键组件。通过将多个工具组合,Agent可以逐步处理复杂的问题。
示例:LangChain中的工具加载与组合
from langchain.agents import load_tools
from langchain.llms import OpenAI
llm = Tongyi(model_name="qwen-turbo", dashscope_api_key=DASHSCOPE_API_KEY)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
这里加载了搜索引擎工具(serpapi)和数学计算工具(llm-math),并将其与语言模型(LLM)组合使用,以处理需要搜索和计算的任务。
通过组合三个工具来解决复杂任务,包括:
- 文本分析工具 (TextAnalysisTool):负责分析文本内容,提取统计信息和情感倾向。
- 数据转换工具 (DataConversionTool):实现不同数据格式之间的转换,目前支持JSON和CSV格式互转。
- 文本处理工具 (TextProcessingTool):提供文本处理功能,如统计行数、查找文本和替换文本。
测试用例:
1、分析以下文本的情感倾向,并统计其中的行数:'这个产品非常好用,我很喜欢它的设计,使用体验非常棒!\n价格也很合理,推荐大家购买。\n客服态度也很好,解答问题很及时。’
2、将以下CSV数据转换为JSON格式:'name,age,comment\n张三,25,这个产品很好\n李四,30,服务态度差\n王五,28,性价比高’
3、分析以下文本,找出所有包含’好’的行,然后将结果转换为JSON格式:‘产品A:质量好,价格合理\n产品B:外观好,但价格贵\n产品C:性价比好,推荐购买’
整体的工作流程:
Step1, 用户提交任务描述;
Step2, Agent分析任务,决定使用哪些工具;
Step3, Agent通过ReAct框架调用相应工具;
Step4, 系统整合各工具结果,生成最终回答;

LCEL构建任务链
LCEL 是 LangChain 推出的链式表达式语言,支持用"|“操作符将各类单元(如Prompt、LLM、Parser等)组合。
每个”|"左侧的输出会自动作为右侧的输入,实现数据流式传递。
优势:
- 代码简洁,逻辑清晰,易于多步任务编排。
- 支持多分支、条件、并行等复杂链路。
- 易于插拔、复用和调试每个子任务。
典型用法:
- 串联:A | B | C,A的输出传给B,B的输出传给C。
- 分支:{“x”: A, “y”: B},并行执行A和B。
- 支持流式:如 .stream() 方法可边生成边消费。
任务链的每一步由开发者显式指定(如先文本分析再统计行数,或条件分支)。
不具备 Agent 的"自主决策"能力,所有流程和分支都需手动编排。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)