AgentScope的Java库为构建具备自主规划能力的智能体提供了强大支持。本文将基于AgentScope Java,通过一个完整的会议室预订与邮件通知场景,演示如何实现智能体的“规划-执行”(Plan-To-Execute)模式。
目前,AgentScope Java主要支持以下几种模式的组合:
- ReAct:AgentScope主推的推理与行动结合模式。
- Plan-To-Execute:智能体先制定计划,再按步骤执行的模式。
- Human-In-The-Loop:在智能体执行敏感操作(如删除文件)时,引入人工干预或确认的机制。
AgentScope对Plan-To-Execute模式的支持,是通过内置的一系列计划管理工具来实现的。大模型在任务执行过程中,会根据实际情况动态调用这些工具。
| 工具名称 |
用途 |
create_plan |
创建新计划 |
revise_current_plan |
修订当前计划 |
update_subtask_state |
更新子任务状态(todo/in_progress/abandoned) |
finish_subtask |
标记子任务为已完成 |
view_subtasks |
查看子任务详情 |
finish_plan |
完成或放弃整个计划 |
view_historical_plans |
查看历史计划 |
recover_historical_plan |
恢复历史计划 |
实战案例:会议室预订与邮件通知
我们将实现一个智能体,它能完成“预订明天某个城市的会议室,并在成功后发送邮件通知给特定群组同事”的复杂任务。这需要智能体自主规划并调用多个工具。
首先,需要定义并实现业务相关的工具:
| 名称 |
描述 |
get_current_date |
获取当前的日期时间。大模型无法感知现实世界的时间,需要此工具。 |
list_rooms |
根据城市和时间查询可预订的会议室。 |
order_room |
根据ID和时间预订会议室。 |
search_email_address |
根据群组名称搜索对应的邮箱地址列表。 |
send_email |
发送邮件到指定的邮件地址列表。 |
这些工具可以通过简单的Mock类来实现,核心是使用AgentScope提供的@Tool注解来声明。

如上图所示,通过@Tool注解可以快速定义工具方法及其描述和参数。之后,利用Toolkit将这些工具注册到智能体中。

关键的配置在于创建ReactAgent时,需要设置PlanNotebook。它负责记录和管理智能体制定的计划。通过PlanNotebook.builder().needUserConfirm(true)可以开启“人在循环”模式,即计划执行前需要用户确认。
运行效果演示
1. 发送请求并生成计划
我们向智能体发送一个包含复杂需求的请求。

如图所示,智能体在收到“帮我预订明天佛山市南海区的会议室,预订成功之后,请发邮件给广州群组的所有同事”的请求后,并没有直接执行,而是先制定了一个详细的计划。该计划包含获取当前日期、查询会议室、预订、搜索邮箱、发送邮件等子任务,并等待用户确认。这充分体现了自主规划的能力。
2. 确认并执行计划
当用户回复“执行”后,智能体开始按计划逐步调用工具。

执行完成后,智能体返回结果,确认会议室已预订且邮件已成功发送给广州群组的同事。
3. 工具执行日志
通过后台日志,我们可以清晰地看到智能体自动选择并按顺序执行了规划中的工具。

日志记录了从get_current_date到send_email的完整调用链,验证了智能体确实在自主驱动整个流程。
总结
通过上述案例可以看到,利用AgentScope Java库,开发者可以高效地构建出具备复杂规划与执行能力的智能体。其核心在于PlanNotebook与内置计划工具的结合,使得大模型能够将模糊的用户指令分解为可执行的具体步骤序列,并结合Human-In-The-Loop机制提升操作的安全性。
本文的完整示例代码已开源,要求运行环境为 JDK >= 17。你可以通过此项目深入了解如何在Java生态中实践智能体技术,也欢迎在云栈社区与其他开发者交流相关经验。
|