Skip to content

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("北京今天天气怎么样?");

关键术语速查

术语英文解释
AgentAgent智能代理,能自主执行任务的AI系统
ReActReasoning + Acting思考与行动交替的Agent框架
ToolToolAgent可调用的外部功能
PlanningPlanning任务规划,将目标分解为步骤
MemoryMemory记忆系统,存储上下文和历史
ObservationObservation观察执行结果
TrajectoryTrajectoryAgent执行的完整路径记录

学习检验

概念理解

  1. Agent与传统AI应用的核心区别是什么?
  2. Agent的四大核心组件分别是什么?各有什么作用?
  3. 什么是ReAct框架?它如何工作?

实践思考

  1. 在你的业务场景中,哪些任务适合用Agent来完成?
  2. 如何设计一个安全可靠的Agent系统?

下一步学习


💡 记住:Agent是AI从"能说"到"能做"的关键进化,理解其核心原理是开发智能应用的基础。