Introdução a ADK-Rust
O Agent Development Kit (ADK) é um framework flexível e modular para desenvolver e implantar agentes de IA. Embora otimizado para Gemini e o ecossistema Google, ADK é agnóstico em relação ao modelo, agnóstico em relação à implantação e foi construído para ser compatível com outros frameworks. ADK foi projetado para tornar o desenvolvimento de agentes mais parecido com o desenvolvimento de software, facilitando para os desenvolvedores criar, implantar e orquestrar arquiteturas agentic que vão de tarefas simples a fluxos de trabalho complexos.
Nota: ADK-Rust requer Rust 1.95.0 ou superior.
Instalação
Adicione ADK-Rust ao seu projeto:
cargo add adk-rust
Ou adicione-o ao seu Cargo.toml:
[dependencies]
adk-rust = "2.0.0"
tokio = { version = "1.40", features = ["full"] }
Exemplo rápido
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(())
}
Visão geral da arquitetura
ADK-Rust usa uma arquitetura em camadas projetada para modularidade e extensibilidade:
Conceitos centrais
ADK-Rust é construído em torno de vários primitivos principais que trabalham juntos para criar agentes de IA poderosos:
Agentes
A unidade básica de trabalho projetada para tarefas específicas. ADK-Rust fornece vários tipos de agentes:
- LlmAgent: Usa um Modelo de Linguagem de Grande Porte para raciocínio e tomada de decisão. Este é o principal tipo de agente para a maioria dos casos de uso.
- RealtimeAgent: Agentes com voz usando OpenAI Realtime API ou Gemini Live API para streaming de áudio bidirecional.
- GraphAgent: Orquestração de fluxo de trabalho no estilo LangGraph com gerenciamento de estado, checkpoints e suporte human-in-the-loop.
- CustomAgent: Permite implementar lógica personalizada com controle total sobre o comportamento do agente.
- Workflow Agents: Agentes determinísticos que seguem caminhos de execução predefinidos:
SequentialAgent: Executa subagentes em ordemParallelAgent: Executa subagentes simultaneamenteLoopAgent: Executa subagentes iterativamente até que uma condição seja atendida
Ferramentas
As ferramentas dão aos agentes capacidades além da conversa, permitindo que interajam com APIs externos, busquem informações ou realizem operações personalizadas:
- FunctionTool: Envolve qualquer função Rust assíncrona como uma ferramenta
- GoogleSearchTool: Capacidade de busca na web integrada
- BrowserToolset: 46 ferramentas WebDriver para automação da web (navegação, formulários, capturas de tela, etc.)
- ExitLoopTool: Controle a terminação do loop em LoopAgent
- McpToolset: Conecte um servidor MCP e exponha ferramentas revisadas, recursos, prompts, conclusão, assinaturas, elicitação e tarefas negociadas
- McpServerManager: Adicione, atualize, monitore, reinicie, persista e agregue um registro mutável de servidores locais MCP enquanto a aplicação está em execução
Sessões
As sessões tratam do contexto de uma única conversa, incluindo:
- ID da sessão: Identificador único da conversa
- Eventos: O histórico da conversa (mensagens do usuário, respostas do agente, chamadas de ferramentas)
- Estado: Memória de trabalho da conversa com prefixes escopados (
app:,user:,temp:)
Callbacks
Código personalizado que é executado em pontos específicos da execução do agente:
before_agent/after_agent: Interceptar invocações do agentebefore_model/after_model: Interceptar chamadas LLMbefore_tool/after_tool: Interceptar execuções de ferramentas
Callbacks permitem logging, guardrails, caching e modificação de comportamento.
Artefatos
Armazenamento de dados binários para arquivos, imagens ou outros conteúdos não textuais:
- Salvar e carregar artefatos com versionamento
- Escopo de namespace (nível de sessão ou nível de usuário)
- Backends de armazenamento pluggáveis
Eventos
A unidade básica de comunicação que representa coisas que acontecem durante uma sessão:
- Mensagens do usuário
- Respostas do agente
- Chamadas de ferramentas e resultados
- Mudanças de estado
Os eventos formam o histórico da conversa e permitem replay e depuração.
Modelos
O LLM subjacente que alimenta LlmAgents. ADK-Rust é otimizado para Gemini, mas oferece suporte a múltiplos provedores por meio do trait Llm:
- Gemini: Os modelos Gemini do Google (
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-chatcom modo de pensamento - Groq: Inferência ultrarrápida com
llama-4-scout,llama-3.1-70b-versatile,mixtral-8x7b-32768 - Ollama: Inferência local com
qwen3.6:35b-a3b,qwen3.5,llama3.2:3b,deepseek-r1:14b - mistral.rs: Inferência local de alto desempenho com aceleração de hardware
Todos os provedores implementam o mesmo trait para uso intercambiável:
pub trait Llm: Send + Sync {
async fn generate(&self, request: LlmRequest) -> Result<LlmResponse>;
async fn generate_stream(&self, request: LlmRequest) -> Result<LlmResponseStream>;
}
Executor
O mecanismo que gerencia o fluxo de execução, orquestra as interações do agente e coordena com serviços de backend. O Runner lida com:
- Invocação do agente e processamento de respostas
- Execução de ferramentas
- Gerenciamento de sessão e estado
- Streaming de eventos
Flags de recurso
ADK-Rust usa recursos do Cargo para modularidade. Quatro predefinições controlam quais crates são compilados:
# 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"] }
Recursos disponíveis:
agents: Implementações de agente (LlmAgent, CustomAgent, agentes de workflow)models: Integrações de modelos (Gemini)openai: modelos OpenAI (GPT-5, GPT-5 Mini)anthropic: modelos Anthropic (Claude 4.6, Claude 4.5)deepseek: modelos DeepSeek (chat, reasoner)groq: inferência ultrarrápida do Groqollama: modelos locais do Ollamatools: sistema de ferramentas e ferramentas integradassessions: gerenciamento de sessãoartifacts: armazenamento de artefatosmemory: sistema de memória com busca semântica e um backend de grafo de conhecimento bi-temporal (GraphMemoryService)runner: runtime de execução do agenteserver: servidor HTTP (REST + A2A)telemetry: auxiliares de tracing; adicionetelemetry-otlpsomente ao exportar OTLPcli: launcher CLI; adicionecli-openai,cli-anthropicou outra feature de provedor CLI somente quando necessáriomcp: integração do Model Context Protocol paraadk-toolrecord-payloads: optar por captura completa da carga útil de tracinggraph: fluxos de trabalho baseados em grafo (predefinição padrão)realtime: Voz + streaming multimodal — OpenAI Realtime & Gemini Live, áudio bidirecional, quadros de vídeo, diálogo afetivo, ferramentas do lado do servidor (predefinição enterprise)browser: automação de navegador (predefinição enterprise)eval: avaliação de agente (predefinição standard)rag: pipeline RAG (predefinição enterprise)code: execução de código (predefinição full)sandbox: execução em sandbox (predefinição full)audio: processamento de áudio (predefinição full)
Outros idiomas
ADK está disponível em vários idiomas:
- Python:
pip install google-adk- Documentação - Go:
go get google.golang.org/adk- Documentação - Java: Maven/Gradle - Documentação
Próximo: Início rápido →