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.1.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-3.7-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: 상태 관리, 체크포인트 설정, 휴먼 인 더 루프 지원을 제공하는 LangGraph 스타일의 워크플로 오케스트레이션입니다.
- CustomAgent: 에이전트 동작을 완전히 제어하면서 사용자 지정 로직을 구현할 수 있습니다.
- 워크플로 에이전트: 미리 정의된 실행 경로를 따르는 결정론적 에이전트입니다.
SequentialAgent: 하위 에이전트를 순서대로 실행합니다.ParallelAgent: 하위 에이전트를 동시에 실행합니다.LoopAgent: 조건이 충족될 때까지 하위 에이전트를 반복적으로 실행합니다.
도구
도구를 사용하면 에이전트가 대화를 넘어선 기능을 수행할 수 있으며, 외부 APIs와 상호 작용하거나 정보를 검색하거나 사용자 지정 작업을 수행할 수 있습니다.
- FunctionTool: 모든 비동기 Rust 함수를 도구로 래핑합니다.
- GoogleSearchTool: 기본 제공 웹 검색 기능입니다.
- BrowserToolset: 웹 자동화를 위한 46개의 WebDriver 도구입니다(탐색, 양식, 스크린샷 등).
- ExitLoopTool: LoopAgent에서 루프 종료를 제어합니다.
- McpToolset: 하나의 MCP 서버에 연결하고 검토된 도구, 리소스, 프롬프트, 완성, 구독, 정보 요청 및 협상된 작업을 노출합니다.
- 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:
gemini-3.7-flash,gemini-3.6-flash,gemini-3.5-flash-lite - OpenAI:
gpt-5.6-terra,gpt-5.6-sol,gpt-5.6-luna, Azure OpenAI 배포 - Anthropic:
claude-sonnet-5,claude-opus-5,claude-fable-5 - DeepSeek:
deepseek-v4-flash,deepseek-v4-pro - Groq:
openai/gpt-oss-120b및openai/gpt-oss-20b를 사용하는 초고속 추론 - 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 기능을 사용합니다. 네 가지 사전 설정이 컴파일되는 크레이트를 제어합니다.
# Minimal (default) — Gemini, agents, runner, sessions
adk-rust = "2.1.0"
# Standard — adds tools, memory, telemetry, server, auth, graph, eval, guardrail, plugins, artifacts, skills
adk-rust = { version = "2.1.0", features = ["standard"] }
# Enterprise — standard + realtime, browser, RAG, payments, AWP
adk-rust = { version = "2.1.0", features = ["enterprise"] }
# Full — enterprise + audio, code execution, sandbox
adk-rust = { version = "2.1.0", features = ["full"] }
# Equivalent explicit minimal selection
adk-rust = { version = "2.1.0", default-features = false, features = ["minimal"] }
# Custom: Pick what you need
adk-rust = { version = "2.1.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는 여러 언어로 제공됩니다.
다음: 빠른 시작 →