Pourquoi un développeur Java aurait-il besoin de ChatGPT ? Ou comment arrêter d'avoir peur et aimer les réseaux de neurones
\nBonjour, collègue ! Si tu lis ceci, c'est que, comme moi, tu en as assez d'écrire des réponses standardisées pour le support technique, de générer des descriptions de produits ennuyeuses ou d'analyser manuellement les avis. Et si je te disais qu'en une seule soirée, tu peux donner vie à ton application Java en y connectant une véritable intelligence artificielle ? Oui, oui, je parle de ce fameux ChatGPT qui sait plaisanter, écrire du code et même expliquer le théorème de Pythagore à un chat.
\nDans cet article, nous n'allons pas analyser la théorie des probabilités ni apprendre les transformers. Nous allons simplement prendre Java, ajouter une pincée de requêtes HTTP et faire en sorte que GPT-4 (ou 3.5, si le budget est serré) travaille pour nous. Ça ressemble à de la magie ? En réalité, c'est de la pure ingénierie. C'est parti !
\n\nDe quoi avons-nous besoin ? Le kit minimal du gentleman
\nAvant d'écrire du code, assure-toi d'avoir :
\n- \n
- JDK 11 ou supérieur (nous utiliserons le nouveau
HttpClient, apparu précisément dans la version 11) ; \n - Une clé API OpenAI — tu peux l'obtenir sur la plateforme OpenAI. N'oublie pas de créditer ton compte (littéralement quelques dollars suffisent pour les tests) ; \n
- N'importe quel IDE — IntelliJ IDEA, Eclipse ou même le bloc-notes si tu es un puriste ; \n
- Maven ou Gradle — pour gérer facilement les dépendances (mais nous nous contenterons du minimum). \n
Au fait, si tu penses que l'intégration de ChatGPT en Java est quelque chose de complexe nécessitant du machine learning, je m'empresse de te rassurer : tout se résout avec une simple requête HTTP. Pas de réseaux de neurones à l'exécution, seulement une API REST.
\n\nPréparation du projet : Maven et dépendances
\nCrée un nouveau projet Maven et ajoute dans le fichier pom.xml une seule bibliothèque — Jackson pour travailler avec JSON. Impossible de s'en passer, car ChatGPT communique avec le monde exclusivement dans ce langage.
<dependency>\n <groupId>com.fasterxml.jackson.core</groupId>\n <artifactId>jackson-databind</artifactId>\n <version>2.15.2</version>\n</dependency>\n\nEt voilà ! Pas de SDK, pas de wrappers — seulement du Java pur et notre ingéniosité. Si tu utilises Gradle, ajoute simplement implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'.
Structure de la requête vers l'API OpenAI
\nAvant d'écrire du code, comprenons ce que le serveur attend de nous. L'API ChatGPT accepte une requête POST vers l'endpoint https://api.openai.com/v1/chat/completions. Le corps de la requête est un JSON avec cette structure :
{\n "model": "gpt-3.5-turbo",\n "messages": [\n {"role": "system", "content": "Tu es un assistant utile."},\n {"role": "user", "content": "Raconte une blague sur les développeurs Java."}\n ],\n "temperature": 0.7\n}\n\nAnalysons les champs :\n
- \n
- model — quel modèle répond. Pour économiser, prends
gpt-3.5-turbo, pour des réponses impressionnantes —gpt-4; \n - messages — un tableau de messages. Le message système définit le ton, et user est notre requête ; \n
- temperature — de 0 à 2. Plus elle est élevée, plus la réponse est créative (et plus le risque que le réseau de neurones hallucine est grand). \n
La réponse arrive également en JSON, et ce qui nous intéresse est le champ choices[0].message.content. C'est là que se cache le texte que nous allons afficher à l'utilisateur.
Écrivons le code : un client Java pour ChatGPT
\nCréons une classe ChatGPTClient. Elle sera responsable de l'envoi des requêtes et du traitement des réponses. Tout le code — dans un seul fichier, pour ne pas multiplier les entités.
import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpRes