夜雨聆风学习资料网

ARTICLE · 1090127

AI Agent 系统:第1课:Foundations & Landscape

AI Agent 系统:第1课:Foundations & Landscape

第1课:Foundations & Landscape

课程周次:第1周(共10周)
学习时长:约2小时
难度等级:入门级


学习目标

编号
目标
可评测标准
LO1.1
区分「单体 LLM」与「Compound AI System」
能用生活比喻解释两者差异
LO1.2
绘制 Agent 架构图
能标注感知、推理、行动、环境四大组件
LO1.3
识别三大工程挑战
能列举任务分解、数据管理、评测设计

1. 为什么需要 Agent?LLM 不够用吗?

生活比喻 🏠

LLM(大型语言模型)像一个**「超级大脑」**——知识渊博,但只能思考,不能行动。

就像一个人知道所有食谱,但:

  • ❌ 不会自己动手做饭
  • ❌ 不知道今天的天气
  • ❌ 无法帮你订外卖

技术现实 🔧

LLM 的本质是**「下一个 token 预测」**,它无法:

局限
具体表现
示例
无法访问实时信息
不知道今天的天气、股价、新闻
用户问「今天北京天气」→ LLM 不知道
无法执行外部操作
不能帮你发邮件、查数据库
用户说「帮我发邮件」→ LLM 无法执行
无法处理多步骤任务
中间出错无法回滚
长任务中途失败,只能从头来

2. 什么是 Compound AI System?

传统做法 vs 复合做法

传统(LLM 即一切):
┌─────────┐      ask_LLM("天气")      ┌─────────┐
│  用户   │ ────────────────────────→ │   LLM   │ ───→ "我不知道"
└─────────┘                           └─────────┘

复合(LLM + 工具):
┌─────────┐                           ┌─────────┐
│  用户   │ ────────────────────────→ │   LLM   │ ───→ 调用天气API
└─────────┘                           └─────────┘        │
                                                              ↓
                                                        ┌─────────┐
                                                        │ 天气API │
                                                        └─────────┘
                                                              │
                                                              ↓
                           ┌─────────┐   ┌─────────┐
                           │   LLM   │ ← │ 结合数据│
                           └─────────┘   └─────────┘
                                  │
                                  ↓
"今天晴,25度"

通俗比喻 🏥

Compound AI System 就像一个**「医院」**:

医院 ≠ 只有医生
医院 = 分诊台 + 化验科 + 药房 + 护士 + 医生
           ↓        ↓       ↓       ↓      ↓
         分类    检测    取药    执行   诊断

每个部门各司其职,医生(LLM)只负责最终诊断,其他工作由专业部门完成。


3. Agent 架构图

┌─────────────────────────────────────────────────────────────┐
│                        AI Agent                              │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│    ┌─────────┐                                              │
│    │   用户   │                                              │
│    └────┬────┘                                              │
│         │ 输入                                               │
│         ▼                                                    │
│    ┌─────────┐     「感知」                                 │
│    │          │  ← 理解用户意图、提取关键信息                  │
│    └────┬────┘                                              │
│         │                                                    │
│         ▼                                                    │
│    ┌─────────┐     「推理」                                 │
│    │          │  ← 调用 LLM、制定行动计划                     │
│    └────┬────┘                                              │
│         │                                                    │
│         ▼                                                    │
│    ┌─────────┐     「行动」                                 │
│    │          │  ← 调用工具、执行操作                          │
│    └────┬────┘                                              │
│         │                                                    │
│         ▼                                                    │
│    ┌─────────┐     「环境反馈」                             │
│    │          │  ← 观察结果、更新状态                         │
│    └────┬────┘                                              │
│         │                                                    │
│         └──────────→ 循环直到任务完成                        │
│                                                              │
└─────────────────────────────────────────────────────────────┘

四个核心组件

组件
职责
类比
感知 (Perception)
接收输入,理解意图
人的眼睛和耳朵
推理 (Reasoning)
分析问题,制定计划
人的大脑
行动 (Action)
执行操作,调用工具
人的手和脚
环境 (Environment)
提供反馈,更新状态
周围的世界

4. 三大工程挑战

构建 Agent 系统有三个核心挑战:

4.1 任务分解(Task Decomposition)

问题:如何把「写报告」拆成「查资料→整理→写作→检查」?

类比:像「写菜谱」——把「做一顿饭」分解成买菜、洗菜、切菜、炒菜等可执行步骤。

常见分解策略:

  • 顺序分解:按步骤依次执行
  • 并行分解:多个子任务同时执行
  • 层级分解:大任务分解为小任务,小任务再分解

4.2 数据管理(Data Management)

问题:如何让 Agent 获得准确、及时、相关的知识?

挑战:

  • 实时性:天气、股价等实时数据
  • 准确性:避免过时或错误信息
  • 相关性:找到最有用的一小部分

解决方案:RAG(检索增强生成)——像给 LLM 一个「参考资料袋」。

4.3 评测设计(Evaluation)

问题:如何衡量 Agent 的输出质量?如何构建可靠的 Benchmark?

类比:像「质检流水线」——需要明确的「质量标准」和「检测方法」。

评测维度:

  • 正确性:输出是否正确?
  • 效率:用了多少步/多少时间?
  • 安全性:是否会产生有害输出?

5. 从零实现:最小 Agent Loop

核心概念

Agent Loop 是 Agent 的核心执行机制:

感知 → 推理 → 行动 → 观察 → [循环]

代码实现

"""
最小可运行的 Agent Loop
核心:感知 → 推理 → 行动
纯 Python 实现,无框架依赖
"""


from dataclasses import dataclass, field
from typing import List, Callable, Dict
from enum import Enum


