Introducción a ADK-Rust
Agent Development Kit (ADK) es un framework flexible y modular para desarrollar e implementar agentes de IA. Aunque está optimizado para Gemini y el ecosistema de Google, ADK es independiente del modelo y de la implementación, y está diseñado para ser compatible con otros frameworks. ADK se diseñó para que el desarrollo de agentes se parezca más al desarrollo de software, facilitando a los desarrolladores la creación, implementación y orquestación de arquitecturas agénticas que abarcan desde tareas sencillas hasta flujos de trabajo complejos.
Nota: ADK-Rust requiere Rust 1.95.0 o posterior.
Instalación
Añade ADK-Rust a tu proyecto:
cargo add adk-rust
O añádelo a tu Cargo.toml:
[dependencies]
adk-rust = "2.1.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-3.7-flash")?;
let agent = LlmAgentBuilder::new("assistant")
.description("A helpful AI assistant")
.model(Arc::new(model))
.build()?;
println!("Agent '{}' ready!", agent.name());
Ok(())
}
Descripción general de la arquitectura
ADK-Rust utiliza una arquitectura en capas diseñada para ofrecer modularidad y extensibilidad:
Conceptos principales
ADK-Rust se basa en varias primitivas clave que trabajan conjuntamente para crear agentes de IA potentes:
Agentes
La unidad de trabajo fundamental diseñada para tareas específicas. ADK-Rust proporciona varios tipos de agentes:
- LlmAgent: Utiliza 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 habilitados para voz que utilizan OpenAI Realtime API o Gemini Live API para la transmisión de audio bidireccional.
- GraphAgent: Orquestación de flujos de trabajo al estilo de LangGraph, con gestión de estado, puntos de control y compatibilidad con intervención humana.
- CustomAgent: 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 los subagentes en ordenParallelAgent: Ejecuta los subagentes simultáneamenteLoopAgent: Ejecuta iterativamente los subagentes hasta que se cumpla una condición
Herramientas
Las herramientas proporcionan a los agentes capacidades que van 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 la 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, recursos, indicaciones, finalización, suscripciones, solicitud de información y tareas negociadas revisados
- McpServerManager: Añade, actualiza, supervisa, reinicia, persiste y agrega un registro cambiante de servidores MCP locales mientras la aplicación está en ejecución
Sesiones
Las sesiones gestionan el contexto de una única conversación, incluyendo:
- ID de sesión: Identificador único de la conversación
- Eventos: Historial de la conversación (mensajes del usuario, respuestas del agente, llamadas a herramientas)
- Estado: Memoria de trabajo de 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 las invocaciones del agentebefore_model/after_model: Interceptan las llamadas a LLMbefore_tool/after_tool: Interceptan las ejecuciones de herramientas
Los callbacks permiten registrar eventos, aplicar controles de seguridad, almacenar en caché y modificar el comportamiento.
Artefactos
Almacenamiento de datos binarios para archivos, imágenes u otro contenido no textual:
- Guardar y cargar artefactos con control de versiones
- Ámbitos de nombres a nivel de sesión o de usuario
- Backends de almacenamiento conectables
Eventos
La unidad básica de comunicación que representa lo que ocurre 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 reproducirla y depurarla.
Modelos
El LLM subyacente que impulsa LlmAgents. ADK-Rust está optimizado para Gemini, pero admite varios proveedores mediante el 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, implementaciones de Azure OpenAI - Anthropic:
claude-sonnet-5,claude-opus-5,claude-fable-5 - DeepSeek:
deepseek-v4-flash,deepseek-v4-pro - Groq: Inferencia ultrarrápida con
openai/gpt-oss-120byopenai/gpt-oss-20b - 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 de hardware
Todos los proveedores implementan el mismo trait para permitir 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>;
}
Ejecutor
El motor que gestiona el flujo de ejecución, coordina las interacciones entre agentes y se comunica con los servicios de backend. El Runner se encarga de:
- Invocación de agentes y procesamiento de respuestas
- Ejecución de herramientas
- Gestión de sesiones y estado
- Transmisión de eventos
Indicadores de características
ADK-Rust utiliza características de Cargo para ofrecer modularidad. Cuatro preajustes controlan qué crates se compilan:
# 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"] }
Funciones disponibles:
agents: Implementaciones de agentes (LlmAgent, CustomAgent, agentes de flujo de trabajo)models: Integraciones de modelos (Gemini)openai: Modelos OpenAI (GPT-5, GPT-5 Mini)anthropic: Modelos de Anthropic (Claude 4.6, Claude 4.5)deepseek: Modelos DeepSeek (chat, razonador)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: Entorno de ejecución de agentesserver: Servidor HTTP (REST + A2A)telemetry: Ayudantes de trazabilidad; añadetelemetry-otlpsolo al exportar OTLPcli: Lanzador CLI; añadecli-openai,cli-anthropicu otra función de proveedor CLI solo cuando sea necesariomcp: Integración del Model Context Protocol paraadk-toolrecord-payloads: Activar la captura completa de la carga útil de trazabilidadgraph: Flujos de trabajo basados en grafos (ajuste preestablecido estándar)realtime: Transmisión de voz y multimodal — OpenAI Realtime y Gemini Live, audio bidireccional, fotogramas de vídeo, diálogo afectivo, herramientas del servidor (ajuste preestablecido empresarial)browser: Automatización del navegador (ajuste preestablecido empresarial)eval: Evaluación de agentes (ajuste preestablecido estándar)rag: Canalización RAG (ajuste preestablecido empresarial)code: Ejecución de código (ajuste preestablecido completo)sandbox: Ejecución en entorno aislado (ajuste preestablecido completo)audio: Procesamiento de audio (ajuste preestablecido 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 →