openai-api-rs para Rust: guía completa con ejemplos
La librería openai-api-rs es un cliente moderno, asíncrono y type-safe para la API de OpenAI, escrito en Rust. Proporciona a los desarrolladores una interfaz sencilla para interactuar con modelos GPT (incluyendo GPT-4, GPT-3.5), DALL-E (generación de imágenes), Whisper (reconocimiento de voz), así como para trabajar con embeddings, moderación de contenido y gestión de archivos. La librería soporta completamente la transmisión en streaming de respuestas, algo fundamental para crear aplicaciones de chat interactivas y asistentes de baja latencia.
¿Por qué usar Rust para trabajar con la API de OpenAI? Rust ofrece el máximo rendimiento y seguridad de memoria sin necesidad de un recolector de basura. Esto convierte a openai-api-rs en la opción ideal para aplicaciones de servidor de alta carga, bots para Telegram/Discord, sistemas de procesamiento de lenguaje natural en tiempo real y dispositivos embebidos. Gracias al estricto sistema de tipos de Rust, muchos errores (como un formato de solicitud incorrecto) se detectan en tiempo de compilación, no en ejecución. La librería está construida sobre reqwest y tokio, lo que garantiza un manejo eficiente de operaciones asíncronas de entrada/salida.
En el sitio educativo PythonLib analizamos esta librería para mostrar cómo el ecosistema de Rust puede aplicarse a tareas de machine learning y PLN. Incluso si programas en Python, comprender los clientes de Rust te ayudará a entender mejor el funcionamiento interno de las solicitudes a la API y los principios del procesamiento de datos en streaming. La librería cuenta con un mantenimiento activo por parte de la comunidad, documentación detallada y está cubierta por pruebas.
Instalación
Para instalar la librería openai-api-rs en tu proyecto de Rust, ejecuta el siguiente comando en la terminal desde el directorio raíz del proyecto:
cargo add openai-api-rs
Este comando añadirá la última versión de la librería al archivo Cargo.toml. Si prefieres la edición manual, agrega la siguiente línea en la sección [dependencies]:
[dependencies]
openai-api-rs = "0.2" # Verifica la versión actual en crates.io
También necesitarás un runtime asíncrono. Se recomienda usar tokio:
cargo add tokio --features full
No olvides configurar la variable de entorno OPENAI_API_KEY con tu clave de API de OpenAI. Puedes hacerlo en la terminal:
export OPENAI_API_KEY="sk-tu_clave_aqui"
O pasar la clave directamente en el código (no recomendado para producción).
Inicio rápido
Ejemplo mínimo funcional: enviar una solicitud simple al modelo GPT-3.5 y mostrar la respuesta en la consola.
use openai_api_rs::v1::api::Client;
use openai_api_rs::v1::chat_completion::{ChatCompletionRequest, Message};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Creamos el cliente usando la clave API de la variable de entorno
let client = Client::new(env::var("OPENAI_API_KEY")?);
// Formamos la solicitud
let request = ChatCompletionRequest::new(
"gpt-3.5-turbo".to_string(),
vec![Message {
role: "user".to_string(),
content: "Escribe un poema corto sobre Rust".to_string(),
}],
);
// Enviamos la solicitud y obtenemos la respuesta
let response = client.chat_completion(request).await?;
// Extraemos el texto de la respuesta
if let Some(choice) = response.choices.first() {
println!("Respuesta: {}", choice.message.content);
}
Ok(())
}
Ejecuta el programa con el comando cargo run. Deberías ver el poema generado. Este ejemplo muestra la mecánica básica: creación del cliente, formación de la solicitud y procesamiento de la respuesta.