embabel/embabel-agent

Agent framework for the JVM. Pronounced Em-BAY-bel /ɛmˈbeɪbəl/

Embabel Agent Framework – 개요

이것이 무엇인가 – Embabel은 JVM에서 에이전트형(agentic) 애플리케이션을 구축하기 위한 Java/Kotlin 라이브러리입니다. 목표, 행동, 조건, 그리고 도메인 모델을 기술하면, 프레임워크가 자동으로 일련의 행동( 계획 )을 계획하고 실행하여 해당 목표를 달성합니다. 계획 단계는 GOAP 또는 유틸리티 기반 선택과 같은 고전적인 AI 플래너를 사용할 수 있으며, 행동 자체는 일반 코드, Spring 서비스 호출 또는 LLM 기반 프롬프트일 수 있습니다.

왜 중요한가 – 대부분의 기존 LLM 에이전트 도구는 Python 중심입니다. Embabel은 동일한 아이디어를 Java 생태계에 도입하여 기존 Spring 기반 서비스를 재사용하고, 강력한 정적 타이핑의 이점을 활용하며, JUnit으로 모든 것을 테스트 가능하게 유지할 수 있게 합니다. 에이전트 런타임(집중, 폐쇄 또는 개방 모드)을 추상화하여 단일하고 잘 정의된 흐름을 실행하거나 플랫폼이 여러 에이전트에 걸쳐 새로운 경로를 발견하도록 할 수 있습니다.


핵심 개념

개념 역할
에이전트 관련 목표, 행동 및 조건을 담는 컨테이너. @Agent(Java) 또는 Kotlin DSL로 선언됩니다.
목표 원하는 최종 상태. 플래너는 이를 충족하는 계획을 찾으려고 합니다.
행동 에이전트가 수행할 수 있는 단계. @Action으로 주석 처리된 메서드로 구현됩니다. LLM을 호출하거나, 도구를 사용하거나, 일반 코드를 실행할 수 있습니다.
조건 각 행동 후에 다시 확인되는 사전 조건/사후 조건.
계획 동적으로 생성된 행동 시퀀스. 각 단계 후에 다시 계획되어 적응을 가능하게 합니다.
도메인 모델 세계를 나타내는 일반 Kotlin/Java 객체(예: StarPerson, Horoscope). 모든 행동은 이러한 강력한 타입의 객체와 함께 작동합니다.

주요 기능

  • 동적 계획 – 기본적으로 GOAP(Goal-Oriented Action Planning)을 사용하며, Utility AI도 지원합니다. 계획은 각 행동 후에 다시 계산되어 시스템이 새로운 정보에 반응할 수 있게 합니다.
  • 세 가지 실행 모드 –
    • 집중(Focused): 특정 에이전트를 직접 호출(코드 기반).
    • 폐쇄(Closed): 플랫폼이 분류된 의도에 따라 에이전트를 선택합니다.
    • 개방(Open): 플랫폼이 달성할 수 있는 모든 목표를 발견하여 여러 에이전트의 행동을 결합할 수 있습니다.
  • Spring 통합 – 에이전트는 Spring 빈입니다. 서비스를 주입하고, 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. 에이전트 정의 – Spring 빈에 @Agent를 추가하고 @Goal, @Condition, @Action 메서드를 추가합니다(README의 Java/Kotlin 예제 참조).
  4. 실행 – AgentPlatform 빈을 통해 플랫폼 모드(Focused, Closed, Open)를 선택하고 runAgent(...)를 호출하거나 사용자 의도에 따라 플랫폼이 디스패치하도록 합니다.
  5. 예제 탐색 –

생태계 및 호환성

  • Spring Boot 기반 – 모든 Spring Boot 버전과 호환됩니다. 다른 Spring 컴포넌트(리포지토리, REST 클라이언트 등)를 주입할 수 있습니다.
  • JVM 언어 – 핵심 라이브러리는 Kotlin이지만 API는 Java에서 완전히 사용할 수 있습니다.
  • 도구 통합 – 프레임워크는 구체적인 구현(검색 API, 데이터베이스 등)에 연결할 수 있는 도구 그룹(예: WEB)을 정의합니다.
  • 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 생태계와 호환됩니다.


핵심 기능

  • 동적 계획 – 기본적으로 GOAP(Goal-Oriented Action Planning)를 사용하며, Utility AI도 지원합니다. 계획은 각 행동 후에 다시 계산되어 시스템이 새로운 정보에 반응할 수 있습니다.
  • 세 가지 실행 모드 –
    • 집중(Focused): 특정 에이전트를 직접 호출(코드 기반).
    • 폐쇄(Closed): 플랫폼이 분류된 의도에 따라 에이전트를 선택합니다.
    • 개방(Open): 플랫폼이 달성할 수 있는 모든 목표를 발견하여 여러 에이전트의 행동을 결합할 수 있습니다.
  • Spring 통합 – 에이전트는 Spring 빈입니다. 서비스를 주입하고, 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. 에이전트 정의 – Spring 빈에 @Agent를 추가하고 @Goal, @Condition, @Action 메서드를 추가합니다(README의 Java/Kotlin 예제 참조).
  4. 실행 – AgentPlatform 빈을 통해 플랫폼 모드(Focused, Closed, Open)를 선택하고 runAgent(...)를 호출하거나 사용자 의도에 따라 플랫폼이 디스패치하도록 합니다.
  5. 예제 살펴보기 –

생태계 및 호환성

  • Spring Boot 기반 – 모든 Spring Boot 버전과 호환됩니다. 다른 Spring 컴포넌트(리포지토리, REST 클라이언트 등)를 주입할 수 있습니다.
  • JVM 언어 – 핵심 라이브러리는 Kotlin이지만 API는 Java에서 완전히 사용할 수 있습니다.
  • 도구 통합 – 프레임워크는 구체적인 구현(검색 API, 데이터베이스 등)에 연결할 수 있는 도구 그룹(예: WEB)을 정의합니다.
  • 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 생태계와 호환됩니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트