Introducción a ADK-Rust
Agent Development Kit (ADK) es un framework flexible y modular para desarrollar y desplegar agentes de IA. Aunque optimizado para Gemini y el ecosistema de Google, ADK es independiente del modelo, independiente del despliegue y está construido para ser compatible con otros frameworks. ADK fue diseñado para hacer que el desarrollo de agentes se sienta más como desarrollo de software, facilitando a los desarrolladores la creación, el despliegue y la orquestación de arquitecturas agenciales que van desde tareas simples hasta flujos de trabajo complejos.
Nota: ADK-Rust v0.2.0 requiere Rust 1.85.0 o superior
Instalación
Añada ADK-Rust a su proyecto:
cargo add adk-rust
O añádalo a su Cargo.toml:
[dependencies]
adk-rust = "0.2.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(())
}
Visión General de la Arquitectura
ADK-Rust utiliza una arquitectura por capas diseñada para la modularidad y la extensibilidad:
┌─────────────────────────────────────────────────────────────┐
│ Capa de Aplicación │
│ CLI • Servidor REST • Interfaz de Usuario Web │
├─────────────────────────────────────────────────────────────┤
│ Capa de Runner │
│ Ejecución de Agentes • Gestión de Contexto │
├─────────────────────────────────────────────────────────────┤
│ Capa de Agentes │
│ LlmAgent • CustomAgent • Agentes de Flujo de Trabajo │
├─────────────────────────────────────────────────────────────┤
│ Capa de Servicio │
│ Modelos • Tools • Sessions • Artefactos • Memoria │
└─────────────────────────────────────────────────────────────┘
Conceptos Fundamentales
ADK-Rust se basa en varias primitivas clave que trabajan juntas para crear poderosos agentes de IA:
Agentes
La unidad de trabajo fundamental diseñada para tareas específicas. ADK-Rust proporciona varios tipos de Agent:
- LlmAgent: Utiliza un modelo de lenguaje grande (Large Language Model) para el razonamiento y la toma de decisiones. Este es el tipo de Agent principal para la mayoría de los casos de uso.
- RealtimeAgent: Agents habilitados para voz que utilizan OpenAI Realtime API o Gemini Live API para la transmisión bidireccional de audio.
- GraphAgent: Orquestación de flujos de trabajo estilo LangGraph con gestión de estado, puntos de control y soporte para humanos en el bucle.
- CustomAgent: Le permite implementar lógica personalizada con control total sobre el comportamiento del Agent.
- Workflow Agents: Agents deterministas que siguen rutas de ejecución predefinidas:
SequentialAgent: Ejecuta sub-agents en ordenParallelAgent: Ejecuta sub-agents concurrentementeLoopAgent: Ejecuta sub-agents iterativamente hasta que se cumple una condición
Herramientas
Las Herramientas otorgan a los Agents habilidades más allá de la conversación, permitiéndoles interactuar con APIs externas, buscar información o realizar operaciones personalizadas:
- FunctionTool: Envuelve cualquier función
asyncRust como una Tool - GoogleSearchTool: Capacidad de búsqueda web incorporada
- BrowserToolset: 46 Herramientas WebDriver para automatización web (navegación, formularios, capturas de pantalla, etc.)
- ExitLoopTool: Controla la terminación del bucle en un LoopAgent
- McpToolset: Integración con servidores de Model Context Protocol
Sesiones
Las Sesiones manejan el contexto de una sola conversación, incluyendo:
- Session ID: Identificador único para la conversación
- Events: El historial de la conversación (mensajes de usuario, respuestas de Agent, llamadas a Tool)
- State: Memoria de trabajo para la conversación con prefijos de alcance (
app:,user:,temp:)
Callbacks
Código personalizado que se ejecuta en puntos específicos de la ejecución del Agent:
before_agent/after_agent: Intercepta las invocaciones de Agentbefore_model/after_model: Intercepta las llamadas de LLMbefore_tool/after_tool: Intercepta las ejecuciones de Tool
Los Callbacks permiten el registro, las guardrails, el almacenamiento en caché y la modificación del comportamiento.
Artefactos
Almacenamiento de datos binarios para archivos, imágenes u otro contenido no textual:
- Guarda y carga artefactos con versionado
- Alcance de espacio de nombres (a nivel de Session o de usuario)
- Backends de almacenamiento conectables
Eventos
La unidad básica de comunicación que representa las cosas que suceden durante una Session:
- Mensajes de usuario
- Respuestas de Agent
- Llamadas a Tool y resultados
- Cambios de State
Los Events forman el historial de la conversación y permiten la reproducción y la depuración.
Modelos
El LLM subyacente que impulsa los LlmAgents. ADK-Rust está optimizado para Gemini, pero es compatible con múltiples proveedores a través del trait Llm:
- Gemini: Modelos Gemini de Google (
gemini-3-pro-preview,gemini-2.5-flash,gemini-2.5-pro) - OpenAI:
gpt-5.2,gpt-4o,gpt-4o-mini, Azure OpenAI - Anthropic:
claude-sonnet-4-5,claude-opus-4-5,claude-sonnet-4 - DeepSeek:
deepseek-chat,deepseek-reasonercon modo de pensamiento - Groq: Inferencia ultrarrápida con
llama-3.3-70b-versatile,mixtral-8x7b-32768 - Ollama: Inferencia local con
llama3.2,qwen2.5,mistral,phi4 - 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 Agent y coordina con los servicios de backend. El Runner maneja:
- Invocación de Agent y procesamiento de respuestas
- Ejecución de Tool
- Gestión de Session y State
- Streaming de Event
Flags de Características
adk-rust utiliza las características de Cargo para la modularidad:
# Full installation (default)
adk-rust = "0.2.0"
# Minimal: Only agents + Gemini
adk-rust = { version = "0.2.0", default-features = false, features = ["minimal"] }
# Custom: Pick what you need
adk-rust = { version = "0.2.0", default-features = false, features = ["agents", "gemini", "tools"] }
Características disponibles:
agents: Implementaciones de Agent (LlmAgent, CustomAgent, workflow agents)models: Integraciones de modelos (Gemini)openai: Modelos de OpenAI (GPT-5, GPT-4o)anthropic: Modelos de Anthropic (Claude 4.5, Claude 4)deepseek: Modelos de DeepSeek (chat, reasoner)groq: Inferencia ultra-rápida de Groqollama: Modelos locales de Ollamatools: Sistema de Tool y tools integradassessions: Gestión de sesionesartifacts: Almacenamiento de artifactsmemory: Sistema de memory con búsqueda semánticarunner: Tiempo de ejecución de Agentserver: Servidor HTTP (REST + A2A)telemetry: Integración con OpenTelemetrycli: Lanzador CLI
Otros Lenguajes
ADK está disponible en múltiples lenguajes:
- 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 →