Java 向け ADK、LangChain4j 統合によってサードパーティ言語モデルに対応

2025年9月16日

最近 Google が公開した Java 向け Agent Development Kit(ADK)リリース 0.2.0 では、LangChain4j LLM フレームワークとの統合が追加されています。この統合により、デベロッパーは LangChain4j がサポートする幅広い大規模言語モデル(LLM)を使用して AI エージェントを構築できます。

ADK に組み込まれている Google Gemini および Anthropic Claude の統合に加えて、デベロッパーは LangChain4j を使用して、サードパーティ プロバイダ(OpenAI、Anthropic、GitHub、Mistral など)の他のモデルや、OllamaDocker Model Runner などを介したローカルのオープンウェイト モデルにもアクセスできるようになりました。

LangChain4j 統合により、幅広いモデルを選択可能

LangChain4j LLM フレームワークは、幅広いモデルをサポートしています。LangChain4j のドキュメントでサポートされているモデルのリストを確認できます。具体例として、Gemma と Docker Model Runner を使った例と、Ollama と Qwen を使った例を見ていきます。

LlmAgent ビルダーで ADK エージェントを宣言するときは、model() ビルダー メソッドを使用して LLM を指定します。通常、「gemini-2.5-flash」のように、モデルの名前を表す文字列を渡します。

BaseLlm 抽象クラスを拡張するクラスのインスタンスを使用することもできます。これはまさに、LangChain4j との統合が、両方のフレームワーク間のブリッジを作成するために行うことです。この BaseLlm クラスを拡張する新しい LangChain4j クラスを使用する必要があります。

Docker Model Runner で Gemma 3 を実行する

Docker Model Runner をマシンにインストールして有効化した後、次のコマンドを使用して Gemma 3 モデルを簡単にプルできます。

docker model pull ai/gemma3
Shell

Docker Model Runner モデルは OpenAI 互換の API サーフェスを公開しているため、Maven pom.xml で次の依存関係を指定することで、OpenAI 互換のモデルに LangChain4j モジュールを使用できます。

<dependency>
    <groupId>com.google.adk</groupId>
    <artifactId>google-adk-contrib-langchain4j</artifactId>
    <version>0.2.0</version>
</dependency>
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>1.4.0</version>
</dependency>
XML

次に、使用するモデルと、ローカル URL とポートを指定して、LangChain4j チャットモデルを作成します。

OpenAiChatModel dmrChatModel = OpenAiChatModel.builder()
    .baseUrl("http://localhost:12434/engines/llama.cpp/v1")
    .modelName("ai/gemma3n")
    .build();
Java

次に、そのモデルを使用してチェスのコーチのエージェントを構成します。

LlmAgent chessCoachAgent = LlmAgent.builder()
    .name("chess-coach")
    .description("Chess coach agent")
    .model(new LangChain4j(dmrChatModel))
    .instruction("""
        You are a knowledgeable chess coach
        who helps chess players train and sharpen their chess skills.
        """)
    .build();
Java

ここで重要なのは、2 つのフレームワーク間の橋渡しが model(new LangChain4j(dmrChatModel)) という命令を介して行われる点です。これで、ローカルモデルを利用する AI エージェントの完成です。

Ollama で Qwen 3 を実行する

Ollama を介してマシン上でローカルに実行される Qwen 3 モデルを使用して、フレンドリーな理数系教師のエージェントを構築する場合は、まず、Maven pom.xml ビルドファイル内で依存関係を定義します。

<!-- the code ADK framework -->
<dependency>
    <groupId>com.google.adk</groupId>
    <artifactId>google-adk</artifactId>
    <version>0.2.0</version>
</dependency>
<!-- the LangChain4j integration -->
<dependency>
    <groupId>com.google.adk</groupId>
    <artifactId>google-adk-contrib-langchain4j</artifactId>
    <version>0.2.0</version>
</dependency>
<!-- the LangChain4j Ollama provider -->
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-ollama</artifactId>
    <version>1.4.0</version>
</dependency>
XML

すでにマシンに Ollama をインストールしており、Qwen 3 モデルをプルしてポート 11434 で実行していると仮定します。LangChain4j を使用すると、Java で、次のように Ollama モデル プロバイダをインスタンス化できます。

OllamaChatModel ollamaChatModel = OllamaChatModel.builder()
    .modelName("qwen3:1.7b")
    .baseUrl("http://127.0.0.1:11434")
    .build();
Java

次に、このモデルをシンプルな理数系教師のエージェントに組み込みます。

LlmAgent scienceTeacherAgent = LlmAgent.builder()
    .name("science-app")
    .description("Science teacher agent")
    .model(new LangChain4j(ollamaChatModel))
    .instruction("""
        You are a helpful science teacher
        who explains science concepts to kids and teenagers.
        """)
    .build();
Java

モデルが関数呼び出しをサポートしている場合は、エージェントにツールへのアクセスを許可することもできます。たとえば、MCP サーバーやローカルコード駆動関数へのアクセスを許可できます。利用可能なさまざまなツールの詳細については、ADK ツールについて解説したこの記事や、ADK のドキュメントをご覧ください。

このリリースの新機能

LangChain4j の統合という目玉以外にも、バージョン 0.2.0 にはエージェント開発ワークフローを強化する複数の改良が加えられています。

  • ツール管理機能の拡張: ツールの作成と管理方法が大幅に改善されました。
    • インスタンスベースの FunctionTools: 静的メソッドだけでなく、オブジェクト インスタンスからも FunctionTools を作成できるようになり、エージェントのアーキテクチャの柔軟性が向上しました。
    • 非同期サポートの改善: FunctionToolsSingle を返すメソッドをサポートするようになりました。これにより、非同期操作のサポートが向上し、エージェントの応答性が向上します。
    • ループ制御の改善: イベント アクションの新しい endInvocation フィールドにより、ツール呼び出し後にエージェント ループをプログラムによって中断または停止できます。これにより、エージェントの実行をより細かく制御できます。
  • 高度なエージェント ロジックとメモリ:
    • チェーン コールバック: モデル、エージェント、ツール実行時における before/after イベントのチェーン コールバックのサポートが追加されました。これにより、エージェントのライフサイクル内でより複雑かつ細かいロジックが可能になります。
    • 新しいメモリと取得: このバージョンでは、シンプルで高速なメモリ管理を可能にする InMemoryMemoryService を導入しており、より高度な RAG パターンに対応するために、AI Platform API を使用して VertexAiRagRetrieval を実装しています。
  • その他の重要な機能強化には、親 POM と Maven Wrapper(./mvnw)が含まれ、すべてのコントリビュータに対して一貫性のある簡単なビルドプロセスを提供します。

AI エージェントを実際に作成して活用

この新しいバージョンをお届けできることを嬉しく思います。LangChain4j の統合は、Java 向け ADK を、強力な AI エージェントを構築するためのよりオープンで柔軟なフレームワークにするための大きな一歩となります。

この Java 向け ADK 最新バージョンの詳細については、GitHub リリースノートをご覧ください。ADK を使用した Java でのエージェント開発が初めての方は、Java 向け ADK のドキュメントもしくはこちらのスタートガイド(動画あり)を確認するか、GitHub テンプレート プロジェクトのフォークをお試しください。すぐに始められます。

同僚の Michael Vorburger とともに、LangChain4j を作成した Dmytro Liubarskyi 氏と協力して、この LangChain4j の統合に取り組めたことを嬉しく思います。ADK を使用して Java で AI エージェントを構築している方は、Twitter / X の @glaforge、または Bluesky の @glaforge.dev にメッセージをお送りください。素晴らしいユースケースのご報告をお待ちしております。