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.
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
sqlxactualizado 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
-
Actualizar Cargo.toml:
adk-rust = "0.2.0" -
Añadir
run_config: Nonea RunnerConfig:RunnerConfig { // ... existing fields ... run_config: None, } -
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.