
🐇明明跟你说过:个人主页
🏅个人专栏:《深度探秘:AI界的007》 🏅
🔖行路有良友,便是天堂🔖
目录
[1、什么是 Lang Chain](#1、什么是 Lang Chain)
[2、什么是 Agent](#2、什么是 Agent)
[二、LangChain Agent 的核心概念](#二、LangChain Agent 的核心概念)
[1、LangChain Agent 架构](#1、LangChain Agent 架构)
[2、Agent 的执行循环(Execution Loop)](#2、Agent 的执行循环(Execution Loop))
[三、LangChain Agent 的工具 (Tools)](#三、LangChain Agent 的工具 (Tools))
2、工具选择策略 (Tool Selection Strategies)
[四、LangChain Agent 的类型 (Types)](#四、LangChain Agent 的类型 (Types))
[2、ReAct Agent](#2、ReAct Agent)
[3、Conversational Agent](#3、Conversational Agent)
[4、Chat Agent / OpenAIFunctionsAgent](#4、Chat Agent / OpenAIFunctionsAgent)
[5、Plan-and-Execute Agent](#5、Plan-and-Execute Agent)
一、引言
1、什么是 Lang Chain
LangChain 是一个用于构建基于大语言模型(LLM)应用的强大开发框架,特别适合创建智能问答、聊天机器人、自动化助手等 AI 驱动的应用。
🚀 核心功能
链式组合(C hain):
- 可以将多个模块( 例如:Prompt、模型调用、解析器等)链接在一起,形成一条"处理链"。
上下文记忆(Memory):
- 能保存用户的对话历史,实现连续对话或任务跟踪。
工具集成(Tools):
- 集成搜索引擎、数据库、API 调用等外部工具,让语言模型更具执行力。
Agent(智能体)支持:
- 类似自主 AI 助手,能自己决定何时调用哪个工具或链。
🧩 典型应用场景
-
ChatGPT-like 聊天应用
-
AI 数据分析助手
-
自动问答系统(RAG)
-
文档总结、自动填表、代码生成等
🧱 支持组件
-
LLM:支持 OpenAI, Anthropic, HuggingFace 等
-
文档加载:PDF、HTML、Notion、Markdown 等
-
知识库:支持向量数据库如 FAISS、Pinecone、Chroma 等
-
框架语言:支持 Python 和 JavaScript/TypeScript

2、什么是 Agent
Agent 就是一个有"决策能力"的 LLM 程序,它可以根据当前的任务自动判断该做什么,并调用合适的工具完成任务。
你可以把它理解为:
"一个具备一定智能、自主决策能力的 AI 助手,不止会回答问题,还知道用什么工具去获取答案。"
🧠 Agent 与普通 LLM 的区别?

🧩 Agent 能干什么?
-
调用搜索引擎、数据库、API
比如搜索维基百科、调用企业内部系统、查询 SQL 数据库等。
-
使用工具链完成任务
例如根据你的邮件内容自动安排日程、写日报、翻译并上传到系统等。
-
多步骤任务分解
比如你让它"帮我查一下最近热播的电影,并找个地方订票",它能拆解成:
-
🛒 自动下单订票
-
📅 查你空闲时间
-
🎯 选择其中一个
-
🔍 搜索热播电影
-
🛠️ Agent 的组成(以 LangChain 为例)
在 LangChain 中,Agent 通常包括:
-
LLM:作为大脑,负责理解和生成语言
-
Tools:工具集合,比如搜索、数据库、文件系统、爬虫等
-
Prompt Template:告诉 Agent 怎么推理和调用工具
-
Memory(可选):保持任务上下文或对话历史

二、LangChain Agent 的核心概念
1、LangChain Agent 架构
模块 | 作用 |
---|---|
LLM (Language Model) | 负责自然语言理解与输出,是 Agent 的"智能大脑" |
Prompt Template | Agent 思考流程的模板,比如 ReAct、Plan-and-Execute 等策略 |
Agent Executor | 主体执行流程控制器,协调 LLM 调用工具、判断结束 |
Tool / Tools | 外部工具函数,可以是 API、数据库、搜索引擎、本地函数等 |
Memory(可选) | 会话/任务历史记录,保持上下文连贯性 |
Output Parser | 将 LLM 的输出结构化为可操作的指令(如调用哪个工具) |
Callback Manager(可选) | 日志、追踪、监控工具执行过程的 hook 系统 |
Agent 执行流程(Zero-Shot ReAct)
以 LangChain 默认使用的 zero-shot-react-description 策略为例:
-
用户输入任务:
例:请查一下明天北京天气,并换算成华氏温度
-
Prompt 组合:
LLM 会接收到一串模板:任务描述 + 已执行步骤 + 工具描述 + 思考模版(例如 "Thought: ...")
-
LLM 生成决策:
产生内容如:
Thought: 我需要先搜索北京天气 Action: search Action Input: 北京 明天天气
-
Agent 调用对应 Tool(如 search)
-
获取返回结果并再次交给 LLM
-
LLM 判断是否结束,或者继续调用其他工具
-
输出最终答案给用户

2、Agent 的执行循环(Execution Loop)
LangChain 中的 Agent 执行循环(Execution Loop)是 Agent 能够"自主思考、调用工具、判断是否完成任务"的关键机制。这个循环允许 Agent 持续与 LLM 交互,分阶段完成任务,直到达到最终答案或触发终止条件
🔁 Agent 执行循环流程图:

🧩 执行循环的关键组成
步骤 | 说明 |
---|---|
1️⃣ Thought(思考) | LLM 分析当前问题,判断下一步怎么做 |
2️⃣ Action(行动) | LLM 命令 Agent 去调用某个工具 |
3️⃣ Action Input | 工具的调用参数 |
4️⃣ Observation(观察结果) | 工具返回的执行结果 |
5️⃣ Final Answer | LLM 判断任务已完成,输出最终答案并结束循环 |
✅ 示例 Prompt + LLM 输出片段(ReAct 模式)
Question: 明天上海的天气如何?请用英文回答
Thought: 我需要搜索明天上海的天气
Action: search
Action Input: 明天上海天气
Observation: 明天上海多云,最高气温22°C,最低气温15°C
Thought: 我已获取到天气信息
Final Answer: The weather in Shanghai tomorrow will be cloudy with a high of 22°C and a low of 15°C.
- 💡 如果 LLM 没有输出
Final Answer
,Agent 会继续执行下一轮 Prompt 组合并调用 LLM。
🚦 循环的终止条件
Agent 在以下任一条件下终止:
-
输出中包含
Final Answer
-
达到最大循环次数(如 5-10 次)
-
工具调用失败、抛出异常
-
LLM 输出无法解析为 Action(即格式不对)
三、LangChain Agent 的工具 (Tools)
1、常用工具介绍
🛠️ 常见工具介绍(LangChain 官方内置 + 社区流行)
工具名 | 功能 | 应用场景 |
---|---|---|
LLMChecker | 检查自然语言表达中的逻辑或事实错误 | 内容校对、问答验证 |
SerpAPI | 调用 Google 搜索 | 实时查询、信息检索 |
RequestsTool | 使用 HTTP 请求访问网页或 API | REST 接口调用、页面抓取 |
DuckDuckGo Search | 轻量级搜索工具 | 替代 SerpAPI,免密钥 |
Wikipedia | 搜索并获取维基百科内容 | 知识问答、摘要提取 |
Python REPL | 在沙箱中运行 Python 代码 | 数学计算、数据处理 |
WolframAlpha | 调用 Wolfram Alpha 进行高级数学和逻辑推理 | 科学计算、推理任务 |
OpenWeatherMap | 查询天气信息 | 天气类问答 |
Google Calendar | 操作日历:新增/查阅/删除事件 | 智能日程助手 |
Zapier NLA | 连接各种 SaaS 应用(Gmail、Notion、Slack 等) | 企业自动化任务 |
SQL Database Tool | 与数据库连接并执行 SQL 查询 | 数据问答、分析任务 |
Arxiv API Tool | 检索最新科研论文 | 文献助手、学术搜索 |
例:定义一个搜索工具,自动去网页抓取信息
python
from click import prompt
from langchain.globals import set_verbose, set_debug
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_community.tools.tavily_search import TavilySearchResults
# 设置调试和日志级别
set_debug(True)
set_verbose(True)
# 加载语言模型 GPT-4
llm = ChatOpenAI(model="gpt-4")
# 定义工具集合,这里使用 Tavily 搜索引擎获取相关结果
tools = [TavilySearchResults(max_results=1)]
# 构造对话模板
prompt1 = ChatPromptTemplate.from_messages(
[
("system", "你是一位得力的助手"),
("placeholder", "{chat_history}"), # 提示占位符,用于记录之前的对话历史
("human", "{input}"), # 用户输入
("placeholder", "{agent_scratchpad}") # 代理的工作空间占位符(可以自定义)
]
)
# 创建代理模块并将其与工具结合
agent1 = create_tool_calling_agent(llm, tools, prompt1)
# 创建代理执行器
agent_executor = AgentExecutor(agent=agent1, tools=tools)
# 执行任务,这里的输入是一个具体的查询问题
agent_executor.invoke({"input": "2024年中国各省GDP排行榜"})
上面的代码执行后,agent会去网页获取GDP排行榜,并将结果反馈回来

✅ 自定义工具(自定义函数)
除了使用内置工具,我们还可以注册自己的函数作为工具供 Agent 使用:
python
from langchain.tools import Tool
def get_server_status(ip: str) -> str:
# 假设调用某个监控接口
return f"Server {ip} is online."
my_tool = Tool.from_function(
func=get_server_status,
name="ServerStatusChecker",
description="Returns the current server status for a given IP address."
)
将其加入 Agent 工具列表后,LLM 就可以智能调用:
python
Thought: I need to check if server 10.0.0.1 is up
Action: ServerStatusChecker
Action Input: 10.0.0.1
2、工具选择策略 (Tool Selection Strategies)
在 LangChain 的 Agent 框架中,工具选择策略(Tool Selection Strategies) 是指 Agent 如何在多个工具中智能选择合适的工具以完成任务。合理的选择策略是确保 Agent 准确、高效执行指令的关键。
🧠 工具选择的基本机制
Agent 在执行时会通过语言模型(如 GPT)进行如下思考:
python
Thought: 我需要从网络获取当前天气信息
Action: OpenWeatherMap
Action Input: "Beijing"
这个选择过程依赖于:
-
工具的描述(description)
-
语言模型的上下文理解能力
-
是否启用了增强策略(如 Routing、ReAct 等)

🧭 常见的工具选择策略
1️⃣ ReAct 模式(Reasoning + Acting)
结合推理与行动,LLM 先进行推理,然后决定是否需要调用工具。
优点:
-
透明、可解释(可查看 Agent 的思路)
-
可链式决策(多个工具连续调用)
2️⃣ Zero-shot Agent
LLM 直接根据描述选择工具,无需预训练示例。
适合工具少、任务简单的场景。
3️⃣ Multi-Tool Routing(多工具路由)
使用分类器/选择器组件,根据用户输入动态"路由"到合适的工具。
如 MultiPromptRouter
、ToolRouterChain
。
适用于:
-
工具较多
-
不同工具负责不同主题/任务
✅ 如何选择工具策略?
场景 | 推荐策略 |
---|---|
工具少、任务直白 | Zero-shot ReAct |
工具多、语义复杂 | Routing + ReAct |
对安全性要求高 | 添加规则/过滤器 |
强调可解释性 | ReAct + Intermediate Steps |
多 Agent 协作 | Planner + Executor 架构 |
四、LangChain Agent 的类型 (Types)
LangChain 的 Agent 提供了多种类型(Types),每种 Agent 都根据任务复杂度、响应方式、工具调用方式等维度进行了不同的设计。选择合适的 Agent 类型是构建智能 Agent 系统的关键一步。
🧠 Agent 类型概览(LangChain Agents Types)
Agent 类型 | 简介 | 适合场景 |
---|---|---|
ZeroShotAgent | 基于工具描述做一次性推理和执行 | 工具少、任务明确 |
ReactAgent | 推理(Reason)+ 行动(Act)结合,多轮推理 | 复杂任务,工具链调用 |
ConversationalAgent | 有记忆的对话型 Agent,适用于多轮交互 | 聊天机器人、助理型应用 |
ChatAgent (OpenAI Functions Agent) | 支持 Function Calling 的聊天模型(如 GPT-4) | 工具多样、接口规范化场景 |
PlanAndExecuteAgent | 拆解复杂任务 → 规划子任务 → 分步执行 | 长任务、多步骤、多工具 |
OpenAIAgent | 使用 OpenAI Function Calling 特性来调用工具 | API 调用标准明确,使用 GPT |
MRKL Agent | Multi-Reasoning with Knowledge & Language,结合工具和知识推理 | 多源信息处理场景 |
1、ZeroShotAgent
-
使用工具的描述,LLM 直接选择合适的工具。
-
无中间推理步骤(即"Zero-Shot")。
示例:
python
from langchain.agents import initialize_agent, AgentType
agent = initialize_agent(
tools=[calculator, search],
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
llm=llm
)
2、ReAct Agent
-
推理 + 行动循环,直到找到答案或达到终止条件。
-
每一步 Agent 会给出
Thought -> Action -> Observation
。
适合:
-
多工具协作
-
步骤依赖性强的任务
3、Conversational Agent
-
支持对话历史记忆(Memory),适合长时间互动的场景。
-
可以结合 ChatPromptTemplate 构造上下文。
适用场景:
-
虚拟助手
-
知识问答机器人
4、Chat Agent / OpenAIFunctionsAgent
-
支持 OpenAI 的 Function Calling 能力。
-
工具通过 JSON schema 注册,系统自动格式化调用。
优点:
-
格式明确
-
精度更高
-
强类型输入输出

5、Plan-and-Execute Agent
典型流程:
-
Planner 拆分子任务
-
Executor 顺序执行子任务
适合:
-
自动化操作流程
-
多工具组合任务(如写报告 + 翻译 + 发送邮件)
✅ 如何选择 Agent 类型
条件 | 推荐 Agent 类型 |
---|---|
简单任务,单工具 | ZeroShotAgent |
多工具推理,分步解题 | ReactAgent |
聊天交互,有历史记忆 | ConversationalAgent |
接口规范化场景(GPT4) | ChatAgent / OpenAIFunctionsAgent |
多步骤计划执行 | PlanAndExecuteAgent |
📌 总结
LangChain 的 Agent 架构是高度模块化的。我们可以通过组合不同的 Agent Type + 工具 + 记忆 + 规划器,构建出非常灵活且强大的智能体系统。
💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺
🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!