首页 / 文章 / 从目标到谨慎行动:AI智能体中的循环、验证与权限控制

从目标到谨慎行动:AI智能体中的循环、验证与权限控制

了解人工智能智能体如何通过计划-执行-观察循环将目标转化为工具调用,以及为何验证机制、自主程度和权限层级决定了它们的安全性。

2717 词

大多数人最初接触语言模型时,它们只是用于问答的机器:输入提示,输出回答,仅此而已。而智能体系统打破了这种模式。给定一个目标后,它们会进行规划、调用工具、检查结果,并持续执行直到任务完成。本指南将介绍循环机制、工具使用、内存管理以及多智能体架构,随后重点探讨在生产环境中最为重要的两点:验证智能体的工作成果以及限制其权限。

响应与实现目标

传统的聊天机器人只会进行单次处理:输入问题,模型生成答案,之后便没有其他动作。

User
 ↓
Question
 ↓
AI
 ↓
Answer

若向它询问“什么是机器学习?”,它只会给出解释,不会再有其他反应。而智能体则是以目标为导向的,通过一系列带有反馈的动作逐步实现该目标。

User
 ↓
Goal
 ↓
AI Agent
 ↓
Plan
 ↓
Use Tools
 ↓
Observe Results
 ↓
Take More Actions
 ↓
Complete Goal

像“分析这个数据集并生成报告”这样的请求必须分解为具体的步骤:

Read dataset
     ↓
Understand columns
     ↓
Clean data
     ↓
Analyze statistics
     ↓
Create graphs
     ↓
Find patterns
     ↓
Write report

简而言之,聊天机器人负责回答问题,而智能体则执行任务并在过程中不断调整。

什么才能让一个系统成为智能体?

目前并没有统一的定义。从实际应用角度来说:智能体接收任务、做出决策、使用可用工具、查看结果并选择后续行动,直至达成目标。其核心特征就是底部那个将控制权反馈上层的结构。

USER GOAL
                  ↓
             AI AGENT
                  ↓
               PLAN
                  ↓
          SELECT ACTION
                  ↓
              USE TOOL
                  ↓
             OBSERVE
                  ↓
             EVALUATE
                  ↓
          NEXT ACTION?
             ↙       ↘
           YES        NO
            ↓          ↓
        Continue     Finish

没有这个循环,系统就只能运行一次。有了它,系统就能从意外情况中恢复过来,这既是它的优势,也是它需要监督的原因。

思考、行动、观察循环

描述该循环最简单的思维模型就是“思考、行动、观察”。想象让一个智能体在你的预算范围内寻找最佳笔记本电脑并比较三个候选产品,其内部处理流程可能如下:

Goal
 ↓
Understand requirements
 ↓
Search for products
 ↓
Read results
 ↓
Compare specifications
 ↓
Check prices
 ↓
Evaluate options
 ↓
Generate recommendation

该智能体并非依靠训练记忆来撰写关于笔记本电脑的内容,而是查询真实来源,并根据查找结果给出推荐,正是这种与外部世界的交互使其有别于单纯的文本生成。

三个组成部分:模型、工具和状态

一个基本的智能体可以用三个组件来描述。

作为决策者的模型

通常是大型语言模型,它负责解读指令并决定下一步该做什么。

作为能力的工具

工具是智能体可以调用的外部能力,例如:

Search
Python
Calculator
Database
API
File system
Computer
Vision model

作为运行记录的状态

状态即智能体目前对任务所了解的信息。它可用于回答诸如此类的问题:

What did I search?
What did I find?
What have I already done?
What remains?

综合来看,这三个组成部分共同决定了智能体会采取的行动:

AI AGENT
                 │
      ┌──────────┼──────────┐
      ↓          ↓          ↓
    Model       Tools     Memory
      │          │          │
      └──────────┼──────────┘
                 ↓
              Actions

如需更深入地了解这些构成要素,可参阅我们关于智能体目标、工具、记忆及循环的指南。

为何工具如此重要

让模型计算938472乘以827391的结果,它或许能给出正确答案,但它是通过预测数字而非实际计算来得到结果的,因此计算器或Python更为可靠。智能体可以将任务交由他人处理:

User
 ↓
LLM
 ↓
"I need exact arithmetic."
 ↓
Calculator
 ↓
Result
 ↓
LLM
 ↓
Answer

模型无需亲自完成所有工作,它可以进行任务委派。

为输入选择合适的工具

智能体是如何从众多工具中挑选的?假设它能够使用所有这些工具:

