Skip to main content

概述

Agent 是 AgentScope 框架的核心抽象,代表一个具有自主决策能力的智能体。它将大语言模型(LLM)的推理能力、记忆系统、工具调用等功能有机整合在一起,使得开发者能够构建具有感知、思考、行动能力的 AI 应用。 一个完整的 Agent 由以下核心组件构成:
  • Model(模型):提供语言理解和生成能力,是 Agent 的”大脑”
  • Memory(记忆):存储对话历史和上下文信息,使 Agent 具有”记忆”
  • Toolkit(工具集):赋予 Agent 执行外部操作的能力,如 API 调用、数据库查询等
  • System Prompt(系统提示词):定义 Agent 的身份、角色和行为规范
  • Hook(钩子):提供事件驱动的扩展机制,用于监控和定制 Agent 行为

Agent 类型

ReActAgent(推荐)

Reasoning + Acting,结合推理与工具执行的通用 Agent。
适用场景
  • 需要调用工具的复杂任务
  • 多轮对话应用
  • 需要推理能力的问题解决

UserAgent

接收外部输入的 Agent(如命令行、Web UI)。
适用场景
  • 命令行交互应用
  • Web UI 集成
  • 人机协作场景

核心配置项详解

1. 基础配置

name(必需)

Agent 的唯一标识名称。
用途
  • 消息的发送者标识
  • 日志和调试中的 Agent 识别
  • 多 Agent 协作时的区分

sysPrompt

系统提示词,定义 Agent 的身份、职责和行为规范。

2. 模型配置

model(必需)

LLM 模型实例,决定 Agent 的语言理解和生成能力。

3. 记忆配置

memory(推荐)

存储对话历史,使 Agent 具有上下文记忆。

4. 工具配置

toolkit(可选)

提供 Agent 可调用的工具集。
工具组管理
用途
  • 赋予 Agent 执行外部操作的能力
  • 通过工具组控制权限
  • 支持动态激活/停用工具

5. 执行参数

maxIters

Agent 最大迭代次数(推理+工具执行循环)。
执行流程
每完成一次「推理+工具执行」算作一次迭代。

checkRunning

控制是否检查 Agent 是否正在运行中。
默认值true 行为说明
  • 当值为 true(默认)时:如果在 Agent 处理前一个请求时再次调用 call() 方法,会抛出 IllegalStateException 异常,错误信息为 “Agent is still running, please wait for it to finish”
  • 当值为 false 时:允许并发调用 call() 方法,不检查运行状态
使用场景
  • checkRunning=true(默认):适用于大多数场景,防止并发执行导致的状态混乱
  • checkRunning=false
    • 无状态的 Agent(不维护对话状态)
    • 需要并发处理请求的场景
    • 性能测试或压力测试
示例
注意事项
  • 设置 checkRunning=false 时,请确保 Agent 实现是线程安全的或无状态的
  • 并发调用可能导致记忆和上下文状态不一致
  • 对于真正的并发处理,建议使用独立的 Agent 实例

modelExecutionConfig

模型调用的执行配置,控制超时和重试行为。
代码实现逻辑 ReActAgent 的推理阶段(ReasoningPipeline),会将此配置注入到 GenerateOptions 中:
默认配置(ExecutionConfig.MODEL_DEFAULTS):
  • 超时:5 分钟
  • 最大尝试:3 次(初始 + 2 次重试)
  • 初始退避:2 秒
  • 最大退避:30 秒
  • 退避倍数:2.0(指数退避)
  • 重试条件:可重试错误(429、5xx、超时、网络 IO 错误)
使用场景
  • 调整模型 API 的超时时间
  • 配置重试策略(网络不稳定场景)
  • 针对特定错误进行重试
  • 控制退避策略

toolExecutionConfig

工具调用的执行配置,控制工具执行的超时和重试行为。
代码实现逻辑 ReActAgent 的执行阶段(ActingPipeline),调用 toolkit.callTools() 时传入此配置:
默认配置(ExecutionConfig.TOOL_DEFAULTS):
  • 超时:5 分钟
  • 最大尝试:1 次(不重试)
注意事项
  • 工具调用通常不建议重试,因为可能有副作用(如写数据库、发送邮件)
  • 如果需要重试,请确保工具是幂等的
  • 对于长时间运行的工具,适当增加超时时间
配置合并 ExecutionConfig 支持参数级别的配置合并:

6. Hook 配置

hook / hooks

事件监听器,用于监控和扩展 Agent 行为。

7. 结构化输出

structuredOutputReminder

结构化输出的提醒模式。

8. 工具执行上下文

toolExecutionContext

传递给工具的隐藏上下文对象。
用途
  • 传递用户身份信息
  • 提供数据库连接
  • 注入配置对象
  • 传递请求上下文
工具中使用

9. 计划管理 (PlanNotebook)

planNotebook

PlanNotebook 为 Agent 提供结构化的计划管理能力,适用于复杂多步骤任务。它通过提供工具函数让 Agent 创建、修改、跟踪计划,并通过 Hook 机制自动注入上下文提示。 核心功能
  • 计划管理:创建、修订、完成多子任务计划
  • 自动提示注入:在每次推理前自动注入上下文提示
  • 状态跟踪:跟踪子任务状态(todo/in_progress/done/abandoned)
  • 历史计划:存储和恢复历史计划
配置方式 1:快速启用(使用默认配置)
配置方式 2:自定义配置

10. Formatter 配置

Formatter 负责在 AgentScope 格式和模型 API 格式之间转换。
不同模型的 Formatter
通常不需要显式指定,模型会自动选择合适的 Formatter。

11. 技能配置

skillBox(可选)

提供 Agent 可用的技能集。它通过提供工具函数让 Agent 加载技能,并通过 Hook 机制自动注入技能提示。
用途
  • 赋予 Agent 使用技能的能力
  • 通过技能集控制技能的加载和使用
  • 支持动态加载和卸载技能

综合配置示例

以下示例展示了所有核心配置项的完整用法:

具体参数的细节配置可以参考对应的文档进行了解与配置。