← Back to Blog

Primeros pasos con adk-rust: Tu primer AI Agent en Rust

Desbloquea el poder de los AI Agent con Rust. Esta guía te muestra cómo construir, ejecutar y desplegar tu primer agente inteligente.

26 de octubre de 202312 min de lectura
adk-rustRustAI AgentGoogle GeminiDesarrolloTutorial

Tabla de Contenidos

  • 1. Introducción a adk-rust
  • 2. Prerrequisitos y Configuración
  • 3. Creando tu Primer Proyecto ADK
  • 4. Anatomía de un adk-rust Agent
  • 5. Implementando tu Simple AI Agent
  • 6. Construyendo y Ejecutando tu Agent
  • 7. Siguientes Pasos

1. Introducción a adk-rust

El Desafío del Desarrollo de Agents

Construir agentes inteligentes capaces de tareas complejas ha sido durante mucho tiempo un campo lleno de desafíos. Orquestar large language models (LLMs), gestionar el estado, manejar diversas entradas y desplegar estos agents de manera efectiva a menudo requiere soluciones a medida y un esfuerzo de ingeniería significativo. Esta complejidad puede ser un gran obstáculo para los desarrolladores que buscan integrar potentes capacidades de IA en sus aplicaciones.

Presentamos adk-rust: Optimizando el Desarrollo de AI Agent

El Agent Development Kit (ADK) tiene como objetivo hacer que el desarrollo de AI agent se parezca más al desarrollo de software tradicional, y `adk-rust` es su robusta implementación en Rust. Proporciona un marco flexible y modular diseñado para desarrollar y desplegar sofisticados AI agent. Aunque optimizado para Gemini y el ecosistema de Google, `adk-rust` es model-agnostic y deployment-agnostic, lo que garantiza compatibilidad y flexibilidad en diversas plataformas. Esta guía te guiará a través de la configuración de tu entorno, la creación de tu primer proyecto `adk-rust` y el despliegue de un asistente de IA básico, dándote una base sólida para tus emprendimientos agentic.

2. Prerrequisitos y Configuración

Antes de sumergirnos en la construcción de agents, asegurémonos de que tu entorno de desarrollo esté listo. Necesitarás una cadena de herramientas reciente de Rust y la librería adk-rust añadida a tu proyecto. adk-rust también requiere una Google API key para interactuar con modelos como Gemini. Primero, asegúrate de tener Rust instalado. Si no, la forma recomendada es a través de rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Asegúrate de que tu versión de Rust sea 1.75 o superior:
rustc --version
A continuación, añadiremos adk-rust como dependencia. También añadiremos tokio para operaciones asyncronas y dotenv para gestionar variables de entorno como tu API key. Puedes añadirlas con cargo add una vez que hayas creado tu proyecto (lo que haremos en el siguiente paso):
cargo add adk-rust
cargo add tokio --features full
cargo add dotenv
Alternativamente, puedes añadir esto manualmente a tu archivo Cargo.toml:
[dependencies]
adk-rust = "0.1"
tokio = { version = "1.40", features = ["full"] }
dotenv = "0.15"
Finalmente, necesitarás una Google API Key para Gemini. Obtén esto desde Google AI Studio o Google Cloud Console. Crea un archivo .env en el directorio raíz de tu proyecto y añade tu key:
GOOGLE_API_KEY="YOUR_GEMINI_API_KEY_HERE"

3. Creando tu Primer Proyecto ADK

Con tu entorno configurado, creemos un nuevo proyecto Rust, que servirá como contenedor para nuestro adk-rust agent. Usaremos el comando estándar cargo new para empezar. Abre tu terminal y ejecuta:
cargo new my_first_adk_agent
cd my_first_adk_agent
Este comando inicializa un nuevo proyecto Rust llamado my_first_adk_agent. La estructura del proyecto generado resultará familiar a los desarrolladores de Rust:
my_first_adk_agent/
├── Cargo.toml          # Manifiesto y dependencias del proyecto
└── src/
    └── main.rs         # Aquí va la lógica principal de tu agent
Ahora, puedes ejecutar los comandos cargo add de la sección anterior dentro de este directorio my_first_adk_agent. Recuerda crear manualmente un archivo .env en el directorio raíz (my_first_adk_agent/) para tu GOOGLE_API_KEY.

4. Anatomía de un adk-rust Agent

Un adk-rust agent se construye típicamente alrededor del LlmAgentBuilder y se ejecuta usando el Launcher. La idea central es definir la persona de tu agent, sus instrucciones y el LLM que debe usar. Veamos los componentes esenciales que encontrarás en el archivo src/main.rs de un adk-rust agent. En adk-rust, un LlmAgent se configura con una descripción, una instrucción (que actúa como un system prompt para el LLM) y un modelo de lenguaje específico (como Gemini). El Launcher toma este agent y gestiona la ejecución, proporcionando una consola interactiva o una interfaz de web server. Esta abstracción simplifica la interacción del agent con el mundo exterior. A continuación se muestra el equivalente completo de 'Hola Mundo' para un adk-rust agent. Copia este código en tu archivo src/main.rs. Desglosaremos cada parte en detalle en la siguiente sección.
use adk_rust::prelude::*;
use adk_rust::Launcher;
use std::sync::Arc;

#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
    // 1. Cargar variables de entorno del archivo .env
    dotenv::dotenv().ok();
    
    // 2. Obtener la API key del entorno
    let api_key = std::env::var("GOOGLE_API_KEY")
        .expect("La variable de entorno GOOGLE_API_KEY no está establecida");

    // 3. Crear el modelo Gemini
    let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?;

    // 4. Construye tu agent
    let agent = LlmAgentBuilder::new("my_assistant")
        .description("Un asistente de IA útil")
        .instruction("Eres un asistente amigable y útil. Responde preguntas de manera clara y concisa.")
        .model(Arc::new(model))
        .build()?;

    // 5. Ejecuta el agent con el lanzador CLI
    Launcher::new(Arc::new(agent)).run().await?;

    Ok(())
}

