Agent 개발의 미래, Google의 ADK

LTT·2025년 12월 2일

지난 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가 무엇인가요?


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 에이전트를 구현할 수 있습니다.

LangChain은 끝난건가요?


AI 에이전트 개발 분야에서 Google의 ADK가 등장하기 전까지, LangChain은 에이전트 구축의 사실상의 표준이었습니다. 두 프레임워크는 모두 대규모 언어 모델(LLM)을 활용하여 복잡한 작업을 수행하는 에이전트를 만드는 것을 목표로 하지만, 그 접근 방식, 아키텍처, 그리고 통합되는 생태계에서 차이를 보입니다.

특징LangChainGoogle ADK
핵심 철학모듈성 및 범용성End-to-End 통합 및 확장성
기반 모델다양한 LLM 지원 (OpenAI, Anthropic, Google Gemini 등)Google Gemini 모델에 최적화 및 깊이 통합됨
구성 요소Chains, Agents, Tools, Memory 등 레고 블록 형태의 모듈에이전트의 핵심 기능(계획, 도구 사용 등)을 통합된 서비스 형태로 제공
통합다양한 데이터 소스, 벡터 데이터베이스, LLM Provider와의 유연한 연결Google의 광범위한 서비스 및 인프라(Google Cloud, Workspace 등)와의 깊은 통합

LangChain과 ADK의 작동 방식 및 개발 흐름의 차이


1. LangChain의 접근 방식: 조합과 유연성


LangChain은 개발자가 에이전트의 각 구성 요소를 독립적인 모듈로 정의하고 조합하도록 설계되었습니다.

  • Chains: 일련의 동작을 연결합니다 (예: 사용자 입력 → 프롬프트 → LLM 응답 → 파싱).
  • Agents: 동적으로 어떤 도구(Tool)를 사용할지 결정하는 추론 로직을 제공합니다.
  • 유연성: 개발자는 추론 방식(ReAct, Zero-shot), 도구, 메모리 유형 등을 자유롭게 선택하고 교체할 수 있어 최대한의 커스터마이징이 가능합니다.
# 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"}]}
)

2. Google ADK의 접근 방식: 빌트인 및 최적화


ADK는 LLM인 Gemini가 에이전트의 핵심 지능을 담당하도록 하고, 에이전트가 필요한 기능을 '서비스' 형태로 호출하고 통합하는 데 중점을 둡니다.

  • Deep Gemini Integration: ADK는 특히 Gemini의 네이티브 멀티모달리티 및 복잡한 추론 능력을 활용하여 더 정교한 계획(Planning) 및 도구 호출을 수행하도록 설계되었습니다.
  • Agent Service Model: ADK는 '계획 수립', '도구 실행', '기억 관리' 등의 복잡한 로직을 개발자가 직접 구현하기보다는, 고도로 최적화된 빌트인 구성 요소를 통해 쉽게 호출하고 확장하도록 합니다. 이는 대규모 및 엔터프라이즈급 배포에 유리합니다.
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())
	}
}

3. 사용 사례 및 선택 기준


기준LangChain 선택 시Google ADK 선택 시
LLM 종속성특정 LLM에 구애받지 않고 다양한 모델을 실험하고 비교하고 싶을 때.Google Gemini의 최첨단 기능과 성능을 최대한 활용하고자 할 때. (다른 LLM도 가능함)
커스터마이징에이전트의 내부 추론 로직(프롬프트, 파서 등)을 세밀하게 제어하고 싶을 때.복잡한 에이전트를 더 빠르고 간편하게 구축하고 배포 시간을 단축하고 싶을 때.
배포 환경로컬 환경이나 다양한 클라우드 환경에서 유연하게 운영하고자 할 때.Google Cloud 또는 Workspace 생태계 내에서 에이전트를 구축하고 서비스와 깊이 통합해야 할 때.
주요 목표연구 개발(R&D) 및 새로운 AI 에이전트 패턴의 신속한 프로토타이핑.생산 환경에 최적화된 안정적이고 확장 가능한 엔터프라이즈급 에이전트 구축.

