第1章 智能体与生成式 AI¶
学习目标¶
- 理解 AI Agent(智能体)的定义与核心特征
- 区分 Agent 与 ChatGPT、传统助手、固定工作流的差异
- 掌握 Agent 的自主性、工具调用与记忆三大核心能力
- 使用 OpenAI Agents SDK 编写一个可运行的简单 Agent
- 识别 Agent 在企业场景中的实际价值
问题导入¶
2023 年以来,以 ChatGPT 为代表的生成式 AI 改变了人机交互方式,但它本质仍是"一问一答"的对话工具。当你需要 AI 真正完成一项任务——例如查询数据库、调用外部 API、连续多步推理并自主决策时,单纯的聊天模型就显得力不从心。AI Agent(智能体)正是在这种需求下崛起的新范式:它以大语言模型为"大脑",配合工具调用、记忆与规划能力,能够自主完成端到端的复杂任务。从智能客服自动处理工单,到财务 Agent 自动生成分析报告,Agent 正在从"对话玩具"走向"生产力工具"。本章将带你建立对 Agent 的完整认知,为后续学习 LLM、RAG、多智能体等主题打下基础。
核心概念¶
1. AI Agent 的定义¶
AI Agent 是一类以大语言模型(LLM)为核心推理引擎,能够感知环境、自主规划、调用工具并执行动作以完成目标的系统。Anthropic 在其《Building effective agents》一文中将其概括为:Agent 动态地决定自己的工作流程与工具使用,并在每一步保留对过程的控制权。与固定流水线不同,Agent 的执行路径由模型根据当前状态实时决策。
2. Agent 与 ChatGPT / 助手 / 工作流的区别¶
- ChatGPT 类对话产品:仅接收文本输入、输出文本,无法主动执行外部动作。
- AI 助手(Assistant):通常在对话基础上挂载少量工具(如检索、代码执行),但仍以人为主导,由用户发起每一步。
- 工作流(Workflow):由开发者预先编排好的固定流程,路径不可变,LLM 仅作为其中的节点。
- Agent:自主决定"下一步做什么",可循环执行"思考—行动—观察"直到完成目标。
3. Agent 的核心特征¶
- 自主性(Autonomy):无需人工逐步指令,能自行拆解任务、规划步骤。
- 工具调用(Tool Use):通过函数调用(Function Calling)操作外部世界,如查询数据库、调用 API、执行代码。
- 记忆(Memory):包括短期记忆(上下文窗口中的对话历史)和长期记忆(向量数据库存储的经验)。
- 规划(Planning):通过 ReAct、Plan-and-Execute 等策略分解复杂任务。
- 反馈循环:根据工具返回结果调整后续行动,形成闭环。
4. Agent 基本架构¶
一个典型的 Agent 系统包含四个组成部分: - 大脑(LLM):负责理解、推理与决策。 - 感知层:接收用户输入、工具返回、环境状态。 - 行动层:工具集合(函数、API、代码解释器)。 - 记忆层:上下文管理 + 向量存储。
5. ReAct 范式¶
ReAct(Reasoning + Acting)是 Agent 最经典的推理范式。模型在每一步先输出"思考"(Thought),再决定"行动"(Action),然后接收"观察"(Observation),循环往复直至给出最终答案。这种显式推理过程提升了结果的可解释性与准确性。
原理图¶
flowchart TD
User[用户指令] --> Brain[LLM 大脑]
Brain --> Think{思考与规划}
Think -->|决定行动| Tool[工具调用]
Tool --> Obs[观察结果]
Obs --> Memory[(记忆层)]
Memory --> Brain
Brain -->|任务完成| Answer[最终答案]
subgraph Agent核心
Brain
Think
Tool
Obs
Memory
end
图:AI Agent 高层架构,LLM 作为大脑驱动"思考—行动—观察"循环
示例代码¶
以下示例使用 OpenAI Agents SDK(openai-agents)创建一个具备工具调用能力的简单 Agent。
from agents import Agent, Runner, function_tool
import asyncio
@function_tool
def get_weather(city: str) -> str:
"""查询指定城市的天气信息。
Args:
city: 城市名称,例如 "北京"。
"""
# 模拟数据,实际可接入天气 API
weather_data = {"北京": "晴 25°C", "上海": "多云 28°C", "广州": "雷阵雨 30°C"}
return weather_data.get(city, f"{city} 暂无天气数据")
async def main() -> None:
"""运行一个简单的天气查询 Agent。"""
agent = Agent(
name="天气助手",
instructions="你是一个贴心的天气助手。当用户询问天气时,调用 get_weather 工具获取结果,并用自然语言回复。",
tools=[get_weather],
model="gpt-4o-mini",
)
result = await Runner.run(agent, "北京今天天气怎么样?")
print("Agent 回复:", result.final_output)
if __name__ == "__main__":
asyncio.run(main())
运行结果说明:Agent 会先调用 get_weather("北京") 得到"晴 25°C",再用自然语言组织成回答,例如"北京今天天气晴朗,气温约 25°C,适合出行。"整个过程展示了 LLM 自主决定调用工具的能力。
企业案例¶
案例 1:智能客服 Agent¶
某电商平台部署客服 Agent,集成订单查询、退款、物流追踪等工具。当用户反馈"我的订单还没到"时,Agent 自主调用订单系统 API 查询物流,若发现异常则自动创建工单流转给人工。上线后人工坐席工作量下降 40%,平均响应时间从 5 分钟缩短至 30 秒。
案例 2:财务分析 Agent¶
某集团财务部使用 Agent 自动生成月度经营分析报告。Agent 接入 ERP 数据库、Excel 文件与行业研报,按"取数—清洗—分析—绘图—撰写"的流程自主完成。原本需要 2 名分析师 3 天完成的工作,Agent 可在 2 小时内输出初稿,分析师只需做最终审阅。
案例 3:研发运维 Agent¶
某互联网公司构建 Ops Agent,监听告警后自动执行日志查询、定位根因、生成修复脚本并提 PR。Agent 把工程师从重复的排查工作中解放出来,MTTR(平均故障恢复时间)降低 55%。
常见问题¶
Q1:Agent 和 LangChain 是一回事吗? A:不是。LangChain 是开发框架,Agent 是一种系统形态。你可以用 LangChain 构建 Agent,也可以用 OpenAI Agents SDK、CrewAI 等其他框架。
Q2:有了 Function Calling 就等于有了 Agent 吗? A:不等价。Function Calling 是单次工具调用能力;Agent 强调的是自主循环——根据观察结果决定下一步,直到任务完成。
Q3:Agent 会不会"失控"无限循环? A:可能,因此需要在工程上设置最大迭代次数、超时、成本上限等护栏(guardrails),并对工具权限做最小化控制。
Q4:Agent 一定比固定工作流好吗? A:不一定。任务路径确定、对延迟敏感的场景,固定工作流更稳定高效;任务路径不确定、需要灵活决策的场景才适合 Agent。
面试题¶
1. 请用自己的话定义 AI Agent。 参考答案:AI Agent 是以 LLM 为推理引擎,能感知环境、自主规划、调用工具并执行动作以完成目标的系统,其核心在于"自主决策 + 反馈循环"。
2. Agent 与传统工作流(Workflow)的本质区别是什么? 答题要点:工作流路径由开发者预设,LLM 仅作为节点;Agent 路径由 LLM 动态决定,保留对过程的控制权,可循环执行直到完成。
3. 简述 ReAct 范式的执行流程。 参考答案:Thought(思考)→ Action(行动/调用工具)→ Observation(观察结果)→ 循环,直至 Final Answer。
4. 设计一个 Agent 时,如何防止它陷入无限循环? 答题要点:设置最大迭代次数、单次/总成本上限、超时时间;限制工具权限;增加终止判断条件。
练习题¶
- 概念辨析:列举你日常使用的 3 款 AI 产品,判断它们是"对话产品""助手"还是"Agent",并说明理由。
- 动手实践:基于本章示例代码,为天气 Agent 增加一个
get_time工具,使其能回答"现在几点"的问题,并测试多轮对话。 - 思考题:如果一个客服场景的工单分类规则已经非常稳定且明确,你会选择固定工作流还是 Agent?为什么?
小结¶
本章建立了对 AI Agent 的整体认知:Agent 是以 LLM 为大脑、具备自主性、工具调用与记忆能力的智能系统,区别于单纯的对话产品和固定工作流。ReAct 范式提供了"思考—行动—观察"的经典循环。后续章节将深入 Agent 的底层基石——大语言模型(LLM)、Token、Embedding、Prompt、RAG 与多智能体。延伸阅读推荐:Anthropic《Building effective agents》、OpenAI Agents SDK 官方文档、Lilian Weng 博客《LLM Powered Autonomous Agents》。