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:

Rendering architecture…

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 orden
    • ParallelAgent: Ejecuta los subagentes simultáneamente
    • LoopAgent: 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 agente
  • before_model / after_model: Interceptan las llamadas a LLM
  • before_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-120b y openai/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 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: Entorno de ejecución de agentes
  • server: Servidor HTTP (REST + A2A)
  • telemetry: Ayudantes de trazabilidad; añade telemetry-otlp solo al exportar OTLP
  • cli: Lanzador CLI; añade cli-openai, cli-anthropic u otra función de proveedor CLI solo cuando sea necesario
  • mcp: Integración del Model Context Protocol para adk-tool
  • record-payloads: Activar la captura completa de la carga útil de trazabilidad
  • graph: 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:


Siguiente: Inicio rápido →

Introducción a ADK-Rust - Documentación ADK-Rust | ADK-Rust