Python
SQL
Search
Calculator
Vision Model
File Reader
Email API
Calendar

面对“查看这份销售报表并解释收入为何下降”的任务,系统会根据输入类型、数据结构及任务要求选择合适的工具:

Input = Spreadsheet
        ↓
Data = Tabular
        ↓
Task = Analysis
        ↓
Tool = Python/pandas

选定的工具会执行核心分析工作,并将结果反馈出来:

pandas
 ↓
Analyze sales
 ↓
Find patterns
 ↓
Return results

随后由人工解读这些结果。实际上,工具的选择在很大程度上取决于清晰的工具名称和描述,因为模型只能看到这些信息。

将多个工具串联为单一工作流程

以“分析我们的销售数据、制作图表并将报告通过邮件发送给我的经理”为例,该任务涉及分析、可视化、撰写和交付等多个环节:

Sales Dataset
     ↓
Python / pandas
     ↓
Statistical Analysis
     ↓
Matplotlib
     ↓
Create Charts
     ↓
LLM
     ↓
Write Report
     ↓
Email Tool
     ↓
Send Report

系统现在正在协调这一工作流程,每个环节的输出都会作为下一个步骤的输入,因此早期的错误会一直影响到最终的邮件发送。

通过任务分解进行规划

“为我的项目构建一个网站”这个目标太过庞大,无法一次性完成。优秀的智能体会将其拆解为有序的步骤:

Goal
 ↓
Understand requirements
 ↓
Create project structure
 ↓
Build frontend
 ↓
Build backend
 ↓
Connect database
 ↓
Run application
 ↓
Test
 ↓
Fix errors
 ↓
Deploy

这就是任务分解:将大目标转化为一系列较小的动作,每个动作都可以被执行并检查。

对故障作出反应而非仅报告故障

当出现问题时,这种循环机制就会发挥作用。假设智能体正在运行某些代码:

Write code
 ↓
Run code
 ↓
ERROR

聊天机器人只能报告错误,而智能体可以读取错误、修复代码后再尝试:

Write code
 ↓
Run code
 ↓
ERROR
 ↓
Read error
 ↓
Identify problem
 ↓
Modify code
 ↓
Run again
 ↓
SUCCESS

概括来说,这就是智能体循环机制,通过评估来制定新的计划:

┌──────────────┐
              │    PLAN      │
              └──────┬───────┘
                     ↓
              ┌──────────────┐
              │     ACT      │
              └──────┬───────┘
                     ↓
              ┌──────────────┐
              │   OBSERVE    │
              └──────┬───────┘
                     ↓
              ┌──────────────┐
              │   EVALUATE   │
              └──────┬───────┘
                     │
                     └──────→ PLAN AGAIN

能够重试的循环也可能会无限重试,因此实际系统会限制迭代次数。

各步骤之间的内存与连续性

如果没有内存机制,每个任务都得从零开始:

Task 1
 ↓
Forget
 ↓
Task 2
 ↓
Forget

通过保留状态,每个步骤都能在上一阶段的基础上继续推进:

Task 1
 ↓
Save result
 ↓
Task 2
 ↓
Use previous result
 ↓
Task 3

内存存在多种作用域:

  • 短期状态用于存储当前正在处理的任务中的信息。
  • 长期记忆在系统支持的情况下,可在多次交互之间保持信息。
  • 外部内存存在于模型之外,如数据库、文档、向量存储或文件中。

在执行当前步骤之前,智能体可能会查阅项目文档及之前的结果:

Agent
 ↓
Memory
 ↓
Project documents
 ↓
Previous results
 ↓
Current task

检索与动作的结合

检索增强生成(RAG)技术与智能体搭配得非常自然。为了从公司内部文档中获取答案,智能体会先搜索这些文档,读取相关段落并对其进行分析:

Question
 ↓
Search company documents
 ↓
Retrieve relevant information
 ↓
Read context
 ↓
Reason about it
 ↓
Answer

通过添加相应工具,智能体还可以对检索到的内容采取行动:

AI AGENT
                    │
        ┌───────────┼───────────┐
        ↓           ↓           ↓
       RAG        Python       APIs
        ↓           ↓           ↓
    Documents    Analysis     Actions

在多个智能体之间分配任务

当一个智能体不够用时,多个专业智能体可以在协调器的指挥下协同工作:

MAIN AGENT
                     │
        ┌────────────┼────────────┐
        ↓            ↓            ↓
   Research Agent  Coding Agent  Data Agent
        │            │            │
     Search        Code         Analysis

