Rust und KI: Wie man ChatGPT in der Rust-Entwicklung einsetzt

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum Rust und KI keine Fantasie, sondern ein Arbeitswerkzeug sind

\n\n

Wenn 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\n

In 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\n

Wenn Sie Ihrem Rust-Projekt jemals „Gehirn“ in Form eines Sprachmodells hinzufügen wollten – sind Sie hier genau richtig. Los geht's!

\n\n

Was wir brauchen: Werkzeuge und Vorbereitung

\n\n

Bevor wir Code schreiben, lassen Sie uns klären, was für die Integration von ChatGPT in eine Rust-Anwendung benötigt wird.

\n\n

Erforderliche 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_KEY ab
  • \n
  • Rust-Bibliotheken – wir werden die Crates reqwest (für HTTP-Anfragen), serde und serde_json (für die Arbeit mit JSON), tokio (asynchrone Laufzeitumgebung) verwenden
  • \n
\n\n

Projekt erstellen

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

Abhängigkeiten in Cargo.toml hinzufügen:

\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

Jetzt können Sie cargo build ausführen – die Abhängigkeiten werden automatisch heruntergeladen.

\n\n

Erste Anfrage an ChatGPT in Rust schreiben

\n\n

Der 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.

\n\n

Datenstrukturen für die API

\n

Die OpenAI API erwartet JSON mit einem bestimmten Schema. Beschreiben wir es mit 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

Beachten Sie: Message wird sowohl zum Senden als auch zum Empfangen verwendet – daher haben wir beide Attribute Serialize und Deserialize hinzugefügt.

\n\n

Asynchrone Anfrage

\n

Jetzt schreiben wir eine Funktion, die eine Nachricht sendet und die Antwort von ChatGPT zurückgibt:

\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("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                

Blogs

Buchempfehlungen