Skip to main content
工具系统让智能体能够执行 API 调用、数据库查询、文件操作等外部操作。

核心特性

  • 注解驱动:使用 @Tool@ToolParam 快速定义工具
  • 响应式编程:原生支持 Mono/Flux 异步执行
  • 自动 Schema:自动生成 JSON Schema 供 LLM 理解
  • 工具组管理:动态激活/停用工具集合
  • 预设参数:隐藏敏感参数(如 API Key)
  • 并行执行:支持多工具并行调用

快速开始

定义工具

注意@ToolParamname 属性必须指定,因为 Java 默认不保留参数名。

严格模式(Strict Mode)

strict 用于控制支持严格 Schema 检查的模型提供商是否应严格遵循工具参数 Schema。
配置了严格模式后,AgentScope 在以下所有路径中保留并传播严格模式配置:
  • @Tool(..., strict = true) 注解驱动的工具注册
  • AgentTool 接口实现(通过 getStrict() 方法)
  • Toolkit#registerSchema(...)Toolkit#registerSchemas(...) 方式

注册和使用

工具类型

同步工具

直接返回结果,适合快速操作:

异步工具

返回 Mono<T>Flux<T>,适合 I/O 操作:

流式工具

使用 ToolEmitter 发送中间进度,适合长时间任务(进度仅对 Hook 可见,不会发送给 LLM):

返回类型

工具组

按场景管理工具,支持动态激活/停用:
使用场景
  • 权限控制:根据用户角色激活不同工具
  • 场景切换:不同对话阶段使用不同工具集
  • 性能优化:减少 LLM 可见的工具数量

预设参数

隐藏敏感参数(如 API Key),不暴露给 LLM:
效果:LLM 只看到 tosubject 参数,apiKey 自动注入。

工具执行上下文

传递业务对象(如用户信息)给工具,无需暴露给 LLM:
详细配置参见 智能体 文档。

内置工具

文件工具

Shell 命令工具

快速使用:

多模态工具

子智能体工具

可以将智能体注册为工具,供其他智能体调用。详见 Agent as Tool

AgentTool 接口

需要精细控制时,直接实现接口:

配置选项

元工具

让智能体自主管理工具组:
当工具组较多时,可让智能体根据任务需求自主选择激活哪些工具组。

工具挂起(Tool Suspend)

工具执行时抛出 ToolSuspendException,可暂停 Agent 执行并返回给调用方,由外部完成实际执行后再恢复。 使用场景
  • 工具需要外部系统执行(如远程 API、用户手动操作)
  • 需要异步等待外部结果
使用方式
恢复执行

仅 Schema 工具(Schema Only Tool)

只注册工具的 Schema(名称、描述、参数),不提供执行逻辑。当 LLM 调用该工具时,框架自动触发挂起,返回给调用方执行。 使用场景
  • 工具由外部系统实现(如前端、其他服务)
  • 动态注册第三方工具
使用方式
调用流程与工具挂起相同:LLM 调用 → 返回 TOOL_SUSPENDED → 外部执行 → 提供结果恢复。

完整示例