Introducción a ADK-Rust
Agent Development Kit (ADK) es un marco flexible y modular para desarrollar e implementar agentes de IA. Aunque está optimizado para Gemini y el ecosistema de Google, ADK es agnóstico al modelo, agnóstico al despliegue y está construido para ser compatible con otros marcos. ADK fue diseñado para que el desarrollo de agentes se sienta más como el desarrollo de software, facilitando a los desarrolladores crear, desplegar y orquestar arquitecturas agénticas que van desde tareas simples hasta flujos de trabajo complejos.
Nota: ADK-Rust requiere Rust 1.95.0 o superior.
Instalación
Añade ADK-Rust a tu proyecto:
cargo add adk-rust
O añádelo a tu Cargo.toml:
[dependencies]
adk-rust = "2.0.0"
tokio = { version = "1.40", features = ["full"] }
Ejemplo 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(())
}
Resumen de la arquitectura
ADK-Rust usa una arquitectura en capas diseñada para la modularidad y la extensibilidad:
Conceptos principales
ADK-Rust está construido alrededor de varios primitivos clave que trabajan juntos para crear potentes agentes de IA:
Agentes
La unidad básica de trabajo diseñada para tareas específicas. ADK-Rust proporciona varios tipos de agente:
- LlmAgent: Usa un modelo de lenguaje grande para el razonamiento y la toma de decisiones. Este es el tipo de agente principal para la mayoría de los casos de uso.
- RealtimeAgent: Agentes con voz que usan OpenAI Realtime API o Gemini Live API para transmisión de audio bidireccional.
- GraphAgent: Orquestación de flujos de trabajo al estilo LangGraph con gestión de estado, puntos de control y soporte human-in-the-loop.
- CustomAgent: Te permite implementar lógica personalizada con control total sobre el comportamiento del agente.
- Agentes de flujo de trabajo: Agentes deterministas que siguen rutas de ejecución predefinidas:
SequentialAgent: Ejecuta subagentes en ordenParallelAgent: Ejecuta subagentes de forma concurrenteLoopAgent: Ejecuta subagentes iterativamente hasta que se cumple una condición
Herramientas
Las herramientas dan a los agentes capacidades más allá de la conversación, permitiéndoles interactuar con APIs externos, buscar información o realizar operaciones personalizadas:
- FunctionTool: Envuelve cualquier función async de Rust como una herramienta
- GoogleSearchTool: Capacidad integrada de búsqueda web
- BrowserToolset: 46 herramientas de WebDriver para automatización web (navegación, formularios, capturas de pantalla, etc.)
- ExitLoopTool: Controla la terminación del bucle en LoopAgent
- McpToolset: Conecta un servidor MCP y expone herramientas revisadas, recursos, prompts, completion, subscriptions, elicitation y tareas negociadas
- McpServerManager: Añade, actualiza, supervisa, reinicia, persiste y agrega un registro cambiante de servidores MCP locales mientras la aplicación se está ejecutando
Sesiones
Las sesiones gestionan el contexto de una sola conversación, incluyendo:
- ID de sesión: Identificador único de la conversación
- Eventos: El historial de la conversación (mensajes del usuario, respuestas del agente, llamadas a herramientas)
- Estado: Memoria de trabajo para la conversación con prefijos delimitados (
app:,user:,temp:)
Callbacks
Código personalizado que se ejecuta en puntos específicos de la ejecución del agente:
before_agent/after_agent: Interceptan invocaciones del agentebefore_model/after_model: Interceptan llamadas a LLMbefore_tool/after_tool: Interceptan ejecuciones de herramientas
Los callbacks permiten registro, guardrails, caché y modificación del comportamiento.
Artefactos
Almacenamiento de datos binarios para archivos, imágenes u otro contenido no textual:
- Guarda y carga artefactos con versionado
- Segmentación por espacio de nombres (a nivel de sesión o de usuario)
- Backends de almacenamiento enchufables
Eventos
La unidad básica de comunicación que representa cosas que ocurren durante una sesión:
- Mensajes del usuario
- Respuestas del agente
- Llamadas a herramientas y resultados
- Cambios de estado
Los eventos forman el historial de la conversación y permiten la reproducción y la depuración.
Modelos
La LLM subyacente que impulsa LlmAgents. ADK-Rust está optimizado para Gemini, pero admite múltiples proveedores a través del trait Llm:
- Gemini: Los modelos Gemini de 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-chatcon modo de pensamiento - Groq: Inferencia ultrarrápida con
llama-4-scout,llama-3.1-70b-versatile,mixtral-8x7b-32768 - Ollama: Inferencia local con
qwen3.6:35b-a3b,qwen3.5,llama3.2:3b,deepseek-r1:14b - mistral.rs: Inferencia local de alto rendimiento con aceleración por hardware
Todos los proveedores implementan el mismo trait para un uso intercambiable:
pub trait Llm: Send + Sync {
async fn generate(&self, request: LlmRequest) -> Result<LlmResponse>;
async fn generate_stream(&self, request: LlmRequest) -> Result<LlmResponseStream>;
}
Runner
El motor que gestiona el flujo de ejecución, orquesta las interacciones del agente y coordina con los servicios de backend. El Runner gestiona:
- Invocación del agente y procesamiento de respuestas
- Ejecución de herramientas
- Gestión de sesiones y estado
- Streaming de eventos
Banderas de características
ADK-Rust usa características de Cargo para la modularidad. Cuatro presets controlan qué crates se compilan:
# 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"] }
Funciones disponibles:
agents: implementaciones de agente (LlmAgent, CustomAgent, agentes de flujo de trabajo)models: integraciones de modelo (Gemini)openai: modelos de OpenAI (GPT-5, GPT-5 Mini)anthropic: modelos de Anthropic (Claude 4.6, Claude 4.5)deepseek: modelos de DeepSeek (chat, reasoner)groq: inferencia ultrarrápida de Groqollama: modelos locales de Ollamatools: sistema de herramientas y herramientas integradassessions: gestión de sesionesartifacts: almacenamiento de artefactosmemory: sistema de memoria con búsqueda semántica y un backend de grafo de conocimiento bi-temporal (GraphMemoryService)runner: tiempo de ejecución de ejecución de agenteserver: servidor de HTTP (REST + A2A)telemetry: ayudantes de tracing; agregatelemetry-otlpsolo al exportar OTLPcli: lanzador de CLI; agregacli-openai,cli-anthropicu otro proveedor de CLI solo cuando sea necesariomcp: integración de Model Context Protocol paraadk-toolrecord-payloads: opta por la captura completa de la carga útil de tracinggraph: flujos de trabajo basados en grafos (preajuste estándar)realtime: voz + streaming multimodal — OpenAI Realtime y Gemini Live, audio bidireccional, fotogramas de video, diálogo afectivo, herramientas del lado del servidor (preajuste empresarial)browser: automatización del navegador (preajuste empresarial)eval: evaluación de agentes (preajuste estándar)rag: canalización de RAG (preajuste empresarial)code: ejecución de código (preajuste completo)sandbox: ejecución aislada en sandbox (preajuste completo)audio: procesamiento de audio (preajuste completo)
Otros idiomas
ADK está disponible en varios idiomas:
- Python:
pip install google-adk- Documentación - Go:
go get google.golang.org/adk- Documentación - Java: Maven/Gradle - Documentación
Siguiente: Inicio rápido →