Gellow 旋转头像
One Summer's Day
钢琴 · 轻音乐
0:000:00
随机遍历 · 6 首
Insert Coin To Load
M
Loading Markdown

正在渲染文章与目录。

markdown / full reading page

AI Agent:从基本概念到工程化落地

系统梳理 AI Agent 的核心概念、工作机制、架构组成、工具调用、Memory、RAG、MCP、多智能体、LangChain/LangGraph、评测、安全与工程化实践。

AI Agent

Agent 的本质是:让 LLM 进入一个“观察 → 决策 → 执行 → 再观察”的控制循环,并通过 Tool 与外部环境交互。

可以粗略抽象为:

text
Agent = LLM + Tools + State + Control Loop

工程化系统通常还会加入:

text
Prompt / Instructions
Memory
Planning
Guardrails
Observability
Checkpoint
Human-in-the-loop

1. Agent 与 Workflow

普通 LLM:

text
Input → LLM → Output

Agent:

text
Task

LLM

Decision
 ├─ Answer
 └─ Tool Call

   Observation

     LLM

核心区别不是“有没有调用工具”,而是模型是否参与下一步行为的动态决策

Workflow 的执行路径通常提前定义:

text
A → B → C

Agent 的执行路径则根据当前状态动态决定。

因此工程中通常:

text
确定性任务 → Workflow
开放 / 不确定任务 → Agent

实际项目往往采用混合方式:

text
Workflow

Agent Node

Workflow

这类架构也常被称为 Agentic Workflow。


2. Tool Calling

Tool Calling 是 Agent 最重要的基础能力之一。

模型并不直接执行函数,而是根据提供的 Tool Schema 生成结构化调用:

json
{
  "name": "get_weather",
  "arguments": {
    "city": "Harbin"
  }
}

程序执行:

python
result = get_weather("Harbin")

再把 Tool Result 交回模型继续推理。

完整过程:

text
User

LLM

Tool Call

Application

Tool

Observation

LLM

Final Answer

Tool 本质是 Agent 能调用的原子能力,例如:

text
Search
Database
Shell
Python
Browser
File System
GitHub
Email
API

单纯调用一次 Tool 不一定算完整 Agent。

典型 Agent 通常还具有:

text
多步执行
状态维护
动态工具选择
错误恢复
任务终止判断

3. Agent 的控制模式

ReAct

经典模式:

text
Reasoning → Action → Observation → Reasoning → ...

核心思想是:

推理和行动交替,而不是一次性规划完所有步骤。

Planning

复杂任务通常会先进行任务拆解:

text
Planner

Tasks

Executor

Result

执行过程中可以重新规划。

典型 Plan-and-Execute:

text
Plan → Execute → Evaluate → Replan

Planner 和 Executor 甚至可以使用不同模型:

text
Planner  → 强模型
Executor → 小模型

用于降低成本。

Reflection / Feedback

模型生成结果后进行检查,再根据反馈修改:

text
Generate

Evaluate

Fail?
 ├─ Yes → Revise
 └─ No  → Finish

代码 Agent 中:

text
Edit → Test → Error → Analyze → Edit

测试结果本身就是 External Feedback。


4. State

Agent 必须维护当前任务状态:

python
state = {
    "task": "...",
    "plan": [],
    "current_step": 0,
    "tool_results": [],
    "context": [],
    "final_answer": None
}

从状态机角度可以理解为:

text
State → Node → New State

Agent 的循环、分支、重试和恢复,本质上都依赖 State。

这也是 LangGraph 使用 Graph 描述 Agent 的原因:

text
A → B
B → C
B → D
D → B

相比普通线性 Chain,Graph 更适合表达:

text
Branch
Loop
Retry
Parallel
Interrupt

5. Memory

Agent Memory 可以粗略分为:

类型内容
Conversation Memory当前或历史对话
Semantic Memory用户信息、事实、知识
Episodic Memory曾经发生的事件与经历
Procedural Memory如何完成某类任务

Memory 不等于单纯把所有历史消息塞进 Context。

实际系统通常会结合:

text
Context Window
Database
Vector Database
Summary
Profile
Retrieval

长期记忆本质上是:

text
Write → Store → Retrieve → Inject Context

6. Agent + RAG

普通 RAG:

text
Query

Retriever

Documents

LLM

Agentic RAG 则将 Retriever 作为 Tool:

text
Agent

Need Knowledge?

Retriever Tool

Documents

Agent

进一步可以加入:

text
Query Rewrite
Search
Rerank
Evaluate
Retry

形成 Retrieval Loop。

所以:

text
RAG = 检索增强
Agentic RAG = Agent 控制检索过程

7. MCP 与 Skills

MCP

MCP(Model Context Protocol)用于统一 AI 应用连接外部工具和数据源的方式。

text
AI Host

MCP Client

