Introdução ao 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 do Google, ADK é independente de modelo, independente de implantação e desenvolvido para ser compatível com outros frameworks. ADK foi projetado para fazer o desenvolvimento de agentes se parecer mais com o desenvolvimento de software, facilitando para os desenvolvedores criar, implantar e orquestrar arquiteturas agênticas que vão de tarefas simples a fluxos de trabalho complexos.
Observação: 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.1.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-3.7-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 utiliza uma arquitetura em camadas projetada para oferecer modularidade e extensibilidade:
Conceitos principais
ADK-Rust é desenvolvido com base em vários elementos primitivos importantes que trabalham juntos para criar agentes de IA poderosos:
Agentes
A unidade de trabalho fundamental projetada para tarefas específicas. ADK-Rust fornece vários tipos de agentes:
- LlmAgent: Usa um Large Language Model para raciocínio e tomada de decisões. Este é o principal tipo de agente para a maioria dos casos de uso.
- RealtimeAgent: Agentes com recursos de voz que usam OpenAI Realtime API ou Gemini Live API para streaming de áudio bidirecional.
- GraphAgent: Orquestração de fluxos de trabalho no estilo LangGraph, com gerenciamento de estado, criação de checkpoints e suporte a participação humana no processo.
- CustomAgent: Permite implementar lógica personalizada com controle total sobre o comportamento do agente.
- Agentes de fluxo de trabalho: 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 oferecem aos agentes recursos além da conversação, permitindo que interajam com APIs externos, pesquisem informações ou realizem operações personalizadas:
- FunctionTool: Encapsula qualquer função assíncrona do Rust como uma ferramenta
- GoogleSearchTool: Recurso integrado de pesquisa na web
- BrowserToolset: 46 ferramentas WebDriver para automação da web (navegação, formulários, capturas de tela etc.)
- ExitLoopTool: Controla o término do loop em LoopAgent
- McpToolset: Conecta um servidor MCP e expõe ferramentas, recursos, prompts, conclusões, assinaturas, elicitação e tarefas negociadas revisados
- McpServerManager: Adiciona, atualiza, monitora, reinicia, persiste e agrega um registro em constante mudança de servidores MCP locais enquanto a aplicação está em execução
Sessões
As sessões gerenciam o contexto de uma única conversa, incluindo:
- ID da sessão: Identificador exclusivo 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 prefixos com escopo (
app:,user:,temp:)
Retornos de chamada
Código personalizado executado em pontos específicos da execução do agente:
before_agent/after_agent: Interceptam invocações do agentebefore_model/after_model: Interceptam chamadas de LLMbefore_tool/after_tool: Interceptam execuções de ferramentas
Os retornos de chamada permitem registro, proteções, armazenamento em cache e modificação do comportamento.
Artefatos
Armazenamento de dados binários para arquivos, imagens ou outros conteúdos que não sejam texto:
- Salvar e carregar artefatos com controle de versões
- Escopo de namespace (no nível da sessão ou do usuário)
- Backends de armazenamento conectáveis
Eventos
A unidade básica de comunicação que representa o que acontece durante uma sessão:
- Mensagens do usuário
- Respostas do agente
- Chamadas de ferramentas e resultados
- Alterações de estado
Os eventos formam o histórico da conversa e permitem reprodução e depuração.
Modelos
O LLM subjacente que fornece energia para LlmAgents. ADK-Rust é otimizado para Gemini, mas oferece suporte a vários provedores por meio do trait 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, implantações do Azure OpenAI - Anthropic:
claude-sonnet-5,claude-opus-5,claude-fable-5 - DeepSeek:
deepseek-v4-flash,deepseek-v4-pro - Groq: Inferência ultrarrápida com
openai/gpt-oss-120beopenai/gpt-oss-20b - 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 entre agentes e coordena os serviços de backend. O Runner gerencia:
- Invocação de agentes e processamento de respostas
- Execução de ferramentas
- Gerenciamento de sessões e estado
- Streaming de eventos
Sinalizadores de recursos
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.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"] }
Recursos disponíveis:
agents: Implementações de agentes (LlmAgent, CustomAgent, agentes de fluxo de trabalho)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 da Groqollama: Modelos Ollama locaistools: Sistema de ferramentas e ferramentas integradassessions: Gerenciamento de sessõesartifacts: Armazenamento de artefatosmemory: Sistema de memória com pesquisa semântica e um back-end de grafo de conhecimento bitemporal (GraphMemoryService)runner: Ambiente de execução de agentesserver: Servidor HTTP (REST + A2A)telemetry: auxiliares de rastreamento; adicionetelemetry-otlpsomente ao exportar OTLPcli: inicializador CLI; adicionecli-openai,cli-anthropicou outro recurso de provedor CLI somente quando necessáriomcp: Integração do Model Context Protocol paraadk-toolrecord-payloads: habilitação opcional da captura completa do conteúdo de rastreamentograph: Fluxos de trabalho baseados em grafos (predefinição padrão)realtime: Streaming de voz + multimodal — OpenAI Realtime e Gemini Live, áudio bidirecional, quadros de vídeo, diálogo afetivo, ferramentas do lado do servidor (predefinição empresarial)browser: Automação de navegador (predefinição empresarial)eval: Avaliação de agentes (predefinição padrão)rag: Pipeline RAG (predefinição empresarial)code: Execução de código (predefinição completa)sandbox: Execução em ambiente isolado (predefinição completa)audio: Processamento de áudio (predefinição completa)
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 →