ADK-Rust v0.2.0: 첫 번째 안정화 릴리스
ADK-Rust v0.2.0 출시 - 그래프 에이전트, 실시간 음성, 브라우저 자동화, 평가 프레임워크 및 ADK Studio 시각적 빌더를 포함하는 첫 번째 안정화 릴리스입니다.
ADK-Rust v0.2.0: 첫 번째 안정화 릴리스
프로덕션 준비가 된 AI 에이전트 구축을 위한 Rust 프레임워크의 첫 번째 안정화 릴리스인 ADK-Rust v0.2.0을 발표하게 되어 기쁩니다. 이번 릴리스는 중요한 새 기능, 향상된 안정성, 그리고 향후 시맨틱 버저닝에 대한 약속과 함께 주요 이정표를 세웁니다.
v0.2.0의 새로운 기능
🔀 그래프 에이전트 (LangGraph 스타일 워크플로)
새로운 adk-graph 크레이트는 Rust에 LangGraph 스타일 워크플로 오케스트레이션을 제공합니다:
use adk_graph::{prelude::*, node::AgentNode}; let graph = GraphAgent::builder("support_router") .channels(&["input", "category", "response"]) .node(classifier_node) .node(billing_node) .node(technical_node) .edge(START, "classifier") .conditional_edges("classifier", Router::by_field("category", vec![ ("billing", "billing_agent"), ("technical", "technical_agent"), ])) .edge("billing_agent", END) .edge("technical_agent", END) .build()?;
주요 기능:
- 상태 관리: 자동 병합 기능이 있는 유형화된 상태 채널
- 조건부 라우팅: 상태 필드 또는 사용자 지정 로직 기반 라우팅
- 체크포인트: 내결함성을 위한 SQLite 및 인메모리 백엔드
- 휴먼 인 더 루프: 인간 승인을 위한 워크플로 중단
- 순환 그래프: 반복 제한이 있는 ReAct 패턴 지원
🎙️ 실시간 음성 에이전트
양방향 오디오 스트리밍으로 음성 지원 AI 비서를 구축하세요:
use adk_realtime::{RealtimeAgent, openai::OpenAIRealtimeModel}; let agent = RealtimeAgent::builder("voice_assistant") .model(Arc::new(OpenAIRealtimeModel::new(&api_key, "gpt-4o-realtime-preview"))) .instruction("You are a helpful voice assistant.") .voice("alloy") .server_vad() // Voice Activity Detection .build()?;
지원되는 공급자:
- OpenAI 실시간 API (
gpt-4o-realtime-preview,gpt-realtime) - Google Gemini 라이브 API (
gemini-2.0-flash-live-preview)
기능:
- 양방향 오디오 스트리밍 (PCM16, G711)
- 서버 측 음성 활동 감지
- 음성 대화 중 도구 호출
- 다중 에이전트 핸드오프
🌐 브라우저 자동화
adk-browser 크레이트는 웹 자동화를 위한 46가지 WebDriver 도구를 제공합니다:
use adk_browser::{BrowserSession, BrowserToolset, BrowserConfig}; let session = Arc::new(BrowserSession::new( BrowserConfig::new().webdriver_url("http://localhost:4444") )); let tools = BrowserToolset::new(session).all_tools(); let agent = LlmAgentBuilder::new("web_agent") .model(model) .instruction("Browse the web and extract information.") .tools(tools) .build()?;
도구 카테고리:
- 탐색:
browser_navigate,browser_back,browser_forward - 추출:
browser_extract_text,browser_extract_links,browser_extract_html - 상호 작용:
browser_click,browser_type,browser_select - 양식:
browser_fill_form,browser_submit - 스크린샷:
browser_screenshot,browser_screenshot_element - JavaScript:
browser_evaluate,browser_evaluate_async
📊 에이전트 평가 프레임워크
adk-eval 크레이트로 에이전트 동작을 테스트하고 검증하세요:
use adk_eval::{Evaluator, EvaluationConfig, EvaluationCriteria}; let config = EvaluationConfig::with_criteria( EvaluationCriteria::exact_tools() .with_response_similarity(0.8) ); let evaluator = Evaluator::new(config); let report = evaluator .evaluate_file(agent, "tests/my_agent.test.json") .await?; assert!(report.all_passed());
평가 기능:
- 궤적 검증 (도구 호출 시퀀스)
- 응답 유사성 (자카드, 레벤슈타인, ROUGE)
- LLM 판단 의미 일치
- 사용자 지정 기준을 사용한 루브릭 기반 점수 매기기
- 안전 및 환각 감지
🎨 ADK Studio: 시각적 에이전트 빌더
AI 에이전트 구축을 위한 드래그 앤 드롭 인터페이스:
cargo install adk-studio adk-studio
기능:
- 시각적 워크플로 설계를 위한 ReactFlow 캔버스
- 전체 에이전트 팔레트: LLM, 순차, 병렬, 루프, 라우터
- 도구 통합: 함수, MCP, 브라우저, Google 검색
- SSE 스트리밍을 통한 실시간 채팅 테스트
- 프로덕션 Rust로 원클릭 코드 생성
🛡️ 가드레일
adk-guardrail 크레이트를 사용한 입력/출력 유효성 검사:
use adk_guardrail::{Guardrails, PiiRedactor, ContentFilter}; let guardrails = Guardrails::new() .add(PiiRedactor::default()) .add(ContentFilter::block_harmful()); let safe_input = guardrails.process_input(user_message)?; let safe_output = guardrails.process_output(agent_response)?;
내장 가드레일:
- PII 수정 (이메일, 전화번호, SSN, 신용카드)
- 콘텐츠 필터링 (유해, 부적절)
- JSON 스키마 유효성 검사
- 사용자 지정 유효성 검사 규칙
🖼️ 동적 UI 생성
adk-ui 크레이트는 에이전트가 풍부한 인터페이스를 렌더링할 수 있도록 합니다:
use adk_ui::{UiToolset, UI_AGENT_PROMPT}; let agent = LlmAgentBuilder::new("ui_assistant") .instruction(UI_AGENT_PROMPT) .tools(UiToolset::all_tools()) .build()?;
구성 요소: 카드, 테이블, 차트, 양식을 포함한 28가지 UI 구성 요소
템플릿: 일반적인 패턴을 위한 10가지 사전 구축된 템플릿
React 클라이언트: npm install @zavora-ai/adk-ui-react
주요 변경 사항
RunnerConfig 변경 사항
RunnerConfig 구조체에 이제 run_config 필드가 포함됩니다:
// Before (v0.1.x) let runner = Runner::new(RunnerConfig { app_name: "my_app".to_string(), agent: agent.clone(), session_service: session_service.clone(), artifact_service: None, memory_service: None, })?; // After (v0.2.0) let runner = Runner::new(RunnerConfig { app_name: "my_app".to_string(), agent: agent.clone(), session_service: session_service.clone(), artifact_service: None, memory_service: None, run_config: None, // NEW: Optional RunConfig for execution settings })?;
종속성 업데이트
sqlx0.7에서 0.8로 업그레이드 (SQLite 호환성을 위해 필요)- Rust 2024 에디션 (Rust 1.85+ 필요)
마이그레이션 가이드
-
Cargo.toml 업데이트:
adk-rust = "0.2.0" -
RunnerConfig에
run_config: None추가:RunnerConfig { // ... existing fields ... run_config: None, } -
SQLite 세션 사용 시 sqlx 업데이트:
sqlx = { version = "0.8", features = ["sqlite", "runtime-tokio"] }
성능 향상
- 스트리밍 최적화: 이벤트 스트리밍에서 메모리 할당 감소
- 세션 캐싱: 세션 조회 성능 향상
- 도구 실행: 가능한 경우 병렬 도구 실행
문서
모든 문서는 v0.2.0에 맞춰 업데이트되었습니다:
문서는 이제 영어, 스페인어, 중국어, 일본어, 포르투갈어, 독일어, 프랑스어, 아랍어, 힌디어, 한국어를 포함한 9개 언어로 제공됩니다.
다음 단계
v0.3.0에 대한 작업이 이미 진행 중이며, 다음과 같은 기능이 계획되어 있습니다:
- 클라우드 통합 (AWS Bedrock, Azure OpenAI, GCP Vertex AI)
- 더 많은 벡터 데이터베이스 백엔드를 통한 향상된 메모리 시스템
- 워크플로 템플릿 및 사전 구축된 에이전트 패턴
- 성능 프로파일링 및 최적화 도구
시작하기
# Create a new project cargo new my_agent cd my_agent # Add ADK-Rust echo 'adk-rust = "0.2.0"' >> Cargo.toml echo 'tokio = { version = "1.40", features = ["full"] }' >> Cargo.toml # Set your API key export GOOGLE_API_KEY="your-api-key" # Run an example cargo run --example quickstart
감사드립니다
코드, 문서, 버그 보고서 및 피드백을 통해 이번 릴리스에 기여해주신 모든 분들께 진심으로 감사드립니다. ADK-Rust는 커뮤니티에 의해, 커뮤니티를 위해 만들어집니다.
링크:
즐거운 빌딩 되세요! 🦀🤖