지난 25.11.30에 “GDG Devfest Seoul 2025”에 다녀왔습니다. 들었던 세션 중 “Building AI Agents with Agent Development Kit Go”라는 Hands-on 세션에서 소개받은 “ADK(Agent Development Kit)”에 대해 소개해볼까 합니다.
기술의 발전 속도는 눈부시며, 그 중심에는 AI가 있습니다. 특히 사용자의 의도를 이해하고 복잡한 작업을 자율적으로 수행하는 에이전트(Agent) 기술은 AI의 다음 혁명을 이끌 핵심으로 주목받고 있죠. 이러한 흐름 속에서 Google은 개발자들이 혁신적인 AI 에이전트를 보다 쉽고 빠르게 구축할 수 있도록 강력한 도구를 2025년 4월, 세상에 공개했습니다.

ADK는 Google의 첨단 대규모 언어 모델(LLM), 즉 Gemini를 기반으로 하여, 복잡하고 다단계적인 사용자 요청을 이해하고 실행하는 AI 에이전트를 구축하기 위한 포괄적인 프레임워크이자 도구 모음입니다.
ADK의 핵심 목표는 개발자가 에이전트의 계획(Planning), 도구 사용(Tool Use), 기억(Memory), 그리고 사용자 피드백을 통한 학습(Learning)과 같은 핵심 기능을 손쉽게 통합하고 맞춤 설정할 수 있도록 돕는 것입니다. 쉽게 말해, ADK는 AI가 단순한 질문에 답하는 것을 넘어, 현실 세계에서 목표를 설정하고 달성할 수 있는 '행동하는 AI'를 만드는 프레임워크라고 할 수 있습니다.
Gemini 및 Google 생태계에 최적화되어 있지만, 모델에 구애받지 않고(model-agnostic), 배포 환경에 제약이 없고(deployment-agnostic), 다른 프레임워크와의 호환성을 위해 구축되었다고 합니다. 핵심은 Agent개발이 소프트웨어 개발처럼 느껴지도록 설계되었다는 것입니다.
Google ADK는 단순히 에이전트를 만드는 도구를 넘어, AI 에이전트의 상호 운용성과 확장성을 높이는 것을 목표로 합니다. 이는 다양한 애플리케이션과 플랫폼에서 일관되고 강력한 성능을 발휘하는 에이전트를 개발할 수 있게 해줍니다.
ADK를 통해 개발자들은 금융 분석, 개인 비서, 복잡한 데이터 관리 등 특정 목적에 최적화된 고성능 AI 에이전트를 구현할 수 있습니다.

AI 에이전트 개발 분야에서 Google의 ADK가 등장하기 전까지, LangChain은 에이전트 구축의 사실상의 표준이었습니다. 두 프레임워크는 모두 대규모 언어 모델(LLM)을 활용하여 복잡한 작업을 수행하는 에이전트를 만드는 것을 목표로 하지만, 그 접근 방식, 아키텍처, 그리고 통합되는 생태계에서 차이를 보입니다.
| 특징 | LangChain | Google ADK |
|---|---|---|
| 핵심 철학 | 모듈성 및 범용성 | End-to-End 통합 및 확장성 |
| 기반 모델 | 다양한 LLM 지원 (OpenAI, Anthropic, Google Gemini 등) | Google Gemini 모델에 최적화 및 깊이 통합됨 |
| 구성 요소 | Chains, Agents, Tools, Memory 등 레고 블록 형태의 모듈 | 에이전트의 핵심 기능(계획, 도구 사용 등)을 통합된 서비스 형태로 제공 |
| 통합 | 다양한 데이터 소스, 벡터 데이터베이스, LLM Provider와의 유연한 연결 | Google의 광범위한 서비스 및 인프라(Google Cloud, Workspace 등)와의 깊은 통합 |

