최근 Google은 자바용 ADK(Agent Development Kit) 0.2.0 출시를 통해 LangChain4j LLM 프레임워크와의 통합을 추가했습니다. 이번 통합 덕분에 개발자는 LangChain4j이 지원하는 다양한 LLM(대형 언어 모델)을 활용해 AI 에이전트를 개발할 수 있게 되었습니다.
ADK의 기본 제공 Google Gemini 및 Anthropic Claude 통합 외에도, 개발자는 이제 LangChain4j를 사용해 타사 공급 업체(예: OpenAI, Anthropic, GitHub, Mistral 등)의 다른 모델이나 Ollama 또는 Docker Model Runner를 통한 로컬 오픈 웨이트 모델에 액세스할 수 있습니다.
LangChain4j LLM 프레임워크는 다양한 모델을 지원합니다. LangChain4j 설명서에서 지원되는 모델 목록을 확인할 수 있습니다. Docker Model Runner와 함께 Gemma를 사용하고 Qwen과 함께 Ollama를 사용하는 두 가지 구체적인 예를 살펴보겠습니다.
LlmAgent 빌더로 ADK 에이전트를 선언할 때 model() 빌더 메서드를 통해 LLM을 지정합니다. 일반적으로 "gemini-2.5-flash"와 같이 모델의 이름을 나타내는 문자열을 전달합니다.
BaseLlm 추상 클래스를 확장하는 클래스의 인스턴스를 사용할 수도 있습니다. LangChain4j와의 통합은 바로 이렇게 두 프레임워크 간의 가교 역할을 수행합니다. 이 BaseLlm 클래스를 확장하는 새로운 LangChain4j 클래스를 사용해야 합니다.
컴퓨터에 Docker Model Runner를 설치하고 활성화하면 다음 명령을 통해 Gemma 3 모델을 쉽게 끌어올 수 있습니다.
docker model pull ai/gemma3
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>
그런 다음 사용할 모델과 로컬 URL 및 포트를 지정하여 LangChain4j 채팅 모델을 만듭니다.
OpenAiChatModel dmrChatModel = OpenAiChatModel.builder()
.baseUrl("http://localhost:12434/engines/llama.cpp/v1")
.modelName("ai/gemma3n")
.build();
이제 해당 모델을 사용하여 체스 코치 에이전트를 구성합니다.
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();
두 프레임워크 사이의 브리지가 model(new LangChain4j(dmrChatModel)) 명령을 통해 연결되는 방식에 주목하세요. 바로 여기서 AI 에이전트가 로컬 모델로 구동됩니다!
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>
이미 컴퓨터에 Ollama를 설치하고 Qwen 3 모델을 불러와 포트 11434에서 실행 중이라고 가정해 보겠습니다. 자바에서 LangChain4j를 사용할 때 다음과 같이 Ollama 모델 공급자를 인스턴스화합니다.
OllamaChatModel ollamaChatModel = OllamaChatModel.builder()
.modelName("qwen3:1.7b")
.baseUrl("http://127.0.0.1:11434")
.build();
이제 이 모델을 간단한 과학 교사 에이전트에 연결해 보겠습니다.
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();
모델이 함수 호출을 지원하는 경우 에이전트에 도구에 대한 액세스 권한도 부여할 수 있습니다. 예를 들어 MCP 서버 또는 로컬 코드 기반 함수에 대한 액세스 권한을 부여할 수 있습니다. 사용 가능한 다양한 도구에 대한 탐색은 ADK 도구에 대해 이 기사나 ADK 설명서를 참조하시면 됩니다.
핵심인 LangChain4j 통합 외에도 버전 0.2.0은 에이전트 개발 워크플로에 몇 가지 강력한 개선 사항을 제공합니다.
FunctionTools: 이제 정적 메서드뿐만 아니라 객체 인스턴스에서도 FunctionTools를 생성할 수 있습니다. 덕분에 에이전트의 아키텍처에 더 큰 유연성을 제공할 수 있습니다.FunctionTools는 이제 Single을 반환하는 메서드를 지원합니다. 이를 통해 비동기 작업 지원을 향상시키고 에이전트의 응답성을 개선합니다.endInvocation 필드를 통해 도구 호출 후 에이전트 루프를 프로그래매틱 방식으로 중단하거나 중지할 수 있습니다. 이를 통해 에이전트 실행을 보다 세밀하게 제어할 수 있습니다.before/after 이벤트의 연쇄 콜백에 대한 지원을 추가했습니다. 이를 통해 에이전트의 수명 주기 내에서 보다 복잡하고 세분화된 논리를 사용할 수 있습니다.InMemoryMemoryService를 도입하고, 보다 발전된 RAG 패턴을 위해 AI Platform API를 사용하여 VertexAiRagRetrieval을 구현합니다../mvnw)가 있으며, 이를 통해 모든 참여자에게 일관성 있고 간단한 빌드 프로세스를 보장합니다.이 새로운 버전을 선보이게 되어 기쁩니다. LangChain4j와의 통합은 자바용 ADK를 강력한 AI 에이전트 개발을 위한 보다 개방적이고 유연한 프레임워크로 만들어가는 데 있어 중요한 진전을 의미합니다.
이 새로운 버전의 자바용 ADK에 대한 자세한 내용은 GitHub 출시 노트를 참조하세요. ADK를 사용하여 자바로 에이전트를 개발하는 게 이번이 처음이세요? 자바용 ADK 설명서나 이 시작 가이드(및 동영상)를 확인해 보시거나, 이 GitHub 템플릿 프로젝트를 포크하여 빠르게 시작해 보세요.
동료인 Michael Vorburger와 저는 LangChain4j를 만든 Dmytro Liubarskyi와 협업하여 이 LangChain4j 통합 작업을 하게 되어 기뻤습니다. ADK를 사용해 자바에서 AI 에이전트를 개발하실 경우 언제든지 Twitter/X에서는 @glaforge, Bluesky에서는 @glaforge.dev로 메시지를 보내주세요. 여러분의 훌륭한 사용 사례를 고대하겠습니다.