embabel-agent: とは何なのか、どのような問題を解決し、なぜ注目を集めているのか
embabel-agent: とは何なのか、どのような問題を解決し、なぜ注目を集めているのか
解決する問題
Embabelは、JVM (JavaおよびKotlin) 上でエージェント的ワークフローを構築するためのフレームワークであり、開発者がLLMによるプロンプト操作と、従来のコードやドメインモデルを組み合わせることを可能にします。硬直的な有限状態マシンや逐次実行に代わる動的なプランニングを採用することで、エージェントフローの管理の複雑さを解消し、プログラマーがあらゆる可能な状態遷移を定義することなく、エージェントが目標を達成するための新しい経路を見つけ出すことを可能にします。
仕組み
このフレームワークは、4つの主要な概念を用いてエージェントの振る舞いをモデル化します:Actions (実行されるステップ)、Goals (望ましい結果)、Conditions (アクションや目標達成のための要件)、そしてDomain model (基盤となるデータオブジェクト)です。
固定されたスクリプトの代わりに、Embabelはプランニングステップ(デフォルトではGoal Oriented Action Planning (GOAP) または Utility AI)を使用して、目標に到達するための一連のアクション(Plan)を動的に策定します。これはOODAループとして機能し、新しい情報に適応するために各アクションの後に再プランニングを行います。開発者は、Springのようなアノテーションモデル (@Agent, @Action, @Goal) またはKotlin DSLを使用して、これらのフローを定義できます。
対象ユーザー
既存のエンタープライズ・インフラストラクチャ、Springベースのアプリケーション、および型定義されたドメインモデルと深く統合される、高度なAIエージェントを構築したいJVM開発者 (JavaおよびKotlin) を対象としています。
ハイライト
- Dynamic Planning: 非LLM AIアルゴリズム (GOAPなど) を使用して、既知のステップを新しい順序で組み合わせて目標を達成します。
- JVM Native: SpringとJVM上に構築されており、堅牢な永続化、トランザクション管理、およびAOPへのアクセスを提供します。
- LLM Mixing: 単一のフロー内で複数のLLM (ローカルモデルを含む) を使用することを容易にし、コストとプライバシーを最適化します。
- Strong Typing: プロンプトとコードの相互作用に型定義されたドメインオブジェクトを使用することで、「マジックマップ」を排除します。
- Flexible Execution Modes: Focused (特定の要求)、Closed (エージェント選択)、および Open (目標達成のための全リソース活用) モードをサポートしています。
Sources
- undefinedembabel/embabel-agent