Day01-上午-AI-Agent完全入门
一文搞懂 AI Agent:从概念、原理到你的第一个可运行 Demo(入门篇)
适合人群:刚接触 AI Agent 的开发者 / 想系统理解 Agent 的产品与技术人员
📌 为什么人人都在聊 Agent?
如果你关注 AI 圈,会发现 Agent 这个词出现的频率高得吓人:OpenAI 发布 Agent SDK、Anthropic 提出 MCP 协议、各大厂都在推"智能体平台"。
但很多人对 Agent 的理解仍然模糊——它和 ChatGPT 有什么区别?和 RAG 是什么关系?为什么说它是"大模型的下一个形态"?
这篇文章会用最直白的方式,把 AI Agent 讲透,并带你写出第一个真正可运行的 Agent 代码。看完你会明白:Agent 不是玄学,它就是"会自己动脑、会自己动手的大模型"。
一、什么是 AI Agent?
1.1 一句话理解
AI Agent(智能体)= 大语言模型(大脑)+ 工具(手脚)+ 目标(使命)。
传统 ChatGPT 是"你问一句,它答一句"的被动问答;而 Agent 是给它一个目标,它自己规划步骤、调用工具、检查结果、修正方向,直到把任务做完的主动执行者。
1.2 一个生活化的比喻
把 AI 比作一个员工:
- ChatBot:像客服接线员——你问什么它答什么,从不主动做事;
- RAG:像配了资料库的客服——答得更准,但还是被动回答;
- Agent:像真正的项目经理——你交代"把三季度报表做出来",它会自己拆任务、查数据、写文档、检查格式,最后交付成品。
差别不在"聪明多少",而在是否具备自主完成任务的能力。
二、Agent vs ChatBot vs RAG vs 工作流
这是面试和文章里最高频的对比,一张表说清:
| 维度 | ChatBot(聊天机器人) | RAG(检索增强生成) | 工作流 Workflow | AI Agent |
|---|---|---|---|---|
| 驱动方式 | 单轮/多轮对话 | 对话 + 检索 | 预定义流程 | 目标驱动 |
| 是否自主规划 | ❌ | ❌ | ❌(流程写死) | ✅ |
| 是否调用外部工具 | ❌ | 仅检索 | 按固定顺序 | ✅ 按需自主 |
| 能否动态调整 | 不能 | 不能 | 不能 | ✅ 能反思纠错 |
| 典型场景 | 闲聊、客服 | 私域知识问答 | 固定业务流水线 | 复杂任务自动执行 |
一句话记忆:RAG 是给模型"喂资料",Agent 是给模型"派活"。
三、Agent 的四大核心要素
一个完整的 Agent,通常由四部分组成:
3.1 🧠 规划(Planning)
把大目标拆成小步骤。例如"帮我订三亚的行程"会被拆成:查机票 → 查酒店 → 排日程 → 生成清单。
常见规划方式:ReAct(边想边做)、Plan-and-Execute(先出完整计划再执行)、Reflexion(失败后自我反思重来)。
3.2 💾 记忆(Memory)
- 短期记忆:当前任务的上下文(对话历史、中间结果);
- 长期记忆:跨任务的知识沉淀(用户偏好、历史经验),通常用向量数据库存储。
3.3 🛠️ 工具(Tools)
Agent 的"手脚":搜索、调用 API、执行代码、读写数据库、发邮件……工具决定了 Agent 能做什么,也是本轮 AI Agent 浪潮的核心创新——让模型从"只会说"变成"会做"。
3.4 ⚡ 行动(Action)
把规划结果落地的过程:调用工具、获取反馈、判断是否完成,未完成则继续下一轮循环。
四、经典范式:ReAct(让 Agent 转起来的关键)
ReAct = Reasoning(推理)+ Acting(行动)交替进行。
它的循环本质上是:
用户目标
↓
模型思考(Thought):我现在该做什么?
↓
模型行动(Action):调用工具 / 查询资料
↓
观察结果(Observation):拿到工具返回
↓
(回到思考,直到认为任务完成)
↓
最终回答(Final Answer)
💡 原理出处:论文《ReAct: Synergizing Reasoning and Acting in Language Models》(Yao et al.)。
五、Agent 生态一览:框架与平台怎么选?
| 类别 | 代表 | 特点 | 适合谁 |
|---|---|---|---|
| 编程框架 | LangChain / LangGraph | 生态最全,编排灵活 | 有开发能力的团队 |
| 多智能体框架 | AutoGen / CrewAI | 让多个 Agent 协作 | 需要角色分工的场景 |
| 官方 SDK | OpenAI Agent SDK | 与 GPT 深度绑定,轻量 | 快速上手 OpenAI |
| 低代码平台 | Coze / Dify / 扣子 | 拖拽搭建,无需写码 | 非程序员 / 快速验证 |
选择建议:想学原理用 LangGraph,想快速落地用低代码平台,想深度定制自己写框架。
六、实战:写出你的第一个 Agent(附完整代码)
下面我们用 OpenAI 的 Function Calling(工具调用) 实现一个 Agent:它有一个"查天气"工具和一个"计算器"工具,用户一句话,Agent 自动决定调用哪个。
6.1 准备工作
pip install openai
并设置环境变量(或直接写进代码):
set OPENAI_API_KEY=你的Key # Windows
export OPENAI_API_KEY=你的Key # macOS / Linux
6.2 完整代码
from openai import OpenAI
import json
client = OpenAI() # 自动读取 OPENAI_API_KEY
# ---------- 工具 1:查天气 ----------
def get_weather(city: str) -> str:
"""模拟天气查询(真实项目可换成天气 API)"""
table = {"北京": "晴 26°C", "上海": "多云 29°C", "深圳": "雷阵雨 31°C"}
return table.get(city, f"暂无 {city} 的天气数据")
# ---------- 工具 2:计算器 ----------
def calculator(expr: str) -> str:
"""计算数学表达式(演示用,生产环境请勿直接使用 eval)"""
return str(eval(expr))
# ---------- 向模型声明可用工具 ----------
TOOLS = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询指定城市的天气情况",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string", "description": "城市名,如:北京"}},
"required": ["city"],
},
},
},
{
"type": "function",
"function": {
"name": "calculator",
"description": "计算数学表达式",
"parameters": {
"type": "object",
"properties": {"expr": {"type": "string", "description": "数学表达式,如:23*47"}},
"required": ["expr"],
},
},
},
]
def run_agent(user_input: str) -> str:
"""Agent 主循环:思考 -> 调工具 -> 观察 -> 直到给出最终回答"""
messages = [{"role": "user", "content": user_input}]
for _ in range(10): # 最多迭代 10 轮,防止死循环
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
tools=TOOLS,
)
msg = resp.choices[0].message
# 模型没有要求调用工具 => 任务完成
if not msg.tool_calls:
return msg.content
# 先把模型的"调用请求"加入对话历史
messages.append(msg)
# 逐个执行模型请求的工具调用
for call in msg.tool_calls:
name = call.function.name
args = json.loads(call.function.arguments)
print(f"🤖 Agent 调用工具:{name}{args}")
if name == "get_weather":
result = get_weather(args["city"])
elif name == "calculator":
result = calculator(args["expr"])
else:
result = "未知工具"
# 把工具执行结果回传给模型
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": str(result),
})
return "已达最大迭代次数,任务未完成。"
if __name__ == "__main__":
answer = run_agent("北京天气怎么样?顺便帮我算一下 23*47 等于多少")
print(f"🤖 最终回答:{answer}")
6.3 运行效果
🤖 Agent 调用工具:{'city': '北京'}
🤖 Agent 调用工具:{'expr': '23*47'}
🤖 最终回答:北京天气晴朗,气温 26°C。
另外,23*47 的结果是 1081。
注意观察:我们全程没有告诉模型"先查天气再计算",是 Agent 自己判断需要哪个工具、按什么顺序调用——这就是"自主性"最直观的体现。
6.4 两点安全提醒
eval有代码注入风险,仅用于演示。生产环境请改用ast.literal_eval或专用解析库;- 真实项目中,工具函数需要做权限控制与入参校验。
七、Agent 能干什么?典型应用场景
- 🛒 电商导购:理解需求 → 搜索比价 → 推荐下单;
- 📊 数据分析:查库 → 生成图表 → 输出分析结论;
- 💻 编程助手:读代码 → 定位 bug → 改代码 → 跑测试;
- 📅 日程管理:读邮件 → 排日程 → 自动发送提醒;
- 🏥 医疗/政务:表单填写、材料初审、智能导办(我也在持续跟进这类落地案例)。
八、写给新手的三个建议
- 先跑通一个 Demo,再研究原理:动手把上面的代码跑起来,比看十篇文章都有用;
- 别一上来就上多 Agent:单体 Agent 都没跑稳,多个 Agent 协作只会放大混乱;
- 把 Agent 当作"需要被管理的新员工":好 Agent = 好工具 + 好指令 + 好流程,而不是模型越强越好。
九、常见误区 Q&A
1. “Agent 是不是就是套了提示词的高级 ChatBot?”
不全是。核心差别在"闭环":ChatBot 只输出文字,而 Agent 能调用工具、拿到反馈、修正动作,形成完整的执行闭环——这是"会答"与"会做"的分水岭。
2. “做 Agent 是不是必须用 GPT?”
不是。只要模型支持 Function Calling / 工具调用(国产开源模型同样支持),都可以作为 Agent 的"大脑"。换模型只影响聪明程度,不改变 Agent 的运作机制。
3. “多 Agent 一定比单 Agent 强吗?”
不一定。任务简单时,单 Agent 更快、更省、更可控;只有任务复杂、需要不同角色专长协作时,多 Agent 的价值才体现出来。
✅ 总结
- Agent = 大脑(LLM)+ 手脚(工具)+ 使命(目标),核心是自主规划与执行;
- 和 ChatBot / RAG / 工作流的本质区别在于是否自主决策;
- 四大要素:规划、记忆、工具、行动;ReAct 是最核心的运转范式;
- 通过 Function Calling,十几行代码就能让模型"动手干活"。
📌 觉得有用就 点赞 + 收藏 + 关注,更多 AI Agent 干货持续输出。
更多推荐



所有评论(0)