최근 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로 메시지를 보내주세요. 여러분의 훌륭한 사용 사례를 고대하겠습니다.