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 上的动态规划、基于效用的决策或联邦代理网络。

快速入门

  1. 创建项目 – 使用提供的模板:
  2. 添加依赖(Maven Central):
    <dependency>
        <groupId>com.embabel.agent</groupId>
        <artifactId>embabel-agent-api</artifactId>
        <version>1.5.0‑SNAPSHOT</version>
    </dependency>
    
  3. 定义代理 – 使用 @Agent 注解一个 Spring bean,并添加 @Goal、@Condition、@Action 方法(参见 README 中的 Java/Kotlin 示例)。
  4. 运行 – 通过 AgentPlatform bean 选择平台模式(Focused、Closed、Open),并调用 runAgent(...) 或让平台根据用户意图进行调度。
  5. 探索示例 –

生态系统与兼容性

  • 基于 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 生态系统保持兼容。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト