Warum Rust und KI keine Fantasie, sondern ein Arbeitswerkzeug sind
\n\nWenn wir „künstliche Intelligenz“ und „Rust“ in einem Satz hören, stellen wir uns normalerweise komplexe neuronale Netze vor, die in Python geschrieben sind. Aber was, wenn ich Ihnen sage, dass Rust ein großartiges Backend für die Interaktion mit ChatGPT sein kann? Ohne langsames Python, ohne Abhängigkeiten wie TensorFlow – einfach sauberer, schneller, sicherer Code, der mit der OpenAI API kommuniziert.
\n\nIn diesem Artikel werden wir kein neuronales Netz von Grund auf neu trainieren – wir werden etwas Praktischeres tun: ein Rust-Programm schreiben, das Anfragen an ChatGPT sendet und Antworten erhält. Und dann bringen wir ihm bei, Code, Dokumentation zu generieren und sogar Fehler zu korrigieren. Klingt wie Magie? In Wirklichkeit sind es nur ein paar Crates und ein richtiger API-Schlüssel.
\n\nWenn Sie Ihrem Rust-Projekt jemals „Gehirn“ in Form eines Sprachmodells hinzufügen wollten – sind Sie hier genau richtig. Los geht's!
\n\nWas wir brauchen: Werkzeuge und Vorbereitung
\n\nBevor wir Code schreiben, lassen Sie uns klären, was für die Integration von ChatGPT in eine Rust-Anwendung benötigt wird.
\n\nErforderliche Komponenten
\n- \n
- Rust – installierter Compiler (rustc) und Paketmanager Cargo. Wenn Sie noch kein Rust haben –
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n - OpenAI API-Schlüssel – registrieren Sie sich auf platform.openai.com, erstellen Sie einen Schlüssel und legen Sie ihn in der Umgebungsvariable
OPENAI_API_KEYab \n - Rust-Bibliotheken – wir werden die Crates
reqwest(für HTTP-Anfragen),serdeundserde_json(für die Arbeit mit JSON),tokio(asynchrone Laufzeitumgebung) verwenden \n
Projekt erstellen
\ncargo new rust_chatgpt\ncd rust_chatgpt\n\nAbhängigkeiten in Cargo.toml hinzufügen:
[dependencies]\nreqwest = { version = "0.12", features = ["json"] }\ntokio = { version = "1", features = ["full"] }\nserde = { version = "1.0", features = ["derive"] }\nserde_json = "1.0"\n\nJetzt können Sie cargo build ausführen – die Abhängigkeiten werden automatisch heruntergeladen.
Erste Anfrage an ChatGPT in Rust schreiben
\n\nDer einfachste Weg, mit ChatGPT zu „sprechen“, ist das Senden einer POST-Anfrage an den Endpunkt https://api.openai.com/v1/chat/completions. Rust mit seiner strengen Typisierung ist ideal für diese Aufgabe: Wir beschreiben die Struktur der Anfrage und Antwort klar, und der Compiler überprüft uns bei jedem Schritt.
Datenstrukturen für die API
\nDie OpenAI API erwartet JSON mit einem bestimmten Schema. Beschreiben wir es mit serde:
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\nBeachten Sie: Message wird sowohl zum Senden als auch zum Empfangen verwendet – daher haben wir beide Attribute Serialize und Deserialize hinzugefügt.
Asynchrone Anfrage
\nJetzt schreiben wir eine Funktion, die eine Nachricht sendet und die Antwort von ChatGPT zurückgibt:
\n\nuse 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("Umgebungsvariable OPENAI_API_KEY ist nicht gesetzt");\n\n let client = reqwest::Client::new();\n\n let request_body = ChatRequest {\n model: "gpt-4o-mini".to_string(), // schnelles und günstiges Modell\n messages: vec![\n Message {\n role: "system".to_string(),\n