Rust e IA: cómo usar ChatGPT en el desarrollo con Rust

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

Por qué Rust e IA no son ciencia ficción, sino una herramienta de trabajo

\n\n

Cuando escuchamos «inteligencia artificial» y «Rust» en la misma frase, normalmente imaginamos redes neuronales complejas escritas en Python. Pero ¿y si te dijera que Rust puede ser un excelente backend para interactuar con ChatGPT? Sin Python lento, sin dependencias como TensorFlow, solo código limpio, rápido y seguro que se comunica con la API de OpenAI.

\n\n

En este artículo no vamos a enseñar a una red neuronal desde cero; haremos algo más práctico: escribiremos un programa en Rust que envía solicitudes a ChatGPT y recibe respuestas. Luego, le enseñaremos a generar código, documentación e incluso corregir errores. ¿Suena a magia? En realidad, solo son un par de crates y la clave API correcta.

\n\n

Si alguna vez quisiste agregar «cerebro» a tu proyecto Rust en forma de modelo de lenguaje, has llegado al lugar indicado. ¡Allá vamos!

\n\n

Qué necesitamos: herramientas y preparación

\n\n

Antes de escribir código, analicemos qué se necesita para integrar ChatGPT en una aplicación Rust.

\n\n

Componentes necesarios

\n
    \n
  • Rust — compilador instalado (rustc) y gestor de paquetes Cargo. Si aún no tienes Rust — curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • \n
  • Clave API de OpenAI — regístrate en platform.openai.com, crea una clave y colócala en la variable de entorno OPENAI_API_KEY
  • \n
  • Bibliotecas de Rust — usaremos los crates reqwest (para solicitudes HTTP), serde y serde_json (para trabajar con JSON), tokio (entorno de ejecución asíncrono)
  • \n
\n\n

Creando el proyecto

\n
cargo new rust_chatgpt\ncd rust_chatgpt
\n\n

Agreguemos las dependencias en Cargo.toml:

\n\n
[dependencies]\nreqwest = { version = "0.12", features = ["json"] }\ntokio = { version = "1", features = ["full"] }\nserde = { version = "1.0", features = ["derive"] }\nserde_json = "1.0"
\n\n

Ahora podemos ejecutar cargo build — las dependencias se descargarán automáticamente.

\n\n

Escribiendo la primera solicitud a ChatGPT en Rust

\n\n

La forma más sencilla de «conversar» con ChatGPT es enviar una solicitud POST al endpoint https://api.openai.com/v1/chat/completions. Rust, con su tipado estricto, es ideal para esta tarea: describiremos claramente la estructura de la solicitud y la respuesta, y el compilador nos verificará en cada paso.

\n\n

Estructuras de datos para la API

\n

La API de OpenAI espera un JSON con un esquema específico. Describámoslo usando serde:

\n\n
use serde::{Deserialize, Serialize};\n\n#[derive(Serialize)]\nstruct ChatRequest {\n    model: String,\n    messages: Vec<Message>,\n    temperature: f32,\n}\n\n#[derive(Serialize, Deserialize, Clone)]\nstruct Message {\n    role: String,\n    content: String,\n}\n\n#[derive(Deserialize)]\nstruct ChatResponse {\n    choices: Vec<Choice>,\n}\n\n#[derive(Deserialize)]\nstruct Choice {\n    message: Message,\n}
\n\n

Observa: Message se usa tanto para enviar como para recibir, por lo que agregamos ambos atributos Serialize y Deserialize.

\n\n

Solicitud asíncrona

\n

Ahora escribamos una función que envíe un mensaje y devuelva la respuesta de ChatGPT:

\n\n
use std::env;\n\nasync fn ask_chatgpt(prompt: &str) -> Result<String, Box<dyn std::error::Error>> {\n    let api_key = env::var("OPENAI_API_KEY")\n        .expect("La variable OPENAI_API_KEY no está configurada");\n\n    let client = reqwest::Client::new();\n\n    let request_body = ChatRequest {\n        model: "gpt-4o-mini".to_string(), // modelo rápido y económico\n        messages: vec![\n            Message {\n                role: "system".to_string(),\n                

Blogs

Book Recommendations