ADK-Rust 소개

Agent Development Kit (ADK)는 AI 에이전트를 개발하고 배포하기 위한 유연하고 모듈화된 프레임워크입니다. Gemini 및 Google 생태계에 최적화되어 있지만, ADK는 모델 불가지론적이며, 배포 불가지론적이며, 다른 프레임워크와의 호환성을 위해 구축되었습니다. ADK는 에이전트 개발이 소프트웨어 개발처럼 느껴지도록 설계되어, 개발자가 간단한 작업부터 복잡한 워크플로우에 이르는 에이전트 아키텍처를 더 쉽게 생성, 배포 및 오케스트레이션할 수 있도록 합니다.

참고: ADK-Rust v0.2.0에는 Rust 1.85.0 이상이 필요합니다.

설치

프로젝트에 ADK-Rust를 추가하세요:

cargo add adk-rust

또는 Cargo.toml에 추가하세요:

[dependencies]
adk-rust = "0.2.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는 모듈성 및 확장성을 위해 설계된 계층형 아키텍처를 사용합니다:

┌─────────────────────────────────────────────────────────────┐
│                    애플리케이션 계층                         │
│              CLI • REST Server • 웹 UI                       │
├─────────────────────────────────────────────────────────────┤
│                      Runner 계층                             │
│           Agent 실행 • 컨텍스트 관리                         │
├─────────────────────────────────────────────────────────────┤
│                      Agent 계층                              │
│    LlmAgent • CustomAgent • Workflow Agents                  │
├─────────────────────────────────────────────────────────────┤
│                     서비스 계층                              │
│      Models • Tools • Sessions • Artifacts • Memory          │
└─────────────────────────────────────────────────────────────┘

핵심 개념

ADK-Rust는 강력한 AI 에이전트를 생성하기 위해 함께 작동하는 여러 핵심 기본 요소들을 기반으로 구축됩니다:

에이전트

특정 작업을 위해 설계된 근본적인 작업 단위입니다. ADK-Rust는 여러 에이전트 유형을 제공합니다:

  • LlmAgent: 추론 및 의사 결정을 위해 Large Language Model을 사용합니다. 대부분의 사용 사례에서 기본 에이전트 유형입니다.
  • RealtimeAgent: 양방향 오디오 스트리밍을 위해 OpenAI Realtime API 또는 Gemini Live API를 사용하는 음성 지원 에이전트입니다.
  • GraphAgent: 상태 관리, 체크포인트 및 휴먼 인 더 루프(human-in-the-loop) 지원을 포함하는 LangGraph 스타일 워크플로우 오케스트레이션입니다.
  • CustomAgent: 에이전트 동작을 완전히 제어하여 사용자 지정 로직을 구현할 수 있습니다.
  • 워크플로우 에이전트: 미리 정의된 실행 경로를 따르는 결정론적 에이전트입니다:
    • SequentialAgent: 하위 에이전트를 순서대로 실행합니다
    • ParallelAgent: 하위 에이전트를 동시에 실행합니다
    • LoopAgent: 조건이 충족될 때까지 하위 에이전트를 반복적으로 실행합니다

도구

도구는 에이전트에게 대화 이상의 능력을 부여하여 외부 API와 상호 작용하고, 정보를 검색하거나, 사용자 지정 작업을 수행할 수 있게 합니다:

  • FunctionTool: 모든 async Rust 함수를 도구로 래핑합니다
  • GoogleSearchTool: 내장 웹 검색 기능
  • BrowserToolset: 웹 자동화를 위한 46가지 WebDriver 도구 (탐색, 양식, 스크린샷 등)
  • ExitLoopTool: LoopAgent에서 루프 종료를 제어합니다
  • McpToolset: Model Context Protocol 서버와의 통합

세션

세션은 단일 대화의 컨텍스트를 처리하며 다음을 포함합니다:

  • Session ID: 대화의 고유 식별자
  • 이벤트: 대화 기록 (사용자 메시지, 에이전트 응답, 도구 호출)
  • 상태: 스코프 접두사 (app:, user:, temp:)가 있는 대화의 작업 메모리

