Volver al Blog
lanzamientov0.2.0estableagentes-de-grafostiempo-realnavegadorevaluaciónestudio

ADK-Rust v0.2.0: La Primera Versión Estable

Anunciando ADK-Rust v0.2.0 - la primera versión estable que incluye agentes de grafos, voz en tiempo real, automatización de navegador, framework de evaluación y el constructor visual de ADK Studio.

15 min de lectura

ADK-Rust v0.2.0: La Primera Versión Estable

Estamos encantados de anunciar ADK-Rust v0.2.0 - la primera versión estable del framework Rust para construir agentes de IA listos para producción. Este lanzamiento marca un hito importante con nuevas características significativas, estabilidad mejorada y un compromiso con el versionado semántico en adelante.

Novedades en v0.2.0

🔀 Agentes de Grafos (Flujos de Trabajo estilo LangGraph)

El nuevo crate adk-graph trae la orquestación de flujos de trabajo estilo LangGraph a Rust:

use adk_graph::{prelude::*, node::AgentNode};

let graph = GraphAgent::builder("support_router")
    .channels(&["input", "category", "response"])
    .node(classifier_node)
    .node(billing_node)
    .node(technical_node)
    .edge(START, "classifier")
    .conditional_edges("classifier", Router::by_field("category", vec![
        ("billing", "billing_agent"),
        ("technical", "technical_agent"),
    ]))
    .edge("billing_agent", END)
    .edge("technical_agent", END)
    .build()?;

Características clave:

  • Gestión de Estado: Canales de estado tipados con fusión automática
  • Enrutamiento Condicional: Enruta basado en campos de estado o lógica personalizada
  • Puntos de Control: Backends SQLite y en memoria para tolerancia a fallos
  • Humano en el Bucle: Interrumpe flujos de trabajo para aprobación humana
  • Grafos Cíclicos: Soporte para patrones ReAct con límites de iteración

🎙️ Agentes de Voz en Tiempo Real

Construye asistentes de IA habilitados por voz con streaming de audio bidireccional:

use adk_realtime::{RealtimeAgent, openai::OpenAIRealtimeModel};

let agent = RealtimeAgent::builder("voice_assistant")
    .model(Arc::new(OpenAIRealtimeModel::new(&api_key, "gpt-4o-realtime-preview")))
    .instruction("You are a helpful voice assistant.")
    .voice("alloy")
    .server_vad()  // Voice Activity Detection
    .build()?;

Proveedores soportados:

  • OpenAI Realtime API (gpt-4o-realtime-preview, gpt-realtime)
  • Google Gemini Live API (gemini-2.0-flash-live-preview)

Características:

  • Streaming de audio bidireccional (PCM16, G711)
  • Detección de Actividad de Voz en el lado del servidor
  • Llamada a herramientas durante conversaciones de voz
  • Traspasos multi-agente

🌐 Automatización de Navegador

El crate adk-browser proporciona 46 herramientas WebDriver para la automatización web:

use adk_browser::{BrowserSession, BrowserToolset, BrowserConfig};

let session = Arc::new(BrowserSession::new(
    BrowserConfig::new().webdriver_url("http://localhost:4444")
));
let tools = BrowserToolset::new(session).all_tools();

let agent = LlmAgentBuilder::new("web_agent")
    .model(model)
    .instruction("Browse the web and extract information.")
    .tools(tools)
    .build()?;

Categorías de herramientas:

  • Navegación: browser_navigate, browser_back, browser_forward
  • Extracción: browser_extract_text, browser_extract_links, browser_extract_html
  • Interacción: browser_click, browser_type, browser_select
  • Formularios: browser_fill_form, browser_submit
  • Capturas de pantalla: browser_screenshot, browser_screenshot_element
  • JavaScript: browser_evaluate, browser_evaluate_async

📊 Framework de Evaluación de Agentes

Prueba y valida el comportamiento del agente con el crate adk-eval:

use adk_eval::{Evaluator, EvaluationConfig, EvaluationCriteria};

let config = EvaluationConfig::with_criteria(
    EvaluationCriteria::exact_tools()
        .with_response_similarity(0.8)
);

let evaluator = Evaluator::new(config);
let report = evaluator
    .evaluate_file(agent, "tests/my_agent.test.json")
    .await?;

assert!(report.all_passed());

Capacidades de evaluación:

  • Validación de trayectoria (secuencias de llamadas a herramientas)
  • Similitud de respuesta (Jaccard, Levenshtein, ROUGE)
  • Coincidencia semántica juzgada por LLM
  • Puntuación basada en rúbricas con criterios personalizados
  • Detección de seguridad y alucinaciones

🎨 ADK Studio: Constructor Visual de Agentes

Una interfaz de arrastrar y soltar para construir agentes de IA:

cargo install adk-studio
adk-studio

Características:

  • Lienzo ReactFlow para diseño visual de flujos de trabajo
  • Paleta completa de agentes: LLM, Secuencial, Paralelo, Bucle, Enrutador
  • Integración de herramientas: Función, MCP, Navegador, Búsqueda de Google
  • Pruebas de chat en tiempo real con streaming de SSE
  • Generación de código con un clic para producción Rust

🛡️ Barandillas de Seguridad

Validación de entrada/salida con el crate adk-guardrail:

use adk_guardrail::{Guardrails, PiiRedactor, ContentFilter};

let guardrails = Guardrails::new()
    .add(PiiRedactor::default())
    .add(ContentFilter::block_harmful());

let safe_input = guardrails.process_input(user_message)?;
let safe_output = guardrails.process_output(agent_response)?;

Barandillas de seguridad incorporadas:

  • Redacción de PII (correos electrónicos, teléfonos, números de seguridad social, tarjetas de crédito)
  • Filtrado de contenido (dañino, inapropiado)
  • Validación de esquema JSON
  • Reglas de validación personalizadas

🖼️ Generación Dinámica de UI

El crate adk-ui permite a los agentes renderizar interfaces ricas:

use adk_ui::{UiToolset, UI_AGENT_PROMPT};

let agent = LlmAgentBuilder::new("ui_assistant")
    .instruction(UI_AGENT_PROMPT)
    .tools(UiToolset::all_tools())
    .build()?;

Componentes: 28 componentes UI incluyendo tarjetas, tablas, gráficos, formularios Plantillas: 10 plantillas preconstruidas para patrones comunes Cliente React: npm install @zavora-ai/adk-ui-react

Cambios Disruptivos

Cambios en RunnerConfig

La estructura RunnerConfig ahora incluye un campo run_config:

// Before (v0.1.x)
let runner = Runner::new(RunnerConfig {
    app_name: "my_app".to_string(),
    agent: agent.clone(),
    session_service: session_service.clone(),
    artifact_service: None,
    memory_service: None,
})?;

// After (v0.2.0)
let runner = Runner::new(RunnerConfig {
    app_name: "my_app".to_string(),
    agent: agent.clone(),
    session_service: session_service.clone(),
    artifact_service: None,
    memory_service: None,
    run_config: None,  // NEW: Optional RunConfig for execution settings
})?;

Actualizaciones de Dependencias

  • sqlx actualizado de 0.7 a 0.8 (requerido para compatibilidad con SQLite)
  • Edición 2024 de Rust (requiere Rust 1.85+)

Guía de Migración

  1. Actualizar Cargo.toml:

    adk-rust = "0.2.0"
  2. Añadir run_config: None a RunnerConfig:

    RunnerConfig {
        // ... existing fields ...
        run_config: None,
    }
  3. Actualizar sqlx si se usan sesiones SQLite:

    sqlx = { version = "0.8", features = ["sqlite", "runtime-tokio"] }

Mejoras de Rendimiento

  • Optimización de streaming: Asignaciones de memoria reducidas en el streaming de eventos
  • Caché de sesiones: Rendimiento mejorado en la búsqueda de sesiones
  • Ejecución de herramientas: Ejecución paralela de herramientas cuando sea posible

Documentación

Toda la documentación ha sido actualizada para v0.2.0:

La documentación ahora está disponible en 9 idiomas: inglés, español, chino, japonés, portugués, alemán, francés, árabe, hindi y coreano.

Próximos Pasos

Ya estamos trabajando en la v0.3.0 con características planificadas:

  • Integraciones en la nube (AWS Bedrock, Azure OpenAI, GCP Vertex AI)
  • Sistemas de memoria mejorados con más backends de bases de datos vectoriales
  • Plantillas de flujo de trabajo y patrones de agente preconstruidos
  • Herramientas de perfilado y optimización de rendimiento

Empezar

# Create a new project
cargo new my_agent
cd my_agent

# Add ADK-Rust
echo 'adk-rust = "0.2.0"' >> Cargo.toml
echo 'tokio = { version = "1.40", features = ["full"] }' >> Cargo.toml

# Set your API key
export GOOGLE_API_KEY="your-api-key"

# Run an example
cargo run --example quickstart

Gracias

Un enorme agradecimiento a todos los que contribuyeron a este lanzamiento a través de código, documentación, informes de errores y comentarios. ADK-Rust es construido por la comunidad, para la comunidad.

Enlaces:

¡Feliz construcción! 🦀🤖

¿Listo para probar ADK-Rust v0.5.0?

Comienza con el framework de Rust más potente para construir agentes de IA.