A recente versão 0.2.0 do Agent Development Kit (ADK) para Java do Google adiciona uma integração com o framework de LLM LangChain4j. Essa integração fornece aos desenvolvedores uma ampla gama de modelos de linguagem grandes (LLMs) com suporte no LangChain4j para a criação de agentes de IA.
Além das integrações incorporadas do ADK ao Google Gemini e ao Anthropic Claude, os desenvolvedores agora podem usar o LangChain4j para acessar outros modelos de terceiros (como OpenAI, Anthropic, GitHub, Mistral...) ou modelos locais de peso aberto, por exemplo, via Ollama ou Docker Model Runner.
O framework de LLM LangChain4j dá suporte a uma ampla variedade de modelos. Você pode conferir a lista de modelos com suporte na documentação do LangChain4j. Vamos dar uma olhada em alguns exemplos concretos, usando o Gemma com o Docker Model Runner e o Ollama com o Qwen.
Ao declarar um agente do ADK com o builder LlmAgent
, você especifica o LLM usando o método builder model()
. Geralmente, é transmitida uma string que representa o nome do modelo, como "gemini-2.5-flash
".
Também é possível usar uma instância de uma classe que estende a classe abstrata BaseLlm
. É exatamente isso que a integração com o LangChain4j faz para criar uma ponte entre os dois frameworks. Você deve usar uma nova classe LangChain4j
que estende essa classe BaseLlm
.
Depois de instalar e ativar o Docker Model Runner na máquina, você pode baixar o modelo Gemma 3 facilmente com este comando:
docker model pull ai/gemma3
Como os modelos Docker Model Runner expõem uma plataforma de API compatível com OpenAI, é possível usar o módulo LangChain4j para modelos compatíveis com OpenAI especificando as seguintes dependências no pom.xml
do Maven:
<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>
Em seguida, crie um modelo de chat do LangChain4j, especificando o modelo que você deseja usar, o URL local e a porta:
OpenAiChatModel dmrChatModel = OpenAiChatModel.builder()
.baseUrl("http://localhost:12434/engines/llama.cpp/v1")
.modelName("ai/gemma3n")
.build();
Depois, configure um agente instrutor de xadrez usando esse modelo:
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();
Observe como a ponte entre os dois frameworks é feita por meio da instrução model(new LangChain4j(dmrChatModel))
. Pronto! O agente de IA está habilitado por um modelo local!
Se, em vez disso, você quiser criar um agente professor de ciências amigável com o modelo Qwen 3 executado localmente na máquina via Ollama, primeiro defina as dependências dentro de um arquivo de compilação pom.xml do Maven:
<!-- 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>
Vamos supor que você já tenha instalado o Ollama na máquina, baixado o modelo Qwen 3 e o colocado em execução na porta 11434
. Com o LangChain4j, em Java, você instancia o provedor do modelo Ollama da seguinte forma:
OllamaChatModel ollamaChatModel = OllamaChatModel.builder()
.modelName("qwen3:1.7b")
.baseUrl("http://127.0.0.1:11434")
.build();
Agora, vamos conectar esse modelo a um agente professor de ciências simples:
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();
Se o modelo oferecer suporte a chamadas de função, você também poderá dar acesso às ferramentas ao seu agente. Por exemplo, dê a ele acesso a servidores MCP ou às suas funções orientadas pelo código local. Você pode explorar as várias ferramentas à sua disposição neste artigo que detalha as ferramentas do ADK ou consultando a documentação do ADK.
Além da integração com o LangChain4j, a versão 0.2.0 traz várias outras melhorias poderosas para o fluxo de trabalho de desenvolvimento de agentes:
FunctionTools
baseadas em instâncias: agora, você pode criar FunctionTools
a partir de instâncias de objetos, e não simples métodos estáticos, o que oferece mais flexibilidade na arquitetura dos agentes.FunctionTools
dão suporte a métodos que retornam um Single
. Isso melhora o suporte a operações assíncronas e torna os agentes mais responsivos.endInvocation
em Event Actions permite a interrupção programática ou a parada da repetição do agente após uma chamada de ferramenta. Isso proporciona um controle maior sobre a execução dos agentes.before/after
na execução de modelos, agentes e ferramentas. Isso permite uma lógica mais complexa e refinada dentro do ciclo de vida dos agentes.InMemoryMemoryService
para o gerenciamento simplificado e rápido da memória e implementa o VertexAiRagRetrieval
usando APIs AI Platform para padrões de RAG mais avançados../mvnw)
, garantindo um processo de compilação consistente e direto para todos os colaboradores.É um prazer entregar esta nova versão a você. A integração com o LangChain4j marca um grande avanço para fazer do ADK para Java um framework mais aberto e flexível para a criação de agentes de IA poderosos.
Para saber mais sobre esta nova versão do ADK para Java, leia as notas da versão no GitHub. Está começando no desenvolvimento de agentes em Java com o ADK? Confira a documentação do ADK para Java, este guia (e vídeo) de primeiros passos ou bifurque este projeto de modelo do GitHub para começar rapidamente.
Meu colega Michael Vorburger e eu ficamos felizes em trabalhar nesta integração com o LangChain4j em colaboração com Dmytro Liubarskyi, criador do LangChain4j. Portanto, se você estiver criando agentes de IA em Java com o ADK, não hesite em nos enviar uma mensagem para @glaforge no Twitter/X ou para @glaforge.dev no Bluesky. Mal podemos esperar para conhecer seus ótimos casos de uso.