요약하자면, LangChain은 유연성과 모듈성을 극대화하여 개발자에게 '무엇이든 만들 수 있는 레고 세트'를 제공하는 반면, Google ADK는 Gemini 기반의 깊은 통합과 최적화를 통해 '고성능의 완성도 높은 에이전트를 빠르게 제작할 수 있는 통합 엔지니어링 툴킷'을 제공한다고 볼 수 있습니다.

ADK의 핵심 기능


  • 코드 기반 제어성: 에이전트의 동작, 툴 호출, 오케스트레이션 로직을 소스 코드에서 직접 정의할 수 있어 높은 제어력과 정밀한 테스트 전략을 마련할 수 있습니다. Python뿐만 아니라 Java, Go 등 다양한 언어 SDK가 제공되므로 팀의 기술 스택에 맞춘 개발이 가능합니다.
  • 다중 에이전트 구조 지원: 여러 개의 전문화된 에이전트를 계층적 또는 병렬 구조로 구성하여 복잡한 업무 흐름을 분리·모듈화할 수 있습니다. 대규모 애플리케이션에서도 유지보수성과 확장성을 확보할 수 있습니다.
  • 풍부한 도구 통합 능력: 사전 정의된 기본 도구 세트 외에도 사용자 정의 함수, 외부 API 명세(OpenAPI 등), 사내 시스템을 연결하여 에이전트의 기능을 자유롭게 확장할 수 있습니다. 이를 통해 모델이 실제 업무 시스템에 액세스해 실행 가능한 작업을 수행할 수 있습니다.
  • 유연한 오케스트레이션 옵션: 고정된 절차 기반 파이프라인을 구성할 수도 있고, LLM 기반 정책을 사용해 상황에 따라 적응적으로 경로를 선택하는 동적 워크플로우도 구현할 수 있습니다. 복잡한 직렬·병렬 실행 구조까지 자연스럽게 표현됩니다.
  • 통합 개발 환경 제공: CLI 기반 개발 도구와 시각적 웹 UI가 함께 제공되어 로컬에서 에이전트를 실행하고 디버깅하며, 단계별 실행 로그를 시각적으로 추적할 수 있습니다. 개발–테스트–배포 사이의 피드백 루프가 크게 단축됩니다.
  • 평가 기능 내장: 응답 품질뿐 아니라 단계별 실행 경로, 도구 호출 결과까지 평가할 수 있어 회귀 테스트와 시나리오 기반 비교 분석이 가능합니다. 에이전트의 안정성 및 품질 확보에 중요한 역할을 합니다.
  • 배포 친화적 구조: 컨테이너화를 기본으로 설계되어 Docker, Cloud Run, Vertex AI Agent Engine 등 다양한 환경에서 실행할 수 있습니다. 서버리스·쿠버네티스 기반 운영에도 적합하여 확장성과 안정성이 뛰어납니다.
  • 네이티브 스트리밍 지원: 텍스트와 오디오 모두에서 양방향 스트리밍을 제공하므로, 실시간 상호작용이 필요한 대화형 UI, 음성 기반 시스템, 실시간 처리 워크플로우에 자연스럽게 적용할 수 있습니다.
  • 상태·메모리·아티팩트 관리: 단기 대화 상태, 장기 메모리, 파일 업로드·다운로드, 실행 아티팩트 추적 등 에이전트가 복합적인 문맥을 다룰 수 있도록 상태 관리 기능이 제공됩니다. 복잡한 멀티턴 시나리오에서도 일관된 동작을 유지할 수 있습니다.
  • 확장성 중심 설계: 콜백 훅과 플러그인 구조를 활용하여 에이전트의 실행 과정, 로깅, 정책 등을 세부적으로 커스터마이즈할 수 있습니다. 또한 서드파티 서비스 및 사내 시스템과의 통합도 용이합니다.

에이전트 개발의 패러다임 변화


ADK를 이용한 Agent개발을 직접 실습하다 보니 처음 해보는 저도 쉽게 따라할 수 있을 정도로 공부좀 하면 가능할 것 같더군요. ADK는 분명 멀지 않은 미래에 AI Agent 개발의 패러다임 변화를 불러올 수 있을 것 같습니다.

1. AI 엔지니어링의 산업화 (Industrialization of AI Engineering)


LangChain 등의 초기 프레임워크가 AI 에이전트 개발의 '실험실' 단계였다면, ADK는 이를 '대량 생산 공장' 단계로 끌어올리고 있습니다.

  • SW 개발 표준 채택: ADK는 '에이전트 개발이 소프트웨어 개발처럼 느껴지도록' 설계되었다는 핵심 철학을 실현합니다. 코드 중심 제어, 통합 개발 환경(IDE), 내장된 테스트 및 평가 기능은 AI 에이전트 개발을 프롬프트 엔지니어링의 영역에서 정교한 소프트웨어 엔지니어링의 영역으로 이동시킵니다.
  • 엔터프라이즈 레디: 배포 친화적 구조(컨테이너화), 멀티 에이전트 아키텍처, 상태 및 메모리 관리 기능은 기업이 요구하는 확장성, 안정성, 유지보수성 기준을 충족합니다. 이는 파일럿 프로젝트가 아닌, 수백만 사용자를 대상으로 하는 실제 프로덕션 시스템에 AI 에이전트를 도입할 수 있는 길을 열어줍니다.
  • Gemini의 잠재력 극대화: Google의 최신 LLM인 Gemini가 가진 복잡한 추론, 멀티모달리티, 장기 컨텍스트 처리 능력이 ADK를 통해 구조화된 워크플로우 내에서 안정적으로 활용될 수 있게 되었습니다.

2. 개발팀 구조의 변화: AI와 SW 개발의 융합


ADK는 기존의 데이터 과학팀이나 LLM 연구팀뿐만 아니라, 일반 소프트웨어 개발팀(Backend, Frontend)이 AI 에이전트 개발에 깊이 참여할 수 있도록 합니다.

  • 다양한 언어 지원 (Go, Java, Python): 기존 백엔드 시스템을 운영하는 팀이 익숙한 언어로 에이전트 로직과 도구를 개발할 수 있게 됩니다.
  • 역할 분리: ADK의 모듈화된 구조는 개발팀 내에서 역할을 분리하기 용이합니다. 예를 들어, ML 엔지니어는 LLM 정책 및 평가 로직을, SW 엔지니어는 도구 통합 및 오케스트레이션 파이프라인을 담당하는 방식으로 협업할 수 있습니다.

마무리하며


“GDG Devfest Seoul 2025”에서 만난 "Agent Development Kit"는 AI 에이전트 개발을 이전보다 훨씬 더 쉽고 체계적인 영역으로 끌어올린 것 같습니다. 당장에 풀스택 개발자인 저도 하루빨리 Agent 개발을 해 보고 싶다는 생각이 무럭무럭 솟네요.

이미 대부분의 서비스에 AI Agent는 ‘옵션’이 아닌 ‘필수’가 거의 되어버렸습니다. 코드 중심의 개발 방식, 뛰어난 확장성, 그리고 Google 생태계의 지원을 등에 업은 ADK는 이 ‘필수’를 쉽게 이끌어줄 강력한 툴이 될 것이라고 생각합니다.

다들 한번 알아보시고 시작해보시길 추천드립니다. 당신의 다음 AI 프로젝트는 ADK 한번 도입해보는 것이 어떨까요.

Reference


profile
개발자에서 엔지니어로, 엔지니어에서 리더로

0개의 댓글