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:

Rendering architecture…

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 ordem
    • ParallelAgent: Executa subagentes simultaneamente
    • LoopAgent: 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 agente
  • before_model / after_model: Interceptam chamadas de LLM
  • before_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-120b e openai/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 Groq
  • ollama: Modelos Ollama locais
  • tools: Sistema de ferramentas e ferramentas integradas
  • sessions: Gerenciamento de sessões
  • artifacts: Armazenamento de artefatos
  • memory: Sistema de memória com pesquisa semântica e um back-end de grafo de conhecimento bitemporal (GraphMemoryService)
  • runner: Ambiente de execução de agentes
  • server: Servidor HTTP (REST + A2A)
  • telemetry: auxiliares de rastreamento; adicione telemetry-otlp somente ao exportar OTLP
  • cli: inicializador CLI; adicione cli-openai, cli-anthropic ou outro recurso de provedor CLI somente quando necessário
  • mcp: Integração do Model Context Protocol para adk-tool
  • record-payloads: habilitação opcional da captura completa do conteúdo de rastreamento
  • graph: 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:


Próximo: Início rápido →

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