콜백

에이전트 실행의 특정 지점에서 실행되는 사용자 지정 코드:

  • before_agent / after_agent: 에이전트 호출을 가로챕니다
  • before_model / after_model: LLM 호출을 가로챕니다
  • before_tool / after_tool: 도구 실행을 가로챕니다

콜백은 로깅, 가드레일, 캐싱 및 동작 수정을 가능하게 합니다.

아티팩트

파일, 이미지 또는 기타 텍스트가 아닌 콘텐츠를 위한 바이너리 데이터 저장소:

  • 버전 관리와 함께 아티팩트를 저장하고 로드합니다
  • 네임스페이스 범위 지정 (세션 수준 또는 사용자 수준)
  • 플러그형 스토리지 백엔드

이벤트

세션 중에 발생하는 일을 나타내는 기본적인 통신 단위:

  • 사용자 메시지
  • 에이전트 응답
  • 도구 호출 및 결과
  • 상태 변경

이벤트는 대화 기록을 형성하고 재생 및 디버깅을 가능하게 합니다.

모델

LlmAgent를 구동하는 기본 LLM입니다. ADK-Rust는 Gemini에 최적화되어 있지만, Llm 트레이트를 통해 여러 제공업체를 지원합니다:

  • Gemini: Google의 Gemini 모델 (gemini-3-pro-preview, gemini-2.5-flash, gemini-2.5-pro)
  • OpenAI: gpt-5.2, gpt-4o, gpt-4o-mini, Azure OpenAI
  • Anthropic: claude-sonnet-4-5, claude-opus-4-5, claude-sonnet-4
  • DeepSeek: deepseek-chat, deepseek-reasoner (thinking mode 포함)
  • Groq: llama-3.3-70b-versatile, mixtral-8x7b-32768를 사용한 초고속 추론
  • Ollama: llama3.2, qwen2.5, mistral, phi4를 사용한 로컬 추론
  • mistral.rs: 하드웨어 가속을 통한 고성능 로컬 추론

모든 제공업체는 상호 교환 가능한 사용을 위해 동일한 트레이트를 구현합니다:

pub trait Llm: Send + Sync {
    async fn generate(&self, request: LlmRequest) -> Result<LlmResponse>;
    async fn generate_stream(&self, request: LlmRequest) -> Result<LlmResponseStream>;
}

러너

실행 흐름을 관리하고, 에이전트 상호 작용을 조율하며, 백엔드 서비스와 협력하는 엔진입니다. 러너는 다음을 처리합니다:

  • 에이전트 호출 및 응답 처리
  • 도구 실행
  • 세션 및 상태 관리
  • 이벤트 스트리밍

기능 플래그

adk-rust는 모듈성을 위해 Cargo 기능을 사용합니다:

# Full installation (default)
adk-rust = "0.2.0"

# Minimal: Only agents + Gemini
adk-rust = { version = "0.2.0", default-features = false, features = ["minimal"] }

# Custom: Pick what you need
adk-rust = { version = "0.2.0", default-features = false, features = ["agents", "gemini", "tools"] }

사용 가능한 기능:

  • agents: Agent 구현 (LlmAgent, CustomAgent, workflow Agent)
  • models: 모델 통합 (Gemini)
  • openai: OpenAI 모델 (GPT-5, GPT-4o)
  • anthropic: Anthropic 모델 (Claude 4.5, Claude 4)
  • deepseek: DeepSeek 모델 (chat, reasoner)
  • groq: Groq 초고속 추론
  • ollama: 로컬 Ollama 모델
  • tools: Tool 시스템 및 내장 Tool
  • sessions: Session 관리
  • artifacts: Artifact 저장소
  • memory: 시맨틱 검색을 포함한 Memory 시스템
  • runner: Agent 실행 런타임
  • server: HTTP 서버 (REST + A2A)
  • telemetry: OpenTelemetry 통합
  • cli: CLI 런처

다른 언어

ADK는 여러 언어로 제공됩니다:

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

다음: 빠른 시작 →