5. Implementando tu Simple AI Agent

Ahora, repasemos el equivalente de 'Hola Mundo' para un adk-rust agent, centrándonos en cómo cada parte del código contribuye a crear un asistente de IA funcional. Deberías haber copiado el código de la sección anterior en tu archivo src/main.rs. 1. **Carga de Variables de Entorno**: dotenv::dotenv().ok(); carga variables de tu archivo .env, haciendo que tu GOOGLE_API_KEY esté disponible dentro de tu aplicación Rust. 2. **Recuperación de API Key**: std::env::var("GOOGLE_API_KEY") obtiene tu API key del entorno. La llamada .expect() asegura que el programa entrará en pánico y proporcionará un mensaje de error claro si la key no se encuentra, evitando fallos silenciosos al inicializar el modelo. 3. **Inicialización del Modelo**: let model = GeminiModel::new(&api_key, "gemini-2.5-flash")?; instancia un GeminiModel. Aquí, proporcionamos nuestra API key y especificamos la versión deseada del modelo Gemini (gemini-2.5-flash). Este objeto encapsula la lógica de conexión e interacción con el servicio LLM real, abstrayendo las complejidades de las llamadas a API. 4. **Construcción del Agent**: Aquí es donde defines la identidad y el comportamiento central de tu agent usando el LlmAgentBuilder: * LlmAgentBuilder::new("my_assistant"): Empieza a construir un agent, asignándole un ID único. * .description("Un asistente de IA útil"): Proporciona una descripción legible para humanos del propósito de tu agent, útil para la documentación o la orquestación de nivel superior. * .instruction("Eres un asistente amigable y útil. Responde preguntas de manera clara y concisa."): Este es tu system prompt. Guía al LLM subyacente sobre cómo comportarse, responder y su persona general. * .model(Arc::new(model)): Asocia el agent con el GeminiModel que creamos. Arc (Atomic Reference Counted) es un puntero thread-safe de conteo de referencias, usado aquí para la propiedad compartida, lo cual es común en aplicaciones Rust asyncronas. * .build()?: Finaliza la construcción del agent. Devuelve un Result, y ? se usa para una cómoda propagación de errores. 5. **Lanzamiento del Agent**: Launcher::new(Arc::new(agent)).run().await?; toma tu agent configurado y lo ejecuta. El comportamiento predeterminado de Launcher::run() es iniciar una consola interactiva donde puedes escribir prompts a tu agent y ver sus respuestas. La keyword await indica que esta es una operación asyncrona, típica para tareas I/O-bound como interactuar con un LLM.

6. Construyendo y Ejecutando tu Agent

Una vez que tu archivo src/main.rs esté poblado con el código del agent y tu Cargo.toml esté actualizado con las dependencias, ¡estás listo para dar vida a tu agent! cargo es tu herramienta principal para esto. Primero, construye tu proyecto para compilar el código Rust en un ejecutable:
cargo build
Este comando compila tu agent y sus dependencias. Si tiene éxito, tendrás un ejecutable en el directorio target/debug/ (o target/release/ si construyes con --release). Para ejecutar tu agent en modo de consola interactiva, que es excelente para pruebas e interacciones rápidas, usa:
cargo run
Tu terminal se convertirá en una interfaz de chat interactiva donde podrás escribir preguntas, y tu agent responderá usando el modelo Gemini configurado. Para salir, normalmente puedes escribir exit o presionar Ctrl+C. adk-rust también proporciona una forma de ejecutar tu agent como un web server, permitiéndote interactuar con él a través de solicitudes HTTP. Esto es especialmente útil para integrar tu agent en aplicaciones web u otros servicios:
cargo run -- serve
Por defecto, esto iniciará el server en http://127.0.0.1:8080. Puedes especificar un port diferente si es necesario:
cargo run -- serve --port 3000
¡Ahora, tu agent es accesible a través de una web API! Puedes enviarle solicitudes usando herramientas como curl o un navegador web al endpoint configurado (por ejemplo, http://127.0.0.1:8080/v1/agent). Esto convierte tu AI agent en un servicio desplegable y invocable.

7. Siguientes Pasos

¡Felicidades! Has construido y ejecutado con éxito tu primer AI agent usando adk-rust. Esto es solo el comienzo de lo que puedes lograr con el marco. Aquí tienes algunas sugerencias sobre qué hacer a continuación: * **Explora la Documentación ADK**: Profundiza en la documentación oficial de adk-rust para entender características más avanzadas, como la integración con otros componentes, la gestión de estado o la creación de flujos de trabajo de agent más complejos. * **Herramientas y Capacidades Personalizadas**: Aprende a equipar tu agent con tools personalizados, permitiéndole interactuar con APIs externas, bases de datos o realizar cálculos específicos más allá de la generación de texto. Esta es una característica potente para extender las capacidades del agent. * **Opciones de Despliegue**: Investiga diferentes estrategias de despliegue para tus adk-rust agents, ya sea la contenerización con Docker, el despliegue en plataformas cloud o la integración en servicios Rust existentes. * **Participación en la Comunidad**: Únete a la comunidad de adk-rust. Compartir tus proyectos, hacer preguntas y contribuir a las discusiones puede acelerar significativamente tu aprendizaje y resolución de problemas. Mantente conectado con los últimos desarrollos y best practices.
Getting Started with adk-rust: Your First AI Agent in Rust | ADK-Rust