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:

Rendering architecture…

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 ordem
    • ParallelAgent: Executa subagentes simultaneamente
    • LoopAgent: 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 agente
  • before_model / after_model: Interceptar chamadas LLM
  • before_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-chat com 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 Groq
  • ollama: modelos locais do Ollama
  • tools: sistema de ferramentas e ferramentas integradas
  • sessions: gerenciamento de sessão
  • artifacts: armazenamento de artefatos
  • memory: sistema de memória com busca semântica e um backend de grafo de conhecimento bi-temporal (GraphMemoryService)
  • runner: runtime de execução do agente
  • server: servidor HTTP (REST + A2A)
  • telemetry: auxiliares de tracing; adicione telemetry-otlp somente ao exportar OTLP
  • cli: launcher CLI; adicione cli-openai, cli-anthropic ou outra feature de provedor CLI somente quando necessário
  • mcp: integração do Model Context Protocol para adk-tool
  • record-payloads: optar por captura completa da carga útil de tracing
  • graph: 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:


Próximo: Início rápido →

Introdução a ADK-Rust - Documentação ADK-Rust | ADK-Rust