MCP Server

External Service

MCP Server 内部仍然可以调用:

text
REST API
Database
Local Program
Filesystem

因此:

text
MCP ≠ API 的替代品
MCP ≈ AI 应用的统一适配层

Skill

Tool 通常是原子能力:

text
get_weather()
search_web()
run_shell()

Skill 是更高层的任务能力:

text
Research
Deploy
Travel Planning
Code Review

Skill 内部可以组合:

text
Prompt
Tools
Workflow
Knowledge
Rules

因此:

text
Tool  = 原子能力
Skill = 任务级能力

8. Multi-Agent

Multi-Agent 是将复杂系统拆成多个职责独立的 Agent。

例如:

text
Supervisor
 ├─ Research Agent
 ├─ Coding Agent
 └─ Reviewer Agent

适合处理:

text
工具很多
Context 很长
职责明显不同
任务可以并行
不同步骤需要不同模型

常见协作方式:

Supervisor

text
Supervisor
 ├─ Agent A
 ├─ Agent B
 └─ Agent C

Supervisor 负责调度。

Agent as Tool

一个 Agent 被另一个 Agent 当作工具调用:

text
Main Agent → Research Agent → Result

主 Agent 始终保持控制权。

Handoff

text
Agent A → Handoff → Agent B

任务控制权直接转交。

Sequential

text
Research → Writer → Reviewer

Parallel

text
       ┌→ Agent A
Task ──┼→ Agent B
       └→ Agent C

          Merge

Multi-Agent 并不是越多越好。

Agent 数量增加会带来:

text
成本
延迟
错误传播
上下文同步
调试复杂度

如果:

text
1 Agent + Tools

可以解决问题,就没必要拆成 Multi-Agent。


9. LangChain 与 LangGraph

LangChain 更像 LLM 应用开发工具箱,提供:

text
Models
Prompts
Tools
Retrievers
Vector Stores
Agents
Output Parsers

LangGraph 更偏向:

text
Agent Runtime / Orchestration

适合处理:

text
State
Graph
Loop
Branch
Checkpoint
Human-in-the-loop
Multi-Agent

可以简单理解为:

text
LangChain → 组件
LangGraph → 编排与运行

二者通常配合使用,而不是二选一。


10. Checkpoint 与 Human-in-the-loop

Checkpoint

复杂 Agent 运行时间较长时,需要保存状态:

text
State

Checkpoint

Crash

Restore

本质:

text
Checkpoint = Agent State Snapshot

Human-in-the-loop

高风险操作不应该完全交给 Agent:

text
删除文件
发送邮件
付款
生产环境部署
服务器重启

典型流程:

text
Agent proposes action

Interrupt

Human approval

Execute

11. Guardrails

Guardrails 用于限制 Agent 行为。

通常分为:

text
Input Guardrail
Output Guardrail
Tool Guardrail

其中 Tool Guardrail 尤其重要,例如:

text
Agent → delete_file("/")
Guardrail → DENY

生产级 Agent 通常不会单纯依赖 Prompt 来限制危险操作,而会在程序层增加:

text
Permission
Validation
Confirmation
Sandbox
Allowlist

12. Agent 工程化

实际项目关注的重点不只是模型效果。

还包括:

text
Cost
Latency
Reliability
Observability
Retry
Timeout
Permission
Logging
Evaluation

Agent 通常需要多次 LLM Call 和 Tool Call,因此成本与延迟明显高于普通 Chat。

优化方式通常包括:

text
小任务使用小模型
减少无意义 Agent Loop
限制最大步骤
缓存 Tool Result
Context 压缩
并行执行
Workflow 替代不必要的 Agent

生产系统的重要原则:

能用确定性代码解决的,就不要让 LLM 猜。


13. 一个典型 Agent 架构

text
                User

              API / UI

             Agent Runtime

        ┌─────────┴─────────┐
        ↓                   ↓
       LLM                State

   Tool Decision

 ┌──────┼───────┐
 ↓      ↓       ↓
Search Shell  Database
 └──────┼───────┘

   Observation

       LLM

     Response

复杂一些:

text
User

Router

Supervisor
 ├─ Research Agent
 ├─ Coding Agent
 └─ Data Agent

 Shared State / Memory

      Judge

      Result

14. 实际理解

Agent 并不是某个特定框架或者某种固定实现。

它更像一种系统设计方式:

text
LLM
 + Tools
 + State
 + Feedback Loop

能力逐渐增加时:

text
LLM

LLM + Tool Calling

Agentic Workflow

Single Agent

Multi-Agent System

实际工程不追求“Agent 化程度越高越好”,而是根据任务选择最简单可靠的结构。

最终判断可以浓缩成一句:

确定的部分交给程序,不确定的部分交给 LLM;让 LLM 决策,让工具负责真正执行。

Back To Note