class MessageRole(Enum):
"""消息角色"""
    SYSTEM = "system"
    USER = "user"
    ASSISTANT = "assistant"


@dataclass
class Message:
"""消息"""
    role: MessageRole
    content: str


@dataclass
class AgentState:
"""Agent 状态"""
    messages: List[Message] = field(default_factory=list)
    iteration: int = 0


class MinimalAgent:
"""
    最简单的 Agent Loop
    核心流程:接收输入 → 调用 LLM → 返回响应
    """


def __init__(
        self,
        llm: Callable,
        max_iterations: int = 10
):
self.llm = llm
self.max_iterations = max_iterations
self.state = AgentState()

def step(self, user_input: str) -> str:
"""
        执行一步 Agent Loop

        1. 感知:将用户输入加入消息历史
        2. 推理:调用 LLM 生成响应
        3. 行动:返回响应
        """

# 1. 感知
self.state.messages.append(
            Message(MessageRole.USER, user_input)
        )

# 2. 推理:调用 LLM
        messages = [
            {"role": m.role.value, "content": m.content}
for m in self.state.messages
        ]
        response = self.llm(messages)

# 3. 行动:记录并返回响应
self.state.messages.append(
            Message(MessageRole.ASSISTANT, response)
        )
self.state.iteration += 1

return response

def run(self, user_input: str) -> str:
"""运行 Agent 直到得到最终回答"""
self.state = AgentState()  # 重置状态

for _ in range(self.max_iterations):
            response = self.step(user_input)

# 简单终止条件:检查响应是否包含完成标记
if "[完成]" in response or "任务完成" in response:
return response

return "已达到最大迭代次数"


# ============== 使用示例 ==============

def mock_llm(messages: List[Dict]) -> str:
"""模拟 LLM 响应(用于测试)"""
    last_msg = messages[-1]["content"]
return f"Agent 思考:我收到了 '{last_msg[:30]}...',正在考虑下一步..."


def real_llm_call(messages: List[Dict]) -> str:
"""真实的 LLM 调用示例(使用 requests)"""
import os
import requests

    api_key = os.environ.get("OPENAI_API_KEY", "")
if not api_key:
return "请设置 OPENAI_API_KEY 环境变量"

    response = requests.post(
"https://api.openai.com/v1/chat/completions",
        headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
        },
        json={
"model": "gpt-4o-mini",
"messages": messages,
"temperature": 0.7
        }
    )

if response.status_code == 200:
return response.json()["choices"][0]["message"]["content"]
else:
return f"API 调用失败: {response.text}"


# 测试
if __name__ == "__main__":
# 使用模拟 LLM 测试
    agent = MinimalAgent(llm=mock_llm)
    result = agent.run("请介绍一下你自己")
print(f"Result: {result}")

运行步骤

  1. 保存代码到 minimal_agent.py
  2. 运行 python minimal_agent.py
  3. 观察输出,理解 Agent Loop 流程

6. 练习题 🏋️

基础练习

  1. 运行代码:执行上面的 MinimalAgent,理解 Agent Loop 结构

  2. 添加日志:在 step() 方法中添加 print 语句,打印每次迭代的状态

  3. 添加终止条件:修改代码,当 Agent 说「任务完成」时停止循环

进阶练习

  1. 添加工具调用:修改代码,让 Agent 能说「需要调用工具X」,并解析出工具名和参数

  2. 添加记忆:修改 AgentState,让 Agent 能记住之前的对话内容

  3. 添加系统提示:添加 system_prompt 参数,让用户可以自定义 Agent 角色


7. 框架抽象与工程权衡

方案
抽象层级
优点
缺点
适用场景
从零实现
零
完全可控、深度理解、易调试
工作量大、需重复造轮子
学习目的、教学场景
DSPy
低
编程模型优雅、自动优化
概念新颖、文档较少
追求极致性能优化
LangGraph
中
状态机清晰、适合复杂流程
学习曲线陡峭、绑定框架
多步骤工作流(生产)
LangChain
高
组件丰富、生态完善
抽象过度、调试困难
快速原型验证

选择建议

  • 学习原理:从零实现,理解底层机制
  • 快速验证:LangChain,快速搭建原型
  • 生产系统:LangGraph,清晰的流程控制
  • 性能优化:DSPy,自动优化提示词

8. 真实工程案例:浏览器自动化 Agent

项目背景

构建一个能控制浏览器的 AI Agent,可以自动完成搜索、填表、点击等操作。

架构设计

用户请求 → Agent Brain (LLM) → Action Parser → Browser Controller → Browser
                                                      ↓
                                              Page State Extractor
                                                      ↓
                                              Observation (截图/DOM)

核心组件

组件
职责
Agent Brain
理解用户意图,决定下一步行动
Action Parser
解析 LLM 输出,提取行动指令
Browser Controller
控制浏览器执行操作
Page State Extractor
提取页面状态作为观察结果

开源参考

  • browser-use:浏览器控制 Agent 框架

9. 阅读清单

文献
推荐理由
Sutton & Barto. RL Introduction, Ch.2
Agent-Environment 交互模型的经典理论基础
Russell & Norvig. AIMA, Ch.2
AI Agent 定义与分类的必读章节

10. 关键术语

术语
英文
定义
Agent
Agent
能够在环境中感知、决策并执行行动的自主实体
Agent Loop
Agent Loop
Agent 的核心执行机制:感知 → 推理 → 行动 → 观察 → 循环
Compound AI System
Compound AI System
将 LLM 与其他组件(检索、工具、记忆)组合而成的系统
LLM
Large Language Model
基于 Transformer 架构的大规模语言模型

下一步

下一课将学习 LLMs for Builders:如何用 Python 调用 LLM API,实现结构化输出。

  • ⬜

有问题吗? 可以随时提问,我会帮你解答!

相关学习资料