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:

Rendering architecture…

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 orden
    • ParallelAgent: Ejecuta subagentes de forma concurrente
    • LoopAgent: 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 agente
  • before_model / after_model: Interceptan llamadas a LLM
  • before_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-chat con 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 Groq
  • ollama: modelos locales de Ollama
  • tools: sistema de herramientas y herramientas integradas
  • sessions: gestión de sesiones
  • artifacts: almacenamiento de artefactos
  • memory: 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 agente
  • server: servidor de HTTP (REST + A2A)
  • telemetry: ayudantes de tracing; agrega telemetry-otlp solo al exportar OTLP
  • cli: lanzador de CLI; agrega cli-openai, cli-anthropic u otro proveedor de CLI solo cuando sea necesario
  • mcp: integración de Model Context Protocol para adk-tool
  • record-payloads: opta por la captura completa de la carga útil de tracing
  • graph: 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:


Siguiente: Inicio rápido →