Intégration C# avec l'API ChatGPT : guide étape par étape

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment faire ami-ami entre C# et ChatGPT : guide complet d'intégration

\n\n

Imaginez : votre application en C# se met soudainement non seulement à exécuter des commandes, mais à mener un dialogue pertinent, écrire du code, traduire des textes ou générer des idées. Cela semble fantastique ? C'est pourtant déjà une réalité grâce à l'intégration de l'API ChatGPT en C#. Aujourd'hui, je vais vous montrer comment transformer en 15 minutes un simple programme console en assistant intelligent. C'est parti !

\n\n

OpenAI fournit une API REST puissante qui s'entend parfaitement avec .NET. Vous n'avez besoin d'aucun SDK tiers — un simple HttpClient standard et quelques bibliothèques pour travailler avec JSON suffisent. Tout le processus se résume en quatre étapes : obtenir une clé, envoyer une requête, analyser la réponse, se réjouir du résultat.

\n\n

De quoi avons-nous besoin pour commencer

\n\n

Avant d'écrire du code, préparons l'environnement. Vous aurez besoin de :

\n\n
    \n
  • Visual Studio 2022 ou JetBrains Rider (mais un simple .NET SDK + bloc-notes suffit aussi)
  • \n
  • .NET 6.0 ou supérieur (j'utilise .NET 8 — il est plus rapide)
  • \n
  • Clé API OpenAI — inscrivez-vous sur platform.openai.com, allez dans la section API Keys et créez une nouvelle clé secrète. Attention : la première fois, ils donnent 5 $ pour les tests, mais n'oubliez pas les limites !
  • \n
  • Bibliothèque Newtonsoft.Json ou System.Text.Json (intégrée dans .NET, mais je préfère Newtonsoft — elle est plus claire)
  • \n
\n\n

Vous pouvez installer Newtonsoft.Json via NuGet : Install-Package Newtonsoft.Json ou via le gestionnaire de paquets dans Visual Studio.

\n\n

Création de la première requête vers ChatGPT en C#

\n\n

Commençons simplement : envoyons un message au modèle et obtenons une réponse. Toute la magie opère via une requête POST vers le point de terminaison https://api.openai.com/v1/chat/completions.

\n\n

Voici le code fonctionnel minimal que je recommande de conserver comme point de départ :

\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 = "VOTRE_CLÉ_ICI"; // Ne la montrez à personne !\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 = "Raconte une blague sur les programmeurs" }\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 dit :");\n        Console.WriteLine(reply);\n    }\n}\n
\n\n

Vous lancez — et la console affiche quelque chose comme : « Pourquoi les programmeurs confondent-ils Halloween et Noël ? Parce que Oct 31 == Dec 25 ! ». Drôle ? Ça marche ? Parfait !

\n\n

Analyse du code en détail

\n\n

Voyons ce qui se passe ici. Nous créons un HttpClient, ajoutons un en-tête d'autorisation — c'est une pratique standard pour travailler avec l'API OpenAI en C#. Le corps de la requête est un objet JSON avec les paramètres :

\n\n