第01章 AI的进化:从问答机器到自主行动者
第01章 AI的进化:从问答机器到自主行动者
“ChatGPT是一本会说话的百科全书。Agent是一个会干活的员工。区别不在于智力,在于能否行动。” —— 某AI工程师
你打开ChatGPT,问它"如何用Python管理Cloudflare DNS记录"。它给了你一段详细的代码和步骤说明。
很有用。但代码还没运行。结果还没验证。下次你遇到同样的问题,你还得重新描述一遍。
这就是响应式AI的边界。
1.1 三代AI系统的演进
# 用代码来理解三代AI系统的区别
# ===== 第一代:规则系统(1950s-2010s)=====
class RuleBasedSystem:
"""
完全确定性的决策树
- 优点:可预测、可解释
- 缺点:无法处理规则外的情况
"""
def respond(self, user_input: str) -> str:
if "天气" in user_input:
return "请查看天气预报网站"
elif "帮助" in user_input:
return "输入'菜单'查看所有命令"
else:
return "抱歉,我不理解您的问题"
# ===== 第二代:对话式LLM(2020-至今)=====
class ConversationalLLM:
"""
强大的问答系统
- 优点:理解自然语言,知识广博
- 缺点:只能"说",不能"做";无持久记忆;每次从零开始
"""
def respond(self, user_input: str, context: list = None) -> str:
# 调用LLM API,返回文本响应
# 但不能执行代码,不能访问外部系统,不能保存状态
response = llm_api.call(
messages=context + [{"role": "user", "content": user_input}]
)
return response.text # 仅仅是文本
# ===== 第三代:自主Agent(2024-)=====
class AutonomousAgent:
"""
能够自主完成任务的AI系统
- 感知:理解用户目标(不只是当前问题)
- 思考:制定行动计划,选择工具
- 执行:调用真实的工具、API、命令
- 验证:检查结果,必要时重试或调整
- 学习:把成功的方法记为技能,下次复用
"""
def __init__(self):
self.tools = [dns_manager, email_sender, file_manager, terminal]
self.skills = SkillLibrary() # 持久化技能存储
self.memory = WorkingMemory() # 当前任务上下文
async def complete_task(self, goal: str) -> dict:
# 1. 感知:理解目标
plan = await self.think(goal)
# 2. 执行循环
results = []
for step in plan.steps:
tool = self.select_tool(step)
result = await tool.execute(step.params)
results.append(result)
# 3. 验证:结果不对就调整
if not self.verify(step, result):
await self.recover(step, result)
# 4. 学习:成功了就记下来
if all(r.success for r in results):
self.skills.save(goal, plan)
return {"status": "done", "results": results}
这三代系统的根本区别不是"聪明程度",而是行动能力:
| 维度 | 规则系统 | 对话式LLM | 自主Agent |
|---|---|---|---|
| 理解语言 | ❌ | ✅ | ✅ |
| 执行工具 | ✅(预设的) | ❌ | ✅(动态选择) |
| 持久记忆 | ✅(数据库) | ❌ | ✅(技能+知识库) |
| 处理意外 | ❌ | 文字建议 | ✅(自动重试/调整) |
| 自主规划 | ❌ | ❌ | ✅ |
1.2 什么让Agent成为"Agent"
一个LLM不管多聪明,只要它只能输出文字,就不是Agent。Agent的本质是把语言理解转化为真实世界的行动。
# Agent的核心循环(ReAct框架)
# Reasoning(推理)+ Acting(行动)的结合
async def agent_loop(goal: str, tools: list, max_steps: int = 10) -> str:
"""
这是所有现代Agent系统的核心模式
"""
messages = [
{
"role": "system",
"content": f"""你是一个自主Agent。
你有以下工具可以使用:{[t.description for t in tools]}
完成用户的目标,必要时多次使用工具。
每次行动前,先在<思考>标签中说明你的推理。"""
},
{"role": "user", "content": goal}
]
for step in range(max_steps):
# 1. 思考:LLM决定下一步
response = await llm.complete(messages, tools=tools)
# 2. 检查是否有工具调用
if response.tool_calls:
for tool_call in response.tool_calls:
# 3. 执行工具
result = await execute_tool(tool_call)
# 4. 把结果反馈给LLM
messages.append({
"role": "tool",
"content": str(result)
})
else:
# 没有更多工具调用 = 任务完成
return response.content
return "已达到最大步数限制"
注意这个循环的关键特征:
- LLM驱动决策:每一步做什么,由LLM根据当前状态判断
- 工具执行真实操作:不是模拟,是真正的DNS操作、文件写入、API调用
- 结果反馈:工具的输出会回到LLM,影响下一步判断
- 循环直到完成:不是一次就结束,而是持续行动直到目标达成
1.3 一个真实的对比:同一个任务的两种处理
场景:用户说"帮我把 blog.example.com 指向 1.2.3.4"
对话式LLM的处理:
用户:帮我把 blog.example.com 指向 1.2.3.4
ChatGPT:
以下是使用Cloudflare API添加DNS记录的步骤:
1. 登录Cloudflare Dashboard...
2. 选择你的域名...
3. 点击DNS设置...
4. 或者使用API:
curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records" \
-H "Authorization: Bearer {token}" \
-d '{"type":"A","name":"blog","content":"1.2.3.4"}'
(用户还需要:找zone_id、运行命令、验证结果)
自主Agent(Hermes)的处理:
# 用户发出指令后,Agent自动执行以下步骤:
步骤1: [思考] 需要添加DNS的A记录,先获取zone_id
步骤2: [执行] cf_dns.get_zone_id("example.com") → "abc123"
步骤3: [执行] cf_dns.add_record("blog", "A", "1.2.3.4", "abc123") → 成功
步骤4: [执行] cf_dns.verify("blog.example.com") → 解析到1.2.3.4 ✅
步骤5: [学习] 保存技能"add-dns-a-record"到技能库
输出:
"已完成。blog.example.com 现在解析到 1.2.3.4。
记录ID: record_xyz,生效时间约1-5分钟。"
用户的认知负担:前者需要你执行每一步;后者只需要说出目标。
1.4 为什么"现在"是Agent的时代
# 2020-2025年:Agent成立的四个技术条件都已就绪
AGENT_PREREQUISITES = {
"强大的推理能力": {
"状态": "✅ 已具备",
"代表": "GPT-4o, Claude 3.5, Qwen2.5-72B",
"关键": "LLM能够规划多步任务、处理工具输出、从失败中调整",
},
"标准化的工具调用": {
"状态": "✅ 已具备",
"代表": "OpenAI function calling, Anthropic tool_use",
"关键": "LLM和工具之间有了统一的通信语言",
},
"成熟的工具生态": {
"状态": "✅ 已具备",
"代表": "几乎所有服务都有REST API(Cloudflare、Stripe、GitHub...)",
"关键": "Agent可以接入真实世界的绝大多数服务",
},
"可负担的推理成本": {
"状态": "✅ 已具备",
"代表": "GPT-4o-mini:$0.15/1M tokens",
"关键": "一个Agent完成一项任务的成本降到了$0.01以内",
},
}
# 这四个条件在2023年底前后同时成立
# 这解释了为什么Agent在2024年突然"爆发"
本章小结
五个核心认知:
-
Agent ≠ 更聪明的Chatbot:区别在于行动能力,不在于对话质量;能回答"如何做"和能"自己去做"是两种完全不同的系统
-
Agent的本质是循环:感知 → 思考 → 执行 → 验证 → 学习,循环直到目标完成;而不是一问一答
-
工具是Agent的躯体:没有工具的LLM只能产出文字;工具让Agent能触碰真实世界(文件、API、数据库、命令行)
-
现在是Agent最好的时代:推理能力、工具调用标准、服务API、成本——四个条件在2024年同时成熟,Agent从实验室走向了生产
-
Agent改变的是你的认知负担:你只需要描述目标,而不是描述每一步;这是效率的量级差距,不是程度差距
核心行动:
# 今天就尝试:
# 打开你常用的LLM,给它一个需要"多步骤"的真实任务
# 观察它在哪个步骤"卡住"(通常是需要执行真实操作的地方)
# 那个卡点,就是Agent要解决的问题
本章提示词模板
模板一:探索Agent的能力边界
我有一个任务:[描述一个你工作中的复杂多步骤任务]
请分析:
1. 哪些步骤你(作为ChatGPT)可以直接帮我完成?
2. 哪些步骤需要我自己去操作?
3. 如果我有一个自主Agent,它需要哪些工具来完成这个任务?
4. 整个任务可能需要多少步?哪步最可能出错?
帮我理解:这个任务是否值得用Agent自动化?评估标准:
- 执行频率(每天/每周/偶尔)
- 步骤数(>5步就值得考虑)
- 出错代价(高代价需要人工确认)
模板二:从Chatbot到Agent的思维转换
我习惯于用ChatGPT来[描述你的使用场景]。
我想了解:如果我有一个自主Agent可以接入[你的工具列表],
同样的场景下,交互方式会如何变化?
请对比:
1. Chatbot模式:我需要说什么、做什么
2. Agent模式:我只需要说什么,Agent会自动做什么
3. 在Agent模式下,什么时候我仍然需要介入?
4. 在Agent模式下,最大的风险是什么?
用具体的例子说明,不要泛泛而谈。