LangChain은 개발자가 에이전트의 각 구성 요소를 독립적인 모듈로 정의하고 조합하도록 설계되었습니다.
# pip install -qU "langchain[anthropic]" to call the model
from langchain.agents import create_agent
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
agent = create_agent(
model="claude-sonnet-4-5-20250929",
tools=[get_weather],
system_prompt="You are a helpful assistant",
)
# Run the agent
agent.invoke(
{"messages": [{"role": "user", "content": "what is the weather in sf"}]}
)
ADK는 LLM인 Gemini가 에이전트의 핵심 지능을 담당하도록 하고, 에이전트가 필요한 기능을 '서비스' 형태로 호출하고 통합하는 데 중점을 둡니다.
package main
import (
"context"
"log"
"os"
"fmt"
"google.golang.org/adk/agent"
"google.golang.org/adk/agent/llmagent"
"google.golang.org/adk/cmd/launcher"
"google.golang.org/adk/cmd/launcher/full"
"google.golang.org/adk/model/gemini"
"google.golang.org/adk/tool"
"google.golang.org/adk/tool/functiontool"
"google.golang.org/genai"
)
type getWeatherArgs struct {
City string `json:"city" jsonschema:"The city to get weather for."`
}
func getWeather(ctx tool.Context, args getWeatherArgs) (string, error) {
fmt.Printf("[Tool] Getting weather for %s...\n", args.City)
return fmt.Sprintf("The weather in %s is Sunny, 25°C", args.City), nil
}
func main() {
ctx := context.Background()
model, err := gemini.NewModel(ctx,
"gemini-3-pro-preview",
&genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
})
if err != nil {
log.Fatalf("Failed to create model: %v", err)
}
weatherTool, _ := functiontool.New(functiontool.Config{
Name: "get_weather", Description: "Get weather for a city"},
getWeather,
)
sentimentTool, _ := functiontool.New(
functiontool.Config{Name: "analyze_sentiment", Description: "Analyze text sentiment"},
analyzeSentiment)
myAgent, err := llmagent.New(llmagent.Config{
Name: "helper_agent",
Model: model,
Instruction: "You are a helper. If asked about weather, use get_weather. " +
"Then analyze the user's reaction using analyze_sentiment.",
Tools: []tool.Tool{weatherTool, sentimentTool},
})
if err != nil {
log.Fatalf("Failed to create agent: %v", err)
}
config := &launcher.Config{
AgentLoader: agent.NewSingleLoader(myAgent),
}
l := full.NewLauncher()
if err = l.Execute(ctx, config, os.Args[1:]); err != nil {
log.Fatalf("Run failed: %v\n\n%s", err, l.CommandLineSyntax())
}
}
| 기준 | LangChain 선택 시 | Google ADK 선택 시 |
|---|---|---|
| LLM 종속성 | 특정 LLM에 구애받지 않고 다양한 모델을 실험하고 비교하고 싶을 때. | Google Gemini의 최첨단 기능과 성능을 최대한 활용하고자 할 때. (다른 LLM도 가능함) |
| 커스터마이징 | 에이전트의 내부 추론 로직(프롬프트, 파서 등)을 세밀하게 제어하고 싶을 때. | 복잡한 에이전트를 더 빠르고 간편하게 구축하고 배포 시간을 단축하고 싶을 때. |
| 배포 환경 | 로컬 환경이나 다양한 클라우드 환경에서 유연하게 운영하고자 할 때. | Google Cloud 또는 Workspace 생태계 내에서 에이전트를 구축하고 서비스와 깊이 통합해야 할 때. |
| 주요 목표 | 연구 개발(R&D) 및 새로운 AI 에이전트 패턴의 신속한 프로토타이핑. | 생산 환경에 최적화된 안정적이고 확장 가능한 엔터프라이즈급 에이전트 구축. |
요약하자면, LangChain은 유연성과 모듈성을 극대화하여 개발자에게 '무엇이든 만들 수 있는 레고 세트'를 제공하는 반면, Google ADK는 Gemini 기반의 깊은 통합과 최적화를 통해 '고성능의 완성도 높은 에이전트를 빠르게 제작할 수 있는 통합 엔지니어링 툴킷'을 제공한다고 볼 수 있습니다.


ADK를 이용한 Agent개발을 직접 실습하다 보니 처음 해보는 저도 쉽게 따라할 수 있을 정도로 공부좀 하면 가능할 것 같더군요. ADK는 분명 멀지 않은 미래에 AI Agent 개발의 패러다임 변화를 불러올 수 있을 것 같습니다.
LangChain 등의 초기 프레임워크가 AI 에이전트 개발의 '실험실' 단계였다면, ADK는 이를 '대량 생산 공장' 단계로 끌어올리고 있습니다.
ADK는 기존의 데이터 과학팀이나 LLM 연구팀뿐만 아니라, 일반 소프트웨어 개발팀(Backend, Frontend)이 AI 에이전트 개발에 깊이 참여할 수 있도록 합니다.
“GDG Devfest Seoul 2025”에서 만난 "Agent Development Kit"는 AI 에이전트 개발을 이전보다 훨씬 더 쉽고 체계적인 영역으로 끌어올린 것 같습니다. 당장에 풀스택 개발자인 저도 하루빨리 Agent 개발을 해 보고 싶다는 생각이 무럭무럭 솟네요.
이미 대부분의 서비스에 AI Agent는 ‘옵션’이 아닌 ‘필수’가 거의 되어버렸습니다. 코드 중심의 개발 방식, 뛰어난 확장성, 그리고 Google 생태계의 지원을 등에 업은 ADK는 이 ‘필수’를 쉽게 이끌어줄 강력한 툴이 될 것이라고 생각합니다.
다들 한번 알아보시고 시작해보시길 추천드립니다. 당신의 다음 AI 프로젝트는 ADK 한번 도입해보는 것이 어떨까요.