研究智能体、编码智能体和数据智能体各自负责自己的任务,而主智能体则负责在它们之间分配工作。这就是一个多智能体系统。

团队类比及其局限性

这种结构类似于拥有不同职责的软件公司:

Manager
   ↓
Developer
   ↓
Tester
   ↓
Designer
   ↓
Deployment

人工智能系统也可以采用类似的劳动分工方式:

Coordinator Agent
       ↓
Research Agent
       ↓
Coding Agent
       ↓
Testing Agent
       ↓
Deployment Agent

这种类比虽然不够精确,但指明了方向:应通过协调不同的专业模型和工具来工作,而非依赖单一模型。每增加一个智能体都会带来成本和延迟的提升,因此专业化分工必须是实质性的。

智能体出错的原因

自主性并不等同于可靠性。智能体可能会出现以下问题:

  • 选择错误的工具
  • 误解目标
  • 生成有缺陷的代码
  • 检索到无关信息
  • 重复已经失败的操作
  • 编造事实
  • 做出错误决策
  • 采取无人预期的行动
  • 错误会在后续每个阶段不断累积:

    User Goal
       ↓
    Wrong interpretation
       ↓
    Wrong tool
       ↓
    Wrong result
       ↓
    Wrong action
    

    智能体的自由度越高,其操作就需要越多的检查。

    在循环中加入验证机制

    不良模式是智能体执行操作后直接假设该操作已成功:

    Act → Assume success
    

    更好的模式是在继续执行前加入明确的检查:

    Act
     ↓
    Observe
     ↓
    Verify
     ↓
    Continue
    

    对于代码而言,这种检查是通过测试运行并根据结果进行明确的分支处理:

    Write Code
     ↓
    Run Tests
     ↓
    Tests Pass?
     ├── NO → Fix
     └── YES → Continue
    

    对于数据而言,则是在他人依赖该数据之前对其结果进行合理性检查:

    Database Query
     ↓
    Check Result
     ↓
    Is result reasonable?
     ├── NO → Investigate
     └── YES → Continue
    

    通过验证而非假设,才能将自适应智能体与简单脚本区分开来。应优先使用确定性检查方法,如测试或模式验证,而非让模型自行评估。

    自主性是一个调节旋钮,而非开关

    智能体并不需要完全的自由。想象一个刻度尺,起点是仅能响应的系统:

    Level 1
    AI only answers
    

    更高级别的系统会添加建议动作,接着是工具调用,然后是多步骤规划,最终是在有限监督下执行的工作流:

    Level 2
    AI suggests actionsLevel 3
    AI calls toolsLevel 4
    AI plans multiple actionsLevel 5
    AI executes workflows with limited supervision
    

    在刻度尺上每向上移动一步,对智能体的要求就会提高:

    Permissions
    Safety
    Monitoring
    Verification
    Human oversight
    

    能够解决问题且层级最低的方案通常是最佳选择。

    限定智能体可操作的范围

    想象一个与以下所有组件相连的智能体:

    Email
    Banking
    Files
    Database
    Cloud infrastructure
    Production servers
    

    无限制的访问方式极其危险。更安全的设计会通过权限层来控制操作:

    AI Agent
       ↓
    Permission Layer
       ↓
    Allowed Tools
       ↓
    Action
    

    随后会为每个操作设置相应的权限:读取文件可能无需特殊权限,而删除、发送邮件、部署或访问数据库则需根据具体情境决定:

    Read file       ✓
    Delete file     ?
    Send email      ?
    Deploy software ?
    Access database ?
    

    其核心原则是最小权限原则。

    约束机制与人工审批

    生产环境中的智能体在运行时也需要严格的限制:

    Allowed tools
    Maximum actions
    Time limits
    Budget limits
    File permissions
    Network permissions
    Human approval
    

    对于影响重大的操作,智能体会先准备相关操作,然后等待人工审批:

    Agent
     ↓
    Prepare Action
     ↓
    Human Approval
     ↓
    Execute
    

    这属于有人工干预的设计模式。关于有限循环的相关内容,可参阅我们发布的关于TypeScript中有限智能体循环的文章。

    智能体的应用场景

    这种循环模式在许多领域都有应用。

    软件开发

    Requirement
     ↓
    Coding Agent
     ↓
    Code
     ↓
    Testing
     ↓
    Bug Fixing
    

    数据分析

    Dataset
     ↓
    Data Agent
     ↓
    Cleaning
     ↓
    Analysis
     ↓
    Visualization
     ↓
    Report
    

    客户支持

    请注意“允许的操作”这一环节:客服人员只能在预先批准的一组有限操作范围内工作。

    Customer Question
     ↓
    Retrieve Account Information
     ↓
    Understand Problem
     ↓
    Take Permitted Action
     ↓
    Respond
    

    研究

    Research Question
     ↓
    Search
     ↓
    Read Papers
     ↓
    Extract Information
     ↓
    Compare Findings
     ↓
    Generate Report
    

    个人工作效率提升

    Goal
     ↓
    Calendar
     ↓
    Email
     ↓
    Documents
     ↓
    Tasks
     ↓
    Summary
    

    另一种类型的界面

    传统软件将控件映射到函数,再由函数生成结果:

    Button
     ↓
    Function
     ↓
    Result
    

    智能体则将既定目标映射为计划、工具调用及具体操作:

    Goal
     ↓
    Planning
     ↓
    Tools
     ↓
    Actions
     ↓
    Result
    

    用户无需学习该按哪些按钮,只需描述期望的结果即可。这改变了人机交互方式,也使得智能体的操作透明度成为一项设计要求。

    关于“思考”一词的说明

    当我们说一个智能体“思考”时,通常指的是一系列计算步骤:解析输入、制定计划、选择行动、评估输出以及更新状态。但这并不能说明它具有意识。更准确地说,智能体会通过反复的推理和行动选择循环来朝向目标前进;“智能体”描述的是其行为与架构,而非其体验。

    一个循环中的完整过程

    将这些环节组合起来,就形成了这样的架构:制定计划、通过工具执行行动、观察结果、进行验证,然后决定继续还是停止。

    USER
                          │
                          ▼
                     ┌─────────┐
                     │  GOAL   │
                     └────┬────┘
                          ↓
                   ┌─────────────┐
                   │ AI / LLM    │
                   └──────┬──────┘
                          ↓
                       PLAN
                          ↓
                  SELECT ACTION
                          ↓
            ┌─────────────┼─────────────┐
            ↓             ↓             ↓
          Search        Python         SQL
            ↓             ↓             ↓
            └─────────────┼─────────────┘
                          ↓
                       RESULT
                          ↓
                      OBSERVE
                          ↓
                      VERIFY
                          ↓
                 Continue or Finish
    

    这个循环处于大多数智能体系统的核心位置。

    未来的发展方向

    想象一下,你让电脑帮你生成每周的研究报告,而有一个智能体负责处理整个流程:

    Open research sources
            ↓
    Collect information
            ↓
    Read documents
            ↓
    Analyze data
            ↓
    Create charts
            ↓
    Write report
            ↓
    Check errors
            ↓
    Prepare final document
    

    此时电脑会协调各种应用程序,而不仅仅是托管它们。从更长的时间跨度来看,其发展过程大致如下:

    Rule-Based Software
            ↓
    Machine Learning
            ↓
    Chatbots
            ↓
    LLMs
            ↓
    Tool-Using LLMs
            ↓
    AI Agents
            ↓
    Multi-Agent Systems
    

    变化不仅体现在模型规模变大上,还在于模型越来越多地能够操作外部系统。

    关键要点

    聊天机器人可以告诉你如何分析数据集。而以智能体为导向的系统则能自动查找数据集、加载它、进行分析、生成图表、标记问题、起草报告、请求审批并最终交付结果:

    Find the dataset
          ↓
    Load it
          ↓
    Analyze it
          ↓
    Create visualizations
          ↓
    Detect problems
          ↓
    Write a report
          ↓
    Ask for approval
          ↓
    Deliver the result
    

    其发展过程是从回答问题,到规划行动,再到执行操作、观察结果并进行验证。在设计任何智能体时需牢记以下几点:

    • 使系统具备智能体特性的关键在于循环机制,而非模型本身;需为循环设定迭代次数、时间限制和预算限制。
    • 将算术运算、数据查询及代码执行等具体任务委托给相关工具,并对这些工具进行清晰描述。
    • 通过不依赖模型自身评分的检测方式,对每个后续步骤进行验证。
  • 按操作授予权限,从最低权限开始,并对任何不可逆的操作要求人工审批。
  • 选择能够完成任务的最低级别自主性。
  • 智能体并非指具备人类思维能力的机器,而是将目标转化为行动的系统。关键问题不在于模型的能力如何,而在于你愿意让它做什么。

    相关阅读