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 orden
    • ParallelAgent: Ejecuta sub-agents concurrentemente
    • LoopAgent: 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 async Rust 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 Agent
  • before_model / after_model: Intercepta las llamadas de LLM
  • before_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-reasoner con 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 Groq
  • ollama: Modelos locales de Ollama
  • tools: Sistema de Tool y tools integradas
  • sessions: Gestión de sesiones
  • artifacts: Almacenamiento de artifacts
  • memory: Sistema de memory con búsqueda semántica
  • runner: Tiempo de ejecución de Agent
  • server: Servidor HTTP (REST + A2A)
  • telemetry: Integración con OpenTelemetry
  • cli: Lanzador CLI

Otros Lenguajes

ADK está disponible en múltiples lenguajes:


Siguiente: Inicio rápido →