embabel/embabel-agent
Agent framework for the JVM. Pronounced Em-BAY-bel /ɛmˈbeɪbəl/
Embabel Agent Framework – 概述
它是什么 – Embabel 是一个用于在 JVM 上构建 agentic 应用的 Java/Kotlin 库。它允许你描述目标、动作、条件和领域模型,框架会自动规划并执行一系列动作(计划)以实现这些目标。规划步骤可以使用经典 AI 规划器(如 GOAP)或基于效用的选择,动作本身可以是普通代码、对 Spring 服务的调用或 LLM 驱动的提示。
为什么重要 – 大多数现有的 LLM 代理工具都以 Python 为中心。Embabel 将相同的理念引入 Java 生态系统,让你能够重用现有的基于 Spring 的服务,受益于强静态类型,并通过 JUnit 保持一切可测试。它抽象了代理运行时(聚焦、封闭或开放模式),因此你可以运行单个定义良好的流程,或让平台在多个代理中发现新的路径。
核心概念
| 概念 | 作用 |
|---|---|
| 代理 | 相关目标、动作和条件的容器。使用 @Agent(Java)或 Kotlin DSL 声明。 |
| 目标 | 期望的最终状态。规划器尝试找到满足它的计划。 |
| 动作 | 代理可以执行的步骤。实现为带有 @Action 注解的方法。可以调用 LLM、使用工具或运行常规代码。 |
| 条件 | 前置/后置条件,在每个动作后重新检查。 |
| 计划 | 动态生成的动作序列。每一步后重新规划,实现适应性。 |
| 领域模型 | 表示世界的普通 Kotlin/Java 对象(例如 StarPerson、Horoscope)。所有动作都使用这些强类型对象。 |
主要特性
- 动态规划 – 默认使用目标导向动作规划(GOAP);也支持 Utility AI。计划在每个动作后重新计算,使系统能够对新信息做出反应。
- 三种执行模式 –
- 聚焦:直接调用特定代理(代码驱动)。
- 封闭:平台根据分类意图选择代理。
- 开放:平台发现任何它能实现的目标,可能拼接多个代理的动作。
- Spring 集成 – 代理是 Spring Bean;你可以注入服务、使用 AOP,并利用 Spring 的事务和持久化支持。
- 强类型 – 动作接收并返回具体的领域对象;提示使用类型安全的 API 构建,避免“魔法映射”。
- 可扩展规划 – 如果 GOAP/Utility AI 不适用,可以插入你自己的规划器。
- 可测试性 – 像测试任何 Spring 组件一样单元测试动作;也支持端到端的代理测试。
- LLM 混合 – 在同一流程中轻松组合多个模型(例如,简单任务使用便宜的本地模型,创意步骤使用 OpenAI)。
- 工具组 – 通过
toolGroups注解为每个动作声明所需的外部工具(例如,网络搜索)。
典型用例
- 企业工作流,其中现有的 Java 服务需要与 LLM 生成的内容(例如个性化电子邮件、报告生成)进行编排。
- 面向客户的代理,结合知识库查询、外部 API 和 LLM 推理。
- 自动化机器人,规划多步骤任务,如旅行规划、文档处理或数据增强。
- 研究原型,探索 JVM 上的动态规划、基于效用的决策或联邦代理网络。
快速入门
- 创建项目 – 使用提供的模板:
- 添加依赖(Maven Central):
<dependency> <groupId>com.embabel.agent</groupId> <artifactId>embabel-agent-api</artifactId> <version>1.5.0‑SNAPSHOT</version> </dependency> - 定义代理 – 使用
@Agent注解一个 Spring bean,并添加@Goal、@Condition、@Action方法(参见 README 中的 Java/Kotlin 示例)。 - 运行 – 通过
AgentPlatformbean 选择平台模式(Focused、Closed、Open),并调用runAgent(...)或让平台根据用户意图进行调度。 - 探索示例 –
生态系统与兼容性
- 基于 Spring Boot 构建 – 适用于任何 Spring Boot 版本;你可以注入其他 Spring 组件(仓库、REST 客户端等)。
- JVM 语言 – 核心库是 Kotlin,但 API 完全可从 Java 使用。
- 工具集成 – 框架定义了工具组(例如
WEB),可以连接到具体实现(搜索 API、数据库等)。 - LLM 后端 – 底层使用 Spring AI,因此任何受 Spring AI 支持的模型(OpenAI、Azure、本地 Ollama 等)都可以替换。
- 容器化 – 为平台提供了 Docker 镜像;CI/CD 管道使用 GitHub Actions 和 SonarQube 进行质量检查。
许可证与社区
- 许可证 – Apache 2.0(见 README 中的徽章)。
- 社区 – Discord 频道、实时文档站点和 GitHub 上的问题跟踪器。持续集成状态、SonarQube 质量门和 Maven Central 发布表明这是一个积极维护的项目。
底线 – Embabel 为 Java/Kotlin 开发者提供了一种高级、可测试的方式来构建 LLM 增强的代理,这些代理可以规划、适应并重用现有的企业代码。它填补了 JVM 中心 AI 代理的空白,同时与更广泛的 Spring 生态系统保持兼容。
相关
- 项目
- 项目
- 项目
- 项目
- 项目