ADK for Java 通过集成 LangChain4j 向第三方语言模型开放

2025年9月16日

Google 近日发布的 Agent Development Kit (ADK) for Java 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 文档中查看完整的支持模型列表。下面我们通过两个具体示例进行说明:通过 Docker Model Runner 运行 Gemma 模型,以及通过 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

随后创建 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

请注意,两个框架之间的桥梁正是通过 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 端口运行。在 Java 中使用 LangChain4j 时,您可以按如下方式实例化 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,为智能体架构提供更强的灵活性。
    • 增强的异步支持FunctionTools 现支持返回 Single 类型的方法。这提升了异步操作支持能力,使智能体响应更迅捷。
    • 更优的循环控制:事件操作中的新字段 endInvocation 允许在工具调用后以编程方式中断或停止智能体循环,从而提供更精细的执行控制。
  • 高级智能体逻辑与内存功能
    • 链式回调:我们新增了对模型、智能体和工具执行前后事件的链式回调支持,使您能在智能体生命周期中实现更复杂、更精细的逻辑控制。
    • 新的内存管理与检索功能:本版本引入了 InMemoryMemoryService,用于实现简单、快速的内存管理;同时通过 AI Platform API 实现了 VertexAiRagRetrieval,支持更高级的 RAG 模式。
  • 其他关键增强包括引入了父级 POM 和 Maven Wrapper (./mvnw),确保所有创作贡献者都能获得统一且简化的构建流程。

让 AI 智能体开始工作吧

我们非常荣幸推出这个新版本。与 LangChain4j 的集成标志着 ADK for Java 向前迈出了重要一步,使其成为构建强大 AI 智能体更开放、更灵活的框架。

要了解 ADK for Java 新版本的更多信息,请阅读 GitHub 版本说明。初次使用 ADK 进行 Java 智能体开发?请查阅 ADK for Java 官方文档入门指南(及视频教程),或创建 GitHub 模板项目分支以快速开始。

我和我的同事 Michael Vorburger 很荣幸能与 LangChain4j 的创建者 Dmytro Liubarskyi 合作,共同完成了此次 LangChain4j 集成工作。如果您正在使用 ADK 构建 Java 版 AI 智能体,欢迎通过 Twitter/X 的 @glaforge 或 Bluesky 的 @glaforge.dev 账号与我们联系。我们期待了解您的精彩应用案例。