Rig para Rust: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Rig — biblioteca para integrar LLM en Rust

En el mundo del desarrollo en Rust, trabajar con modelos de lenguaje grandes (LLM) ha sido durante mucho tiempo una tarea compleja. La mayoría de los SDK estaban escritos en Python o JavaScript, y el ecosistema de Rust solo ofrecía clientes HTTP dispersos. La biblioteca Rig (Rust Integration with GGUF/LLM) resuelve este problema proporcionando una interfaz unificada, ergonómica y segura para interactuar con decenas de proveedores de LLM: OpenAI, Anthropic, Cohere, Google Gemini, Llama.cpp, Ollama y muchos más.

¿Por qué necesitas Rig? En primer lugar, ofrece una API type-safe: todas las solicitudes y respuestas están estrictamente tipadas, lo que elimina toda una clase de errores en tiempo de ejecución. En segundo lugar, Rig implementa pipelines: cadenas componibles de llamadas a LLM con soporte para streaming, ventanas de contexto y llamadas a herramientas (tool calling). En tercer lugar, la biblioteca está diseñada pensando en el rendimiento: asincronía de serie, asignaciones mínimas y soporte para batching.

Este artículo es la guía más detallada sobre Rig. Analizaremos la instalación, los métodos principales, escribiremos un ejemplo real y daremos consejos de optimización. Al final, podrás crear aplicaciones listas para producción en Rust que utilicen LLM.

Instalación

Añade Rig a tu proyecto Cargo:

cargo add rig-core --features openai,anthropic,cohere,gemini,ollama,llama-cpp

Si solo necesitas un proveedor, por ejemplo OpenAI:

cargo add rig-core --features openai

Para trabajar con modelos locales a través de llama.cpp, necesitarás instalar llama.cpp (descárgalo desde GitHub) y compilarlo con soporte CUDA/Metal. Luego agrega la feature llama-cpp.

Versión mínima de Rust: 1.75.0. Verifica:

rustc --version

Inicio rápido

Crea un archivo src/main.rs y escribe una solicitud simple a OpenAI:

use rig::providers::openai;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Inicialización del cliente mediante la variable de entorno OPENAI_API_KEY
    let client = openai::Client::from_env();
    
    // Creación del modelo
    let model = client.model("gpt-4o-mini").build();
    
    // Envío de la solicitud
    let response = model.prompt("Cuenta un chiste sobre programadores").await?;
    
    println!("{}", response);
    Ok(())
}

Ejecuta:

export OPENAI_API_KEY="sk-..."
cargo run

Verás un chiste generado. ¡Felicidades! Acabas de integrar un LLM en Rust.

Métodos y funciones principales

Veamos los métodos clave de Rig. Para cada uno, mostraremos la firma, la descripción y un ejemplo funcional.

1. Client::from_env()

Firma: pub fn from_env() -> Self

Qué hace: Crea un cliente para un proveedor específico, leyendo la clave API de una variable de entorno (por ejemplo, OPENAI_API_KEY).

use rig::providers::openai;
let client = openai::Client::from_env();

2. Client::model(name)

Firma: pub fn model(&self, model_name: &str) -> ModelBuilder

Qué hace: Devuelve un builder para configurar el modelo. Permite establecer temperatura, max_tokens, palabras de parada y otros parámetros.

let model = client.model("gpt-4o")
    .temperature(0.7)
    .max_tokens(200)
    .build();

3. Model::prompt(text)

Firma: pub async fn prompt(&self, prompt: impl Into<String>) -> Result<String, ModelError>

Qué hace: Envía una solicitud de texto al modelo y devuelve la respuesta generada.

Recommendations