Integration von C# mit der ChatGPT-API: Schritt-für-Schritt-Anleitung

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

Wie man C# und ChatGPT zusammenbringt: Vollständiger Leitfaden zur Integration

\n\n

Stellen Sie sich vor: Ihre C#-Anwendung beginnt plötzlich nicht nur Befehle auszuführen, sondern führt sinnvolle Dialoge, schreibt Code, übersetzt Texte oder generiert Ideen. Klingt nach Science-Fiction? Das ist bereits Realität dank der Integration der ChatGPT-API in C#. Heute zeige ich Ihnen, wie Sie in 15 Minuten ein gewöhnliches Konsolenprogramm in einen intelligenten Assistenten verwandeln. Los geht's!

\n\n

OpenAI bietet eine leistungsstarke REST-API, die hervorragend mit .NET zusammenarbeitet. Sie benötigen keine externen SDKs – nur den standardmäßigen HttpClient und ein paar Bibliotheken für die Arbeit mit JSON. Der gesamte Prozess umfasst vier Schritte: Schlüssel abrufen, Anfrage senden, Antwort parsen, sich über das Ergebnis freuen.

\n\n

Was wir für den Start benötigen

\n\n

Bevor wir Code schreiben, bereiten wir die Umgebung vor. Sie benötigen:

\n\n
    \n
  • Visual Studio 2022 oder JetBrains Rider (aber auch das normale .NET SDK + Editor reichen)
  • \n
  • .NET 6.0 oder höher (ich verwende .NET 8 – es ist schneller)
  • \n
  • OpenAI-API-Key – Registrieren Sie sich auf platform.openai.com, gehen Sie zum Bereich API Keys und erstellen Sie einen neuen geheimen Schlüssel. Achtung: Beim ersten Mal gibt es $5 zum Testen, aber vergessen Sie nicht die Limits!
  • \n
  • Newtonsoft.Json-Bibliothek oder System.Text.Json (in .NET integriert, aber ich bevorzuge Newtonsoft – es ist anschaulicher)
  • \n
\n\n

Newtonsoft.Json kann über NuGet installiert werden: Install-Package Newtonsoft.Json oder über den Paketmanager in Visual Studio.

\n\n

Erste Anfrage an ChatGPT in C# erstellen

\n\n

Beginnen wir einfach: Senden wir eine Nachricht an das Modell und erhalten eine Antwort. Die ganze Magie geschieht über eine POST-Anfrage an den Endpunkt https://api.openai.com/v1/chat/completions.

\n\n

Hier ist der minimale funktionierende Code, den ich empfehle, als Ausgangspunkt zu speichern:

\n\n
using System;\nusing System.Net.Http;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\n\nclass Program\n{\n    private static readonly string apiKey = "IHR_SCHLÜSSEL_HIER"; // Niemandem zeigen!\n    private static readonly string endpoint = "https://api.openai.com/v1/chat/completions";\n\n    static async Task Main(string[] args)\n    {\n        var client = new HttpClient();\n        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");\n\n        var requestBody = new\n        {\n            model = "gpt-3.5-turbo",\n            messages = new[]\n            {\n                new { role = "user", content = "Erzähl einen Witz über Programmierer" }\n            },\n            temperature = 0.7,\n            max_tokens = 150\n        };\n\n        var json = JsonConvert.SerializeObject(requestBody);\n        var content = new StringContent(json, Encoding.UTF8, "application/json");\n\n        var response = await client.PostAsync(endpoint, content);\n        var responseString = await response.Content.ReadAsStringAsync();\n\n        var responseObject = JObject.Parse(responseString);\n        var reply = responseObject["choices"][0]["message"]["content"].ToString();\n\n        Console.WriteLine("ChatGPT sagt:");\n        Console.WriteLine(reply);\n    }\n}\n
\n\n

Sie starten es – und die Konsole gibt so etwas aus wie: «Warum verwechseln Programmierer Halloween und Weihnachten? Weil Oct 31 == Dec 25 ist!». Lustig? Funktioniert? Großartig!

\n\n

Den Code im Detail analysieren

\n\n

Schauen wir uns an, was hier passiert. Wir erstellen einen HttpClient, fügen den Autorisierungs-Header hinzu – das ist Standardpraxis für die Arbeit mit der OpenAI-API in C#. Der Anforderungstext ist ein JSON-Objekt mit Parametern:

\n\n