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、エージェントワークフローを示す実行可能な例。

一般的な使用フロー(例)

  1. Maven依存関係の追加 – BOM (agents-flex-bom) または必要な特定のモジュール(例:agents-flex-chat-openai + agents-flex-store-redis)を追加します。
  2. モデルの構成 – プロバイダー固有の構成ビルダーを使用して ChatModel を作成します(クイックスタートを参照)。同じモデルを通常呼び出しまたはストリーミング呼び出しに使用できます。
  3. ツールの定義 – Javaメソッドに @ToolDef/@ToolParam をアノテーションするか、プログラムで構築します。ツールを Prompt または ToolGroup に登録します。
  4. プロンプトの構築 – ユーザーテキスト、システム指示、選択したツールグループを組み合わせます。
  5. モデルの呼び出し – chat() は AiMessageResponse を返します。hasToolCalls() が true の場合、ツールを実行し(executeToolCallsAndGetToolMessages())、更新されたプロンプトをモデルに送り返します。
  6. (オプション) エージェントの実行 – 上記を AgentRunner でラップし、自動スナップショット、承認フック、永続化を取得します。
  7. (オプション) RAGの追加 – ドキュメントの読み込み、分割、埋め込み、ベクトルストアへの保存、パッセージの取得、必要に応じたリランクを行い、取得したテキストをプロンプトにフィードします。
  8. 監視 – 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モジュールとしてパッケージ化されています。

関連

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