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는 모듈성과 확장성을 고려해 설계된 계층형 아키텍처를 사용합니다.

Rendering architecture…

핵심 개념

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는 여러 언어로 제공됩니다.

  • Python: pip install google-adk - 문서
  • Go: go get google.golang.org/adk - 문서
  • Java: Maven/Gradle - 문서

다음: 빠른 시작 →

ADK-Rust 소개 - ADK-Rust 문서 | ADK-Rust