Appearance
Agent基础概念
Agent是AI从"对话者"进化为"行动者"的关键突破
什么是AI Agent?
AI Agent(智能代理)是一种能够感知环境、自主决策、执行行动的AI系统。与传统的聊天机器人不同,Agent不仅能理解指令,还能主动调用工具、规划任务、执行复杂操作。
传统AI应用 AI Agent
↓ ↓
[用户输入] → [AI回复] [用户目标] → [Agent规划] → [工具调用] → [执行结果]
↓ ↓
被动响应 主动执行
↓ ↓
只能对话 能完成任务核心特征
| 特征 | 说明 | 示例 |
|---|---|---|
| 自主性 | 能独立完成复杂任务 | 自动搜索、分析、整理报告 |
| 工具使用 | 能调用外部工具和API | 搜索引擎、数据库、代码执行 |
| 规划能力 | 能分解复杂目标为子任务 | 将"做竞品分析"拆分为多个步骤 |
| 记忆能力 | 能记住历史交互和状态 | 记住用户偏好、任务进度 |
| 反思能力 | 能评估和改进自己的行为 | 发现错误后自动修正 |
Agent vs 传统AI应用
对比分析
┌─────────────────────────────────────────────────────────────┐
│ 能力对比 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 传统AI应用 AI Agent │
│ ─────────── ──────── │
│ • 单轮对话 • 多轮任务执行 │
│ • 只能生成文本 • 能调用工具执行操作 │
│ • 无状态 • 有记忆和状态管理 │
│ • 被动响应 • 主动规划和执行 │
│ • 固定能力 • 可扩展工具集 │
│ │
└─────────────────────────────────────────────────────────────┘实际案例对比
场景:帮我分析某公司的竞品情况
传统AI应用:
────────────────────────────
用户:帮我分析Apple的竞品情况
AI:Apple的主要竞品包括Samsung、Huawei、Xiaomi等...
(基于训练数据,可能过时)
AI Agent:
────────────────────────────
用户:帮我分析Apple的竞品情况
Agent:
1. [搜索] 获取Apple最新产品信息
2. [搜索] 获取主要竞品信息
3. [分析] 对比产品特性、市场份额
4. [整理] 生成结构化报告
5. [输出] 提供最新、准确的竞品分析Agent的核心组件
1. 大脑(Brain)
Agent的"大脑"是大语言模型(LLM),负责理解、推理和决策。
大脑的核心能力:
┌─────────────────────────────────────────┐
│ │
│ 理解能力 推理能力 │
│ • 理解用户意图 • 逻辑推理 │
│ • 理解任务目标 • 因果分析 │
│ • 理解上下文 • 决策判断 │
│ │
│ 规划能力 表达能力 │
│ • 任务分解 • 结果呈现 │
│ • 步骤排序 • 错误解释 │
│ • 资源分配 • 建议提供 │
│ │
└─────────────────────────────────────────┘2. 记忆(Memory)
记忆系统让Agent能够保持上下文和积累经验。
记忆类型:
────────────────────────────
短期记忆(Working Memory)
• 当前对话上下文
• 任务执行状态
• 临时变量存储
示例:记住用户刚才说的"重点关注价格"
长期记忆(Long-term Memory)
• 用户偏好设置
• 历史交互记录
• 知识库检索
示例:记住用户总是喜欢表格形式的输出
工作流程:
输入 → [短期记忆] → 处理 → [更新长期记忆]
↑
[检索长期记忆]3. 工具(Tools)
工具扩展了Agent的能力边界,让它能执行实际操作。
常用工具类型:
┌─────────────────────────────────────────┐
│ 工具类型 │ 功能 │ 示例 │
├─────────────────────────────────────────┤
│ 信息检索 │ 搜索网络信息 │ 搜索引擎 │
│ 数据处理 │ 处理结构化数据 │ 数据库查询 │
│ 代码执行 │ 运行代码 │ Python解释器│
│ 文件操作 │ 读写文件 │ 文件系统 │
│ API调用 │ 调用外部服务 │ 天气API │
│ 通信工具 │ 发送消息 │ 邮件发送 │
└─────────────────────────────────────────┘4. 规划(Planning)
规划系统负责将复杂任务分解为可执行的步骤。
任务分解示例:
────────────────────────────
用户目标:"帮我策划一次团建活动"
Agent规划:
Step 1: 了解团队情况
- 询问团队人数、预算、偏好
Step 2: 搜索活动方案
- 调用搜索工具查找本地活动
- 筛选符合预算的选项
Step 3: 制定详细计划
- 时间安排
- 预算分配
- 注意事项
Step 4: 输出方案
- 生成活动方案文档
- 提供备选方案Agent的工作流程
ReAct框架
ReAct(Reasoning + Acting)是最经典的Agent工作模式:
ReAct循环:
────────────────────────────
┌─────────┐
│ 开始 │
└────┬────┘
↓
┌────────────────────────────────────┐
│ │
│ Thought(思考) │
│ "我需要先搜索相关信息..." │
│ │
└────────────────┬───────────────────┘
↓
┌────────────────────────────────────┐
│ │
│ Action(行动) │
│ 调用search("Apple最新产品") │
│ │
└────────────────┬───────────────────┘
↓
┌────────────────────────────────────┐
│ │
│ Observation(观察) │
│ 获取搜索结果 │
│ │
└────────────────┬───────────────────┘
↓
┌──────────────┐
│ 任务完成? │
└──────┬───────┘
│
┌───────────┴───────────┐
↓ No ↓ Yes
继续循环 输出结果完整执行示例
任务:查询北京明天的天气并给出穿衣建议
──────────────────────────────────────────
Step 1:
Thought: 需要先获取北京明天的天气信息
Action: call_weather_api("北京", "tomorrow")
Observation: 晴天,气温15-25℃,风力3级
Step 2:
Thought: 已获取天气信息,现在分析穿衣建议
Action: analyze_clothing(temperature="15-25", weather="晴天")
Observation: 温度适中,建议穿轻薄外套
Step 3:
Thought: 已完成所有必要步骤,可以输出结果
Final Answer:
北京明天天气:晴天,气温15-25℃,风力3级
穿衣建议:温度适中,建议穿轻薄外套,早晚可加一件薄毛衣
──────────────────────────────────────────Agent的应用场景
按复杂度分类
简单Agent(单工具调用)
────────────────────────────
• 天气查询Agent
• 汇率转换Agent
• 简单问答Agent
中等Agent(多工具协作)
────────────────────────────
• 研究助理Agent(搜索+整理)
• 旅行规划Agent(查询+预订)
• 数据分析Agent(查询+分析+可视化)
复杂Agent(自主规划执行)
────────────────────────────
• 软件开发Agent(需求+编码+测试)
• 投资研究Agent(数据收集+分析+报告)
• 自动化运维Agent(监控+诊断+修复)行业应用
| 行业 | 应用场景 | Agent能力 |
|---|---|---|
| 客服 | 智能客服 | 知识库检索、工单创建、问题升级 |
| 金融 | 投资分析 | 数据收集、风险分析、报告生成 |
| 医疗 | 辅助诊断 | 症状分析、病历检索、建议生成 |
| 教育 | 学习助手 | 知识讲解、习题生成、进度跟踪 |
| 研发 | 编程助手 | 代码生成、调试、文档编写 |
Agent的关键挑战
技术挑战
1. 可靠性挑战
────────────────────────────
问题:Agent可能产生错误决策
原因:
• LLM的幻觉问题
• 工具调用失败
• 推理链错误
解决方案:
• 引入验证机制
• 人工审核关键步骤
• 错误重试和回退
2. 成本挑战
────────────────────────────
问题:多次LLM调用成本高
原因:
• 每步思考都需要调用
• 长任务消耗大量Token
解决方案:
• 优化提示词减少Token
• 缓存中间结果
• 选择性使用大模型
3. 延迟挑战
────────────────────────────
问题:多步骤执行耗时长
原因:
• 串行执行步骤
• 工具调用延迟
解决方案:
• 并行执行独立步骤
• 流式输出中间结果
• 预加载常用资源安全挑战
安全注意事项
Agent具有执行能力,需要特别注意安全控制:
安全风险:
────────────────────────────
• 权限滥用:Agent可能执行超出预期的操作
• 数据泄露:敏感信息可能被不当处理
• 工具滥用:恶意用户可能诱导Agent滥用工具
安全措施:
────────────────────────────
• 权限控制:限制Agent可调用的工具和操作
• 审计日志:记录所有Agent行为
• 人工确认:关键操作需要人工确认
• 沙箱执行:在隔离环境中执行高风险操作Agent开发入门
环境准备
bash
composer require openai-php/client最简单的Agent实现
php
<?php
// 引入自动加载文件
require_once __DIR__ . '/vendor/autoload.php';
use OpenAI\Client;
/**
* 简单Agent类
* 实现基础的Agent功能,支持工具调用
*/
class SimpleAgent
{
// OpenAI客户端实例
private Client $client;
/**
* 构造函数
* @param Client $client OpenAI客户端实例
*/
public function __construct(Client $client)
{
// 初始化客户端
$this->client = $client;
}
/**
* 运行Agent
* @param string $userInput 用户输入
* @return string Agent响应结果
*/
public function run(string $userInput): string
{
// 定义可用工具列表
$tools = [
[
// 工具类型
'type' => 'function',
'function' => [
// 工具名称
'name' => 'get_weather',
// 工具描述
'description' => '获取指定城市的天气',
// 参数定义
'parameters' => [
'type' => 'object',
'properties' => [
'city' => [
'type' => 'string',
'description' => '城市名称'
]
],
// 必填参数
'required' => ['city']
]
]
]
];
// 初始化消息列表
$messages = [
['role' => 'user', 'content' => $userInput]
];
// 调用OpenAI API
$response = $this->client->chat()->create([
'model' => 'gpt-4',
'messages' => $messages,
'tools' => $tools
]);
// 获取响应消息
$message = $response->choices[0]->message;
// 检查是否有工具调用
if (isset($message->toolCalls) && count($message->toolCalls) > 0) {
// 获取第一个工具调用
$toolCall = $message->toolCalls[0];
// 判断是否为天气查询工具
if ($toolCall->function->name === 'get_weather') {
// 解析工具参数
$args = json_decode($toolCall->function->arguments, true);
// 执行工具获取天气信息
$weatherInfo = $this->getWeather($args['city']);
// 添加工具调用消息到历史
$messages[] = $message->toArray();
// 添加工具执行结果
$messages[] = [
'role' => 'tool',
'tool_call_id' => $toolCall->id,
'content' => $weatherInfo
];
// 再次调用API获取最终响应
$finalResponse = $this->client->chat()->create([
'model' => 'gpt-4',
'messages' => $messages
]);
// 返回最终结果
return $finalResponse->choices[0]->message->content;
}
}
// 返回直接响应
return $message->content;
}
/**
* 获取天气信息
* @param string $city 城市名称
* @return string 天气信息JSON
*/
private function getWeather(string $city): string
{
// 返回模拟天气数据
return "{$city}今天晴天,气温20-28℃";
}
}
// 创建OpenAI客户端
$client = OpenAI::factory()
->withApiKey($_ENV['OPENAI_API_KEY'])
->make();
// 创建Agent实例
$agent = new SimpleAgent($client);
// 运行Agent并输出结果
echo $agent->run("北京今天天气怎么样?");关键术语速查
| 术语 | 英文 | 解释 |
|---|---|---|
| Agent | Agent | 智能代理,能自主执行任务的AI系统 |
| ReAct | Reasoning + Acting | 思考与行动交替的Agent框架 |
| Tool | Tool | Agent可调用的外部功能 |
| Planning | Planning | 任务规划,将目标分解为步骤 |
| Memory | Memory | 记忆系统,存储上下文和历史 |
| Observation | Observation | 观察执行结果 |
| Trajectory | Trajectory | Agent执行的完整路径记录 |
学习检验
概念理解
- Agent与传统AI应用的核心区别是什么?
- Agent的四大核心组件分别是什么?各有什么作用?
- 什么是ReAct框架?它如何工作?
实践思考
- 在你的业务场景中,哪些任务适合用Agent来完成?
- 如何设计一个安全可靠的Agent系统?
下一步学习
💡 记住:Agent是AI从"能说"到"能做"的关键进化,理解其核心原理是开发智能应用的基础。
