🤖 从零到一:构建 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——生态最全,模型训练数据最多,生成质量最稳定。

第二步:写好需求提示词

一份有效的提示词必须包含:

  1. Agent 目标:它是做什么的?
  2. 工具列表:需要哪些外部能力?
  3. 记忆需求:是否需要记住历史?
  4. 交互方式:命令行?Web API?
  5. 特殊逻辑:有没有条件判断、优先级规则?

模板示例(直接复制修改):

请用 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 的本质,是造一个能自己思考、自己动手、还能记住事情的程序。先把最小可运行版本跑起来,再一步步加功能。就像学做菜——先学会炒鸡蛋,再慢慢学调味、摆盘,最后才能开餐厅。


如有具体场景(客服助手、数据分析、自动化办公),可进一步定制需求提示词模板。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