AI Agent入门案例
网盘下载
我用夸克网盘给你分享了「langchain资料包.zip」,点击链接或复制整段内容,打开「夸克APP」即可获取。
/137b3ZLmW0😕
网盘链接: 点击下载 langchain资料包.zip
AI Agent 入门案例:LangChain 从零搭建智能体
专栏: 实战教程
说明:Agent(智能体)= 能感知 → 思考 → 行动的 AI 程序。本篇用 LangChain 带你从零理解 Agent 原理,并完成一个可运行的入门案例:带工具调用的 ReAct Agent。
一、什么是 Agent?
一句话:
👉 Agent = 让 AI 自动帮你做事情。
| 对比 | 普通 LLM | Agent |
|---|---|---|
| 交互模式 | 你问一句,它答一句 | 自主规划、多步执行 |
| 能力边界 | 仅文本生成 | 可调工具、查数据、算数学 |
| 典型场景 | 聊天、写作 | 智能客服、自动化助手、数据分析 |
传统大模型不知道实时信息、不会精确计算、无法访问你的数据库。Agent 通过 Tool(工具) 扩展能力,通过 推理循环 决定调用顺序。
二、Agent 核心架构
┌──────────────┐
│ 用户输入 │
└──────┬───────┘
↓
┌──────────────┐
│ LLM │ ← 大脑:理解意图、做决策
└──────┬───────┘
↓
┌────────────┼────────────┐
↓ ↓ ↓
┌────────┐ ┌────────┐ ┌────────┐
│ Tool A │ │ Tool B │ │ Tool C │
│ 搜索 │ │ 计算 │ │ 时间 │
└────────┘ └────────┘ └────────┘
↓
┌──────────────┐
│ 整合结果输出 │
└──────────────┘
核心组件:
| 组件 | 作用 |
|---|---|
| LLM | 理解问题、规划步骤、生成回答 |
| Tools | 外部能力(搜索、计算、API 调用) |
| Agent | 决策逻辑:选哪个 Tool、何时停止 |
| AgentExecutor | 执行循环,控制最大迭代次数 |
三、ReAct 模式:最经典的 Agent
ReAct = Reasoning(推理)+ Acting(行动)
Agent 的每一步遵循:
Thought: 用户问了时间和计算,我需要两个工具
Action: get_current_time
Action Input:
Observation: 2026-07-02 15:30:00
Thought: 现在调用计算器
Action: calculate
Action Input: 100/7
Observation: 14.285714285714286
Thought: 我已经有足够信息了
Final Answer: 现在是 2026-07-02 15:30:00,100 除以 7 约等于 14.29
LangChain 内置 ReAct Prompt(hwchase17/react),开箱即用。
四、入门案例:三工具 Agent
4.1 环境准备
pip install langchain langchain-openai python-dotenv
.env:
OPENAI_API_KEY=your-deepseek-key
OPENAI_API_BASE=https://api.deepseek.com/v1
MODEL_NAME=deepseek-chat
4.2 定义 Tools
Tool 的 docstring 至关重要——Agent 靠它判断何时调用:
from datetime import datetime
from langchain.tools import tool
@tool
def get_current_time() -> str:
"""获取当前日期和时间"""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
@tool
def calculate(expression: str) -> str:
"""计算数学表达式,如 '2+3*4' 或 '100/7'"""
try:
allowed = set("0123456789+-*/.() ")
if not all(c in allowed for c in expression):
return "表达式包含不允许的字符"
return str(eval(expression))
except Exception as e:
return f"计算错误: {e}"
@tool
def search_knowledge(query: str) -> str:
"""搜索知识库,输入关键词"""
kb = {
"langchain": "LangChain 是 LLM 应用开发框架,支持 Chain/Agent/RAG",
"agent": "Agent 是能自主调用工具完成任务的 AI 程序",
"rag": "RAG 通过检索相关文档增强 LLM 回答质量",
}
for key, val in kb.items():
if key in query.lower():
return val
return "未找到相关信息"
4.3 组装 Agent
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain import hub
load_dotenv()
llm = ChatOpenAI(model=os.getenv("MODEL_NAME"), temperature=0)
tools = [get_current_time, calculate, search_knowledge]
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True, # 打印 Thought/Action/Observation
max_iterations=5, # 防止死循环
handle_parsing_errors=True,
)
result = executor.invoke({
"input": "现在几点?100除以7等于多少?另外 LangChain 是什么?"
})
print("\n最终回答:", result["output"])
4.4 运行
cd langchain资料包/04-LangChain常用代码示例/code
python 04_agent_tools.py
五、实战项目中的 Agent
资料包 langchain-rag-agent 项目将 Agent 封装为 HTTP 服务:
POST /api/agent/chat
{ "message": "现在几点?LangChain 是什么?" }
核心代码在 app/agent_service.py:
- 三个 Tool:
get_current_time/calculate/search_knowledge AgentService类封装 Executor,懒加载- 通过 FastAPI 对外提供 REST 接口
启动项目:
cd langchain资料包/05-AI项目实战案例源码/langchain-rag-agent
python main.py
# 访问 http://127.0.0.1:8000/docs 测试 /api/agent/chat
六、Agent vs Chain:什么时候用哪个?
| 场景 | 推荐方案 |
|---|---|
| 固定流程(翻译→总结) | Chain |
| 需要根据输入选工具 | Agent |
| 知识库问答 | RAG Chain |
| 复杂多步 + 工具调度 | Agent |
| 多 Agent 协作 | LangGraph(进阶) |
简单规则:步骤固定用 Chain,步骤动态用 Agent。
七、自定义 Tool 实战
7.1 调用 HTTP API
import requests
@tool
def fetch_weather(city: str) -> str:
"""查询指定城市的天气信息"""
# 替换为真实 API
return f"{city}今天晴,25°C,湿度 60%"
7.2 查数据库
@tool
def query_orders(user_id: str) -> str:
"""查询用户的最近订单,输入用户 ID"""
# 连接数据库查询
return f"用户 {user_id} 最近 3 笔订单:..."
7.3 Tool 编写规范
| 规范 | 说明 |
|---|---|
| docstring 清晰 | 描述功能 + 参数格式 + 示例 |
| 输入校验 | 过滤非法字符,防止注入 |
| 错误处理 | 返回可读错误信息,不要抛异常 |
| 单一职责 | 一个 Tool 只做一件事 |
| 返回字符串 | Agent 需要文本形式的 Observation |
八、常见问题
Q1:Agent 一直循环不停止?
设置 max_iterations=3~5,检查 Tool 是否返回了有效结果。
Q2:Agent 选错 Tool?
优化 Tool 的 docstring,名称要有语义(calculate 比 tool1 好)。
Q3:Agent 比 Chain 慢很多?
Agent 每步都要 LLM 推理,多轮 Tool 调用 = 多次 API 请求。简单任务优先用 Chain。
Q4:如何给 Agent 加 Memory?
在 AgentExecutor 外包装 Memory Chain,或使用 LangGraph 管理状态。
Q5:下一步学什么?
- 把
search_knowledge换成真实 RAG 检索 → RAG Agent - 学习 LangGraph 做多 Agent 协作
- 阅读同目录《LangChain 项目实战源码》
九、验收清单
| 序号 | 任务 | 通过标准 |
|---|---|---|
| 1 | 跑通 04_agent_tools.py | 终端打印 Thought/Action 链路 |
| 2 | 自定义 1 个 Tool | Agent 能正确调用 |
| 3 | 测试复合问题 | 一次对话调用多个 Tool |
| 4 | 启动实战项目 | Swagger 测试 /api/agent/chat |
| 5 | 理解 ReAct 格式 | 能读懂 verbose 输出 |
资料包下载
Agent 代码示例、实战项目、Prompt 模板均在网盘中:
04-LangChain常用代码示例/code/04_agent_tools.py ← 本篇入门案例
05-AI项目实战案例源码/langchain-rag-agent/ ← Agent HTTP 服务
03-Prompt工程100+模板合集/ ← Agent/RAG Prompt
本文配套 langchain资料包 Agent 模块,网盘链接见文首。
更多推荐



所有评论(0)