ADK-Rust 소개
Agent Development Kit (ADK)는 AI 에이전트를 개발하고 배포하기 위한 유연하고 모듈식 프레임워크입니다. Gemini와 Google 생태계에 최적화되어 있지만, ADK는 모델에 구애받지 않고, 배포 방식에도 구애받지 않으며, 다른 프레임워크와의 호환성을 위해 설계되었습니다. ADK는 에이전트 개발을 소프트웨어 개발에 더 가깝게 느껴지도록 설계되어, 개발자가 단순한 작업부터 복잡한 워크플로까지 아우르는 에이전트형 아키텍처를 더 쉽게 만들고, 배포하고, 조율할 수 있게 합니다.
참고: ADK-Rust는 Rust 1.95.0 이상이 필요합니다.
설치
프로젝트에 ADK-Rust를 추가하세요:
cargo add adk-rust
또는 Cargo.toml에 추가하세요:
[dependencies]
adk-rust = "2.0.0"
tokio = { version = "1.40", features = ["full"] }
빠른 예제
use adk_rust::prelude::*;
use std::sync::Arc;
#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
let api_key = std::env::var("GOOGLE_API_KEY")?;
let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;
let agent = LlmAgentBuilder::new("assistant")
.description("A helpful AI assistant")
.model(Arc::new(model))
.build()?;
println!("Agent '{}' ready!", agent.name());
Ok(())
}
아키텍처 개요
ADK-Rust는 모듈성과 확장성을 위해 설계된 계층형 아키텍처를 사용합니다:
핵심 개념
ADK-Rust는 강력한 AI 에이전트를 만들기 위해 함께 동작하는 몇 가지 핵심 기본 요소를 중심으로 구성되어 있습니다:
에이전트
특정 작업을 위해 설계된 기본 작업 단위입니다. ADK-Rust는 여러 에이전트 유형을 제공합니다:
- LlmAgent: 추론과 의사 결정을 위해 대규모 언어 모델을 사용합니다. 대부분의 사용 사례에서 이 유형이 기본 에이전트입니다.
- RealtimeAgent: 양방향 오디오 스트리밍을 위해 OpenAI Realtime API 또는 Gemini Live API를 사용하는 음성 지원 에이전트입니다.
- GraphAgent: 상태 관리, 체크포인팅, 그리고 human-in-the-loop 지원을 포함한 LangGraph 스타일의 워크플로 조율입니다.
- CustomAgent: 에이전트 동작을 완전히 제어하면서 사용자 정의 로직을 구현할 수 있게 해줍니다.
- Workflow Agents: 미리 정의된 실행 경로를 따르는 결정론적 에이전트입니다:
SequentialAgent: 하위 에이전트를 순서대로 실행합니다ParallelAgent: 하위 에이전트를 동시에 실행합니다LoopAgent: 조건이 충족될 때까지 하위 에이전트를 반복적으로 실행합니다
도구
도구는 에이전트에게 대화를 넘어서는 기능을 제공하여, 외부 APIs와 상호작용하고, 정보를 검색하거나, 사용자 정의 작업을 수행할 수 있게 합니다:
- FunctionTool: 모든 async Rust 함수를 도구로 감싸기
- GoogleSearchTool: 내장 웹 검색 기능
- BrowserToolset: 웹 자동화를 위한 46개 WebDriver 도구(탐색, 폼, 스크린샷 등)
- ExitLoopTool: LoopAgent에서 제어 루프 종료
- McpToolset: 하나의 MCP 서버에 연결하고 검토된 도구, 리소스, 프롬프트, completion, subscriptions, elicitation, negotiated tasks를 노출
- McpServerManager: 애플리케이션 실행 중 로컬 MCP 서버의 변경 가능한 레지스트리를 추가, 업데이트, 모니터링, 재시작, 유지 및 집계
세션
세션은 단일 대화의 컨텍스트를 처리하며, 다음을 포함합니다:
- 세션 ID: 대화의 고유 식별자
- 이벤트: 대화 기록(사용자 메시지, 에이전트 응답, 도구 호출)
- 상태: 스코프가 적용된 접두사(
app:,user:,temp:)를 가진 대화용 작업 메모리
콜백
에이전트 실행의 특정 지점에서 실행되는 사용자 정의 코드:
before_agent/after_agent: 에이전트 호출 가로채기before_model/after_model: LLM 호출 가로채기before_tool/after_tool: 도구 실행 가로채기
콜백은 로깅, 가드레일, 캐싱, 동작 수정 기능을 제공합니다.
아티팩트
파일, 이미지 또는 기타 비텍스트 콘텐츠를 위한 이진 데이터 저장소:
- 버전 관리와 함께 아티팩트 저장 및 로드
- 네임스페이스 범위 지정(세션 수준 또는 사용자 수준)
- 플러그형 저장 백엔드
이벤트
세션 중에 발생하는 일을 나타내는 통신의 기본 단위:
- 사용자 메시지
- 에이전트 응답
- 도구 호출 및 결과
- 상태 변경
이벤트는 대화 기록을 구성하며 재생과 디버깅을 가능하게 합니다.
모델
LlmAgents를 구동하는 기반 LLM. ADK-Rust는 Gemini에 최적화되어 있지만 Llm 트레이트를 통해 여러 제공자를 지원합니다:
- Gemini: Google의 Gemini 모델(
gemini-3-pro,gemini-3-flash,gemini-2.5-flash,gemini-2.5-pro) - OpenAI:
gpt-5.1,gpt-5,gpt-5-mini, Azure OpenAI - Anthropic:
claude-opus-4-6,claude-sonnet-4-6,claude-haiku-4-5 - DeepSeek: 사고 모드를 지원하는
deepseek-r1,deepseek-v3.1,deepseek-chat - Groq:
llama-4-scout,llama-3.1-70b-versatile,mixtral-8x7b-32768를 사용한 초고속 추론 - Ollama:
qwen3.6:35b-a3b,qwen3.5,llama3.2:3b,deepseek-r1:14b를 사용한 로컬 추론 - mistral.rs: 하드웨어 가속을 사용하는 고성능 로컬 추론
모든 제공자는 상호 교환 가능한 사용을 위해 동일한 트레이트를 구현합니다:
pub trait Llm: Send + Sync {
async fn generate(&self, request: LlmRequest) -> Result<LlmResponse>;
async fn generate_stream(&self, request: LlmRequest) -> Result<LlmResponseStream>;
}
실행기
실행 흐름을 관리하고, 에이전트 상호작용을 조율하며, 백엔드 서비스와 연동하는 엔진입니다. Runner는 다음을 처리합니다:
- 에이전트 호출 및 응답 처리
- 도구 실행
- 세션 및 상태 관리
- 이벤트 스트리밍
기능 플래그
ADK-Rust는 모듈성을 위해 Cargo feature를 사용합니다. 네 가지 프리셋이 어떤 crate가 컴파일될지 제어합니다:
# Minimal (default) — Gemini, agents, runner, sessions
adk-rust = "2.0.0"
# Standard — adds tools, memory, telemetry, server, auth, graph, eval, guardrail, plugins, artifacts, skills
adk-rust = { version = "2.0.0", features = ["standard"] }
# Enterprise — standard + realtime, browser, RAG, payments, AWP
adk-rust = { version = "2.0.0", features = ["enterprise"] }
# Full — enterprise + audio, code execution, sandbox
adk-rust = { version = "2.0.0", features = ["full"] }
# Equivalent explicit minimal selection
adk-rust = { version = "2.0.0", default-features = false, features = ["minimal"] }
# Custom: Pick what you need
adk-rust = { version = "2.0.0", default-features = false, features = ["agents", "gemini", "tools"] }
사용 가능한 기능:
agents: 에이전트 구현(LlmAgent, CustomAgent, 워크플로우 에이전트)models: 모델 통합(Gemini)openai: OpenAI 모델(GPT-5, GPT-5 Mini)anthropic: Anthropic 모델(Claude 4.6, Claude 4.5)deepseek: DeepSeek 모델(chat, reasoner)groq: Groq 초고속 추론ollama: 로컬 Ollama 모델tools: 도구 시스템 및 내장 도구sessions: 세션 관리artifacts: 아티팩트 저장소memory: 의미 검색과 이중 시계열 지식 그래프 백엔드(GraphMemoryService)를 갖춘 메모리 시스템runner: 에이전트 실행 런타임server: HTTP 서버(REST + A2A)telemetry: 추적 헬퍼; OTLP를 내보낼 때만telemetry-otlp를 추가cli: CLI 런처; 필요할 때만cli-openai,cli-anthropic또는 다른 CLI 제공자 기능을 추가mcp:adk-tool용 Model Context Protocol 통합record-payloads: 전체 추적 페이로드 캡처를 선택적으로 사용graph: 그래프 기반 워크플로우(표준 프리셋)realtime: 음성 + 멀티모달 스트리밍 — OpenAI Realtime 및 Gemini Live, 양방향 오디오, 비디오 프레임, 감성 대화, 서버 측 도구(엔터프라이즈 프리셋)browser: 브라우저 자동화(엔터프라이즈 프리셋)eval: 에이전트 평가(표준 프리셋)rag: RAG 파이프라인(엔터프라이즈 프리셋)code: 코드 실행(풀 프리셋)sandbox: 샌드박스 실행(풀 프리셋)audio: 오디오 처리(풀 프리셋)
다른 언어
ADK는 여러 언어로 제공됩니다:
- Python:
pip install google-adk- Documentation - Go:
go get google.golang.org/adk- Documentation - Java: Maven/Gradle - Documentation
다음: 빠른 시작 →