embabel/embabel-agent
Agent framework for the JVM. Pronounced Em-BAY-bel /ɛmˈbeɪbəl/
해결하고자 하는 문제
Embabel 은 JVM(Java 및 Kotlin) 상에서 에이전트형 워크플로우를 만들기 위한 프레임워크를 제공하며, 대형 언어 모델(LLM) 상호작용을 기존 코드와 도메인 모델에 통합합니다. 고정된 유한 상태 머신이나 단순 순차 실행을 동적 플래닝으로 대체함으로써 LLM 기반 흐름 관리의 복잡성을 해소하고, 에이전트가 새로운 정보를 기반으로 적응하여 목표를 달성하기 위한 새로운 경로를 찾을 수 있게 합니다.
작동 방식
프레임워크는 에이전트 행동을 네 가지 핵심 개념으로 모델링합니다:
- Actions: 에이전트가 수행할 수 있는 개별 단계.
- Goals: 에이전트가 달성하려는 원하는 결과.
- Conditions: 행동을 실행하기 전 또는 목표 달성 여부를 판단하기 전에 수행되는 검사.
- Domain Model: 행동, 목표, 조건에 정보를 제공하는 기본 객체.
하드코딩된 경로 대신 Embabel 은 Plan—런타임에 동적으로 구성되는 행동 시퀀스를 사용합니다. 비-LLM AI 알고리즘, 구체적으로 Goal Oriented Action Planning(GOAP) 또는 Utility AI 를 활용해 최적의 행동 순서를 결정합니다. 시스템은 OODA 루프(Observe, Orient, Decide, Act)를 따르며, 각 행동 후에 재플래닝하여 변화에 적응합니다.
개발자는 Spring MVC와 유사한 어노테이션 기반 모델이나 관용적인 Kotlin DSL을 사용해 이러한 흐름을 정의할 수 있습니다. 프레임워크는 AgentPlatform을 통해 실행되며, Focused(직접 메서드 호출), Closed(인텐트 기반 동적 에이전트 선택), Open(사용 가능한 모든 리소스 중 동적으로 목표와 행동을 선택) 세 가지 실행 모드를 지원합니다.
대상 사용자
JVM 생태계(Java/Kotlin) 내에서 작업하는 소프트웨어 엔지니어 및 엔터프라이즈 개발자로, 기존 Spring 기반 인프라와 도메인 모델을 활용하면서 테스트 가능하고 확장 가능한 AI 에이전트를 구축하고자 하는 분들을 위한 것입니다.
주요 특징
- 동적 플래닝: 고정 상태 머신에 의존하지 않고 GOAP와 Utility AI를 사용해 목표까지의 경로를 탐색합니다.
- JVM 네이티브: Spring과 JVM 위에 구축되어 강력한 타입, 객체 지향의 장점, 그리고 엔터프라이즈 수준의 영속성 및 트랜잭션 관리에 손쉽게 접근할 수 있습니다.
- LLM 믹싱: 단일 흐름 내에서 여러 LLM(예: 비용이 높은 최첨단 모델과 로컬 저비용 모델)을 혼합해 사용하는 것을 단순화합니다.
- 강한 타입: 프롬프트와 코드 상호작용에 "매직 맵"을 없애고 타입이 지정된 도메인 모델을 사용합니다.
- 플러그인 가능한 플래닝: 다양한 플래닝 알고리즘을 지원하며, 향후 다른 에이전트 프레임워크와의 연합을 염두에 두고 설계되었습니다.