Para conectarse a la API de ChatGPT usando Rust, necesitarás realizar una solicitud HTTP a la API de OpenAI. OpenAI no proporciona una SDK oficial de Rust, por eso tendrás que usar una biblioteca HTTP de terceros como “reqwest” o “hyper”.
Aquí te muestro un código de muestra utilizando “reqwest”.
Nota: No olvides añadir “reqwest” y “tokio” en tu archivo Cargo.toml bajo las dependencias.
```Rust
use reqwest::header::AUTHORIZATION;
use serde::{Deserialize, Serialize};
use reqwest::Client;
#[tokio::main]
async fn main() -> Result<(), Box> {
// Las estructuras para enviar/recibir datos a/desde la API.
#[derive(Serialize)]
struct Prompt<‘a> {
prompt: &‘a str,
max_tokens: i32,
}
#[derive(Deserialize)]
struct APIResponse {
id: String,
object: String,
created: i64,
model: String,
choices: Vec,
}
#[derive(Deserialize)]
struct Choice {
text: String,
finish_reason: String,
index: i32,
}
// Creamos un cliente
HTTP.
let client = Client::new();
// Generamos la
URL de la
API.
let url = “https://api.openai.com/v1/engines/davinci-codex/completions”;
// Creamos una variable para el encabezado de autorización,
// reemplaza “tu_clave_de_api_aqui” con tu clave
API de OpenAI.
let auth_header_value = “Bearer tu_clave_de_api_aqui”;
// Creamos una Prompt.
let p = Prompt {
prompt: “Traduzca este texto al francés: ‘Hola mundo’”,
max_tokens: 60,
};
// Enviamos la solicitud a la
API de OpenAI.
let resp = client
.post(url)
.header(
AUTHORIZATION, auth_header_value)
.json(&p)
.send()
.await?
.text()
.await?;
// Parseamos la respuesta como
JSON y la extraemos en nuestra estructura
APIResponse.
let parsed_resp:
APIResponse = serde_json::from_str(&resp)?;
// Imprimimos el texto.
println!(“{}”, parsed_resp.choices.text);
Ok(())
}
```
Asegúrate de manejar correctamente los errores. Estoy utilizando el operador `?` para propagar cualquier error encontrado y terminar el programa, pero en un escenario del mundo real podrías querer un manejo de errores más explícito que trate de recuperarse de errores o informe al usuario de manera más amigable.