【大模型】从零到一:构建 AI Agent 完全教程
🤖 从零到一:构建 AI Agent 完全教程
本教程面向所有人——无论你是完全不懂编程的新手,还是想快速落地的开发者。我们用费曼学习法,把复杂的 Agent 架构讲得像做番茄炒蛋一样简单。
一、先搞清楚三个核心概念
在动手之前,必须理解现代 Agent 架构中三个经常被混淆的词:Agent、Skills、MCP。
一句话版本
| 概念 | 类比 | 本质 |
|---|---|---|
| Agent(智能体) | 人类大脑(CEO) | 自主决策的运行时实体 |
| Skills(技能) | 手和脚(身体能力) | 代码层面封装的功能函数 |
| MCP(模型上下文协议) | USB-C 接口 | 连接外部工具的标准化协议 |
1. Agent 是什么?
Agent 不只是一个 API 调用,它是一个持续运行的决策循环:
接收目标 → 规划步骤 → 调用工具 → 观察结果 → 判断是否完成 → 循环
比喻:你告诉机器人厨师"做一顿三人份少盐的番茄炒蛋"。它会自己想:需要哪些食材?冰箱里有吗?怎么控制盐量?这就是 Agent——自己规划、自己做事、根据结果调整。
2. Skills 是什么?
Skills 是开发者为 Agent 编写的功能函数,紧耦合在 Agent 代码内部。
- 特点:本地运行、与框架深度集成、灵活性高
- 示例:一个
send_email(to, content)的 Python 函数,注册给 Agent 直接调用
3. MCP 是什么?
MCP(Model Context Protocol)是 Anthropic 推出的开放协议标准,让 Agent 能通过统一接口连接任意外部工具,就像 USB-C 接口一样——不管什么品牌的设备,插上就能用。
- 解耦:工具与 Agent 彻底分离,工具可独立运行甚至由第三方提供
- 标准化:任何兼容 MCP 的 Agent 都能调用任何 MCP Server
- 示例:运行一个
filesystem-mcp-server,Agent 通过协议说"读取/data/report.pdf",Server 执行并返回结果
三者协作示例:智能运维 Agent
任务:检查服务器日志,如果发现错误,就在 GitHub 创建 Issue。
| 组件 | 角色 | 实现 |
|---|---|---|
| Agent | 大脑 | 决定先调用 read_logs,再调用 create_github_issue |
| Skills | 内部肌肉 | read_logs 逻辑简单,写成内部 Python 函数直接注册 |
| MCP | 标准外设 | create_github_issue 需要复杂 OAuth,封装成独立 github-mcp-server |
到底要不要用 Skills 和 MCP?
| 场景 | 建议 |
|---|---|
| 简单 Chatbot,只需几个固定功能 | 直接写 Skills,不需要 MCP |
| 需要复用的内部业务逻辑 | 用 Skills(函数注册到框架) |
| 需要接入大量第三方工具(GitHub、Slack、数据库) | 用 MCP,即插即用 |
| 生产环境、面向生态 | Skills + MCP 混合,核心逻辑用 Skills,外部工具走 MCP |
二、Agent 的四个核心零件
无论用什么框架,一个 Agent 都由以下四部分构成:
零件 1:大脑(LLM + 规划能力)
给 Agent 一个语言模型,但不只是让它生成文字——要让它以结构化方式输出行动计划。
最常用的模式是 ReAct(Reason + Act):模型先"思考",再"行动",循环直到完成。
零件 2:手和脚(工具 / Skills / MCP)
| 类型 | 适用场景 | 示例 |
|---|---|---|
| 内部函数(Skills) | 简单、私有、低延迟 | get_user_from_db() |
| MCP Server | 复杂、可复用、第三方 | github-mcp-server |
零件 3:记忆(短期 + 长期)
- 短期记忆:当前对话的上下文,直接把历史消息塞给 LLM
- 长期记忆:跨会话信息(用户偏好、历史决策),存入向量数据库(如 Chroma、Pinecone),需要时检索
比喻:短期记忆是"刚才聊了什么",长期记忆是"你上次说过不吃香菜"。
零件 4:执行与反思循环
1. 接收输入(目标 + 当前状态)
2. 大脑思考:下一步做什么?
3. 调用工具(如果需要)
4. 观察工具返回结果
5. 判断:目标达成了吗?
├── 未达成 → 回到第 2 步
└── 达成 → 返回最终答案
比喻:就像修自行车——看哪里坏(观察)→ 拆轮胎(行动)→ 查内胎(观察)→ 补漏(行动)→ 打气测试(观察)→ 修好为止。
三、三条构建路线,按需选择
🛤️ 路线 A:完全无代码(拖拽平台)
适合:完全不会编程,想快速做出能用的助手。
推荐平台对比
| 平台 | 优点 | 缺点 | 代码量 |
|---|---|---|---|
| Coze(扣子) | 最简单,支持发布到微信/飞书 | 复杂逻辑需学习 | 0 行 |
| Dify.ai | 工作流可视化,逻辑更灵活,可自托管 | 定制工具需少量 API 配置 | 0 行 |
| Flowise | 基于 LangChain,可构建复杂 Agent | 界面偏技术向 | 0 行 |
| OpenAI Assistants Playground | 模型强,内置代码解释器/文件检索 | 自定义工具需少量代码 | 0~5 行 |
推荐入门路径
新手 → Coze 注册 → 创建 Bot → 勾选插件(天气/搜索) → 发布到微信
↓
进阶 → Dify 工作流 → 拖拽节点编排复杂逻辑
🛤️ 路线 B:让大模型帮你写代码(AI 辅助编程)
适合:愿意运行代码,但不想自己写循环和工具逻辑。
这条路线的核心思路是:你用自然语言写需求,AI 生成代码,你负责运行和反馈。
第一步:选定框架
推荐初学者使用 LangChain——生态最全,模型训练数据最多,生成质量最稳定。
第二步:写好需求提示词
一份有效的提示词必须包含:
- Agent 目标:它是做什么的?
- 工具列表:需要哪些外部能力?
- 记忆需求:是否需要记住历史?
- 交互方式:命令行?Web API?
- 特殊逻辑:有没有条件判断、优先级规则?
模板示例(直接复制修改):
请用 Python 和 LangChain 帮我构建一个 Agent。
功能:用户输入城市名,Agent 先查询该城市天气,
根据天气推荐穿衣建议,最后将结果发到用户邮箱。
需要实现:
- 使用 create_react_agent 方法
- 工具1:get_weather(调用 wttr.in 公共 API)
- 工具2:send_email(使用 SMTP 发送文本邮件)
- 记忆:短期记忆(对话历史)即可
- 运行方式:命令行交互
请生成完整 Python 代码,包含依赖安装说明和环境变量配置说明。
第三步:运行、报错、让 AI 修复
运行代码 → 报错 → 复制错误信息发给 AI → AI 返回修复版 → 再运行
一次迭代通常只需 2~3 轮就能跑通。
第四步:逐步添加高级功能
每次只加一个功能,保持代码可控:
基础 Agent 跑通
↓
加长期记忆(Chroma 向量库)
↓
接入 MCP 工具(文件读取、数据库查询)
↓
改造为多 Agent 协作(AutoGen)
生成的代码大致结构
# 1. 定义工具
@tool
def get_weather(city: str) -> str:
"""获取指定城市的天气"""
response = requests.get(f"https://wttr.in/{city}?format=%C+%t")
return response.text.strip()
@tool
def send_email(recipient: str, subject: str, body: str) -> str:
"""发送邮件"""
# SMTP 发送逻辑(使用环境变量)
...
return "邮件发送成功"
# 2. 创建 Agent
llm = ChatOpenAI(model="gpt-4o", temperature=0)
agent = create_react_agent(llm, tools=[get_weather, send_email], prompt=prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 3. 运行循环(由框架管理)
result = executor.invoke({"input": user_input})
你不需要手写循环,框架自动帮你管理「思考 → 调用 → 观察 → 再思考」的全过程。
🛤️ 路线 C:从零手写(深度学习)
适合:想彻底理解原理,愿意多花时间。
核心是自己写 while 循环,手动管理消息历史,调用 LLM API 并解析结构化返回。
优点:完全可控,理解透彻。
缺点:代码量大,容易遗漏边界条件。
建议先走路线 B,理解框架行为后,再考虑是否需要手写替代。
四、注意事项与最佳实践
安全与成本
- API 密钥:永远使用环境变量(
.env文件),不要硬编码在代码中 - 成本控制:设置 Agent 最大迭代次数(如
max_iterations=10),防止无限循环烧钱 - 工具错误处理:确保每个工具函数都有
try/except,避免一个工具报错让整个 Agent 崩溃
调试技巧
- 开启框架的
verbose=True,可以看到 Agent 完整的思考过程 - 将错误信息完整复制给 AI,包括调用栈,修复成功率更高
框架版本兼容
LangChain 更新频繁,若生成代码报 API 不存在的错误,在提示词中注明版本:
请使用 LangChain 0.2+ 的最新语法
五、总结:选择你的路径
你是谁?
│
├── 完全不会编程
│ └── → Coze 或 Dify(0 行代码,20 分钟跑起来)
│
├── 愿意运行代码,但不想手写逻辑
│ └── → 写需求 → 让 AI 生成 → 运行调试(AI 辅助编程路线)
│
└── 想深度掌控
└── → 先用框架理解原理,再考虑手写核心循环
记住最重要的一句话:
构建 Agent 的本质,是造一个能自己思考、自己动手、还能记住事情的程序。先把最小可运行版本跑起来,再一步步加功能。就像学做菜——先学会炒鸡蛋,再慢慢学调味、摆盘,最后才能开餐厅。
如有具体场景(客服助手、数据分析、自动化办公),可进一步定制需求提示词模板。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)