【LangChain Agent 】详解,构建自主决策的 LLM 应用

🐇明明跟你说过:个人主页

🏅个人专栏:《深度探秘: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))

1、常用工具介绍

2、工具选择策略 (Tool Selection Strategies)

[四、LangChain Agent 的类型 (Types)](#四、LangChain Agent 的类型 (Types))

1、ZeroShotAgent

[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 能干什么?

  1. 调用搜索引擎、数据库、API

    比如搜索维基百科、调用企业内部系统、查询 SQL 数据库等。

  2. 使用工具链完成任务

    例如根据你的邮件内容自动安排日程、写日报、翻译并上传到系统等。

  3. 多步骤任务分解

    比如你让它"帮我查一下最近热播的电影,并找个地方订票",它能拆解成:

    • 🛒 自动下单订票

    • 📅 查你空闲时间

    • 🎯 选择其中一个

    • 🔍 搜索热播电影


🛠️ 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 策略为例:

  1. 用户输入任务

    例:请查一下明天北京天气,并换算成华氏温度

  2. Prompt 组合

    LLM 会接收到一串模板:任务描述 + 已执行步骤 + 工具描述 + 思考模版(例如 "Thought: ...")

  3. LLM 生成决策

    产生内容如:

    复制代码
    Thought: 我需要先搜索北京天气
    Action: search
    Action Input: 北京 明天天气
  4. Agent 调用对应 Tool(如 search)

  5. 获取返回结果并再次交给 LLM

  6. LLM 判断是否结束,或者继续调用其他工具

  7. 输出最终答案给用户

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 在以下任一条件下终止:

  1. 输出中包含 Final Answer

  2. 达到最大循环次数(如 5-10 次)

  3. 工具调用失败、抛出异常

  4. 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"

这个选择过程依赖于:

  1. 工具的描述(description)

  2. 语言模型的上下文理解能力

  3. 是否启用了增强策略(如 Routing、ReAct 等)

🧭 常见的工具选择策略

1️⃣ ReAct 模式(Reasoning + Acting)

结合推理与行动,LLM 先进行推理,然后决定是否需要调用工具。

优点:

  • 透明、可解释(可查看 Agent 的思路)

  • 可链式决策(多个工具连续调用)

2️⃣ Zero-shot Agent

LLM 直接根据描述选择工具,无需预训练示例。

适合工具少、任务简单的场景。

3️⃣ Multi-Tool Routing(多工具路由)

使用分类器/选择器组件,根据用户输入动态"路由"到合适的工具。

MultiPromptRouterToolRouterChain

适用于:

  • 工具较多

  • 不同工具负责不同主题/任务


✅ 如何选择工具策略?

场景 推荐策略
工具少、任务直白 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

典型流程:

  1. Planner 拆分子任务

  2. Executor 顺序执行子任务

适合:

  • 自动化操作流程

  • 多工具组合任务(如写报告 + 翻译 + 发送邮件)


✅ 如何选择 Agent 类型

条件 推荐 Agent 类型
简单任务,单工具 ZeroShotAgent
多工具推理,分步解题 ReactAgent
聊天交互,有历史记忆 ConversationalAgent
接口规范化场景(GPT4) ChatAgent / OpenAIFunctionsAgent
多步骤计划执行 PlanAndExecuteAgent

📌 总结

LangChain 的 Agent 架构是高度模块化的。我们可以通过组合不同的 Agent Type + 工具 + 记忆 + 规划器,构建出非常灵活且强大的智能体系统。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

相关推荐
Stara05113 分钟前
YOLO11改进——融合BAM注意力机制增强图像分类与目标检测能力
人工智能·python·深度学习·目标检测·计算机视觉·yolov11
movigo7_dou8 分钟前
关于深度学习局部视野与全局视野的一些思考
人工智能·深度学习
itwangyang52021 分钟前
AIDD-人工智能药物设计-大语言模型在医学领域的革命性应用
人工智能·语言模型·自然语言处理
热心网友俣先生35 分钟前
2025年泰迪杯数据挖掘竞赛B题论文首发+问题一二三四代码分享
人工智能·数据挖掘
LitchiCheng1 小时前
MuJoCo 机械臂关节路径规划+轨迹优化+末端轨迹可视化(附代码)
人工智能·深度学习·机器人
前端小菜鸡zhc1 小时前
大模型之提示词工程
人工智能
zy_destiny1 小时前
【非机动车检测】用YOLOv8实现非机动车及驾驶人佩戴安全帽检测
人工智能·python·算法·yolo·机器学习·安全帽·非机动车
win4r1 小时前
🚀多维度测评OpenAI最新GPT-4.1模型!百万token上下文窗口!编程能力和指令遵循能力大幅提升!Cline+GPT-4.1十分钟零代码开发macOS
chatgpt·openai·ai编程
that's boy1 小时前
字节跳动开源 LangManus:不止是 Manus 平替,更是下一代 AI 自动化引擎
运维·人工智能·gpt·自动化·midjourney·gpt-4o·deepseek