agents-flex/agents-flex
Agents-flex is A lightweight Java AI agent development framework (positioned as a counterpart to Spring AI). It supports features such as RAG, MCP, Skills, Text2SQL , LLM Wiki, Sub-agents, Web Search, TTS (synchronous and streaming), and STT.
Agents-Flexとは?
Agents-Flexは、大規模言語モデル(LLM)やその他のAIサービスと対話するアプリケーションを構築するための Javaファーストのフレームワーク です。LLM駆動型システムの一般的な構成要素(チャット、埋め込み、画像/音声生成、ツール呼び出し、検索拡張生成(RAG)、ベクトルストア、可観測性など)を、自由に組み合わせ可能な モジュール式のMavenアーティファクト として提供します。その目的は、Java開発者が特定のランタイム(プレーンJava、Spring Boot、その他のJVMスタック)に縛られることなく、必要なコンポーネントのみを構成できるようにすることです。
コアコンセプトとアーキテクチャ
| コンセプト | コード内での表現 |
|---|---|
| 統一されたモデル抽象化 | ChatModel、EmbeddingModel、ImageModel、RerankModel などのインターフェースが、プロバイダー固有のAPI(OpenAI、Qwen、Ollamaなど)を隠蔽します。 |
| 同期およびストリーミングAPI | 同じ Prompt、ChatOptions、インターセプターチェーンが、通常の chat() 呼び出しと chatStream() コールバックの両方で機能します。 |
| ツール呼び出し | アノテーション付きのJavaメソッド(@ToolDef、@ToolParam)が Tool オブジェクトとしてスキャンされます。フレームワークがリクエストを構築し、ツールを実行し、結果をモデルにフィードバックします。 |
| 永続的なエージェントランタイム | agents-flex-agent は、実行状態を一時停止、再開、スナップショット、永続化(JDBC/Redisストア)できるステートマシンを提供します。 |
| RAGの構成要素 | ドキュメントローダー、パーサー、スプリッター、埋め込みジェネレーター、ベクトルストアアダプター、リランカーは、相互に接続可能な個別のモジュールです。 |
| 本番環境への対応 | モデルルーティング、負荷分散、リトライ、サーキットブレーカー、OpenTelemetryエクスポートが組み込まれています。 |
| プラグインスタイルの拡張性 | 対応するインターフェースを実装し、モジュールをMaven依存関係として追加することで、新しいツール、ベクトルストア、モデルプロバイダーを追加できます。 |
主要モジュール(概要)
- agents-flex-core – 基本型(
Prompt、Message、Tool、Memory、Document)。 - agents-flex-chat, -embedding, -image, -audio, -ocr, -video – 多くのプロバイダー向けの具体的なモデルアダプター。
- agents-flex-store – Redis、Qdrant、Chroma、Milvus、Elasticsearchなどのアダプター。
- agents-flex-agent & -agent-store – ターンを調整し、ツール呼び出しを処理し、状態を永続化するランタイム。
- agents-flex-tool & -toolsearch – すぐに使えるユーティリティ(シェル、ファイル、Web取得)と検索可能なレジストリ。
- agents-flex-mcp – 外部のMCPサービスを
Toolオブジェクトに変換するクライアント。 - agents-flex-skills ファミリー – サンドボックス化可能なファイルシステムベースの「スキルパッケージ」。
- agents-flex-text2sql – スキーマ検出機能を備えた、安全で読み取り専用の自然言語からSQLへの変換。
- agents-flex-wiki – エージェントがページごとに閲覧できる階層型ナレッジベース。
- agents-flex-spring-boot-starter – 最も一般的なモデルとストアの自動構成。
- demos – チャット、ツール呼び出し、RAG、エージェントワークフローを示す実行可能な例。
一般的な使用フロー(例)
- Maven依存関係の追加 – BOM (
agents-flex-bom) または必要な特定のモジュール(例:agents-flex-chat-openai+agents-flex-store-redis)を追加します。 - モデルの構成 – プロバイダー固有の構成ビルダーを使用して
ChatModelを作成します(クイックスタートを参照)。同じモデルを通常呼び出しまたはストリーミング呼び出しに使用できます。 - ツールの定義 – Javaメソッドに
@ToolDef/@ToolParamをアノテーションするか、プログラムで構築します。ツールをPromptまたはToolGroupに登録します。 - プロンプトの構築 – ユーザーテキスト、システム指示、選択したツールグループを組み合わせます。
- モデルの呼び出し –
chat()はAiMessageResponseを返します。hasToolCalls()が true の場合、ツールを実行し(executeToolCallsAndGetToolMessages())、更新されたプロンプトをモデルに送り返します。 - (オプション) エージェントの実行 – 上記を
AgentRunnerでラップし、自動スナップショット、承認フック、永続化を取得します。 - (オプション) RAGの追加 – ドキュメントの読み込み、分割、埋め込み、ベクトルストアへの保存、パッセージの取得、必要に応じたリランクを行い、取得したテキストをプロンプトにフィードします。
- 監視 – OpenTelemetryエクスポートがスパン/メトリクスを出力します。
-Dagentsflex.otel.enabled=trueで有効にできます。
誰が使うべきか?
- Javaバックエンドチーム:Pythonに切り替えることなく、LLM駆動機能(チャットボット、コードアシスタント、データ分析エージェント)を追加する必要があるチーム。
- 企業:耐久性、監査可能性、および既存のJVMインフラストラクチャ(Spring Boot、JDBC、Redisなど)との統合を必要とする企業。
- マルチモデルサービスを構築する開発者:ルーティングと負荷分散機能により、OpenAI、Qwen、Ollamaなどを単一のエンドポイントでブレンドできます。
- プラグインツールエコシステムを求めるチーム:アノテーションベースのツールスキャナーとMCPクライアントにより、内部サービスをLLMから呼び出し可能なツールとして簡単に公開できます。
強みと制限
| 強み | 制限 |
|---|---|
| Javaネイティブ – JNIや外部のPythonランタイムは不要。 | エコシステムの規模 – Python中心のライブラリよりもコミュニティ貢献モジュールが少ない。 |
| モジュール式Mavenアーティファクト – 使用するものだけを出荷でき、最終的なJARを小さく保てます。 | 学習曲線 – インターセプターチェーンとツールグループのマッチングにより、概念的なオーバーヘッドが増加します。 |
| 本番環境向け機能が組み込み済み(ルーティング、サーキットブレーカー、OpenTelemetry)。 | ドキュメント – 主に中国語/英語のMarkdown。例は demos フォルダに限定されています。 |
| 豊富なツール呼び出しサポート(アノテーション、動的グループ、MCP)。 | ランタイムの柔軟性 – JVMに縛られており、エッジデバイスや非Javaスタックには不向きです。 |
クイックスタート
<dependency>
<groupId>com.agentsflex</groupId>
<artifactId>agents-flex-bom</artifactId>
<version>2.3.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
ChatModel model = OpenAIChatConfig.builder()
.endpoint("https://api.openai.com/v1")
.model("gpt-4o")
.apiKey(System.getenv("OPENAI_KEY"))
.buildModel();
SimplePrompt p = new SimplePrompt("Summarize the latest Java 21 features.");
System.out.println(model.chat(p).getMessage().getContent());
ツール呼び出しとストリーミングを含むより完全な例については、demos/chat-demo モジュールを実行してください。
ライセンスとコミュニティ
Agents-Flexは Apache 2.0 ライセンスであり、商用利用は無料です。リポジトリには contrib.rocks によって生成された貢献者バッジが表示されており、オープンソースコミュニティであることを示していますが、READMEには個々の貢献者はリストされていません。
要約: Agents-Flexは、Java開発者にLLMチャット、ツールオーケストレーション、RAG、および関連するAI機能のための本番グレードのツールボックスを提供します。これらはすべて、あらゆるJVMアプリケーションにドロップインできる交換可能なMavenモジュールとしてパッケージ化されています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト