Rust e IA: como usar o ChatGPT no desenvolvimento em Rust

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que Rust e IA não são ficção científica, mas sim uma ferramenta de trabalho

\n\n

Quando ouvimos "inteligência artificial" e "Rust" na mesma frase, geralmente imaginamos redes neurais complexas escritas em Python. Mas e se eu lhe disser que o Rust pode ser um excelente backend para interagir com o ChatGPT? Sem o Python lento, sem dependências como TensorFlow — apenas código puro, rápido e seguro que se comunica com a OpenAI API.

\n\n

Neste artigo, não vamos ensinar uma rede neural do zero — faremos algo mais prático: escreveremos um programa em Rust que envia requisições para o ChatGPT e recebe respostas. E então, ensinaremos ele a gerar código, documentação e até corrigir erros. Parece mágica? Na verdade, são apenas alguns crates e uma chave de API correta.

\n\n

Se você sempre quis adicionar "cérebros" ao seu projeto Rust na forma de um modelo de linguagem — você veio ao lugar certo. Vamos nessa!

\n\n

O que vamos precisar: ferramentas e preparação

\n\n

Antes de escrever código, vamos entender o que é necessário para integrar o ChatGPT em uma aplicação Rust.

\n\n

Componentes necessários

\n
    \n
  • Rust — compilador instalado (rustc) e gerenciador de pacotes Cargo. Se você ainda não tem o Rust — curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • \n
  • Chave de API da OpenAI — registre-se em platform.openai.com, crie uma chave e coloque-a na variável de ambiente OPENAI_API_KEY
  • \n
  • Bibliotecas Rust — usaremos os crates reqwest (para requisições HTTP), serde e serde_json (para trabalhar com JSON), tokio (runtime assíncrono)
  • \n
\n\n

Criando o projeto

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

Adicionaremos as dependências no 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

Agora podemos executar cargo build — as dependências serão baixadas automaticamente.

\n\n

Escrevendo a primeira requisição para o ChatGPT em Rust

\n\n

A maneira mais simples de "conversar" com o ChatGPT é enviar uma requisição POST para o endpoint https://api.openai.com/v1/chat/completions. Rust, com sua tipagem forte, é ideal para esta tarefa: descreveremos claramente a estrutura da requisição e da resposta, e o compilador nos verificará a cada passo.

\n\n

Estruturas de dados para a API

\n

A OpenAI API espera um JSON com um esquema específico. Vamos descrevê-lo 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

Observe: Message é usado tanto para envio quanto para recebimento — por isso adicionamos ambos os atributos Serialize e Deserialize.

\n\n

Requisição assíncrona

\n

Agora vamos escrever uma função que envia uma mensagem e retorna a resposta do 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("Variável OPENAI_API_KEY não definida");\n\n    let client = reqwest::Client::new();\n\n    let request_body = ChatRequest {\n        model: "gpt-4o-mini".to_string(), // modelo rápido e barato\n        messages: vec![\n            Message {\n                role: "system".to_string(),\n                

Blogs

Book Recommendations