ChatGPT : comment utiliser l’API d’OpenAI avec PHP et cURL

Si vous commencez à utiliser de manière fréquente et intensive ChatGPT, la question de l’automatisation se pose rapidement. Surtout si vous êtes comme moi, un développeur, et que vous avez la possibilité de vous connecter à une API. Pour certains projets, plutôt que de passer par l’interface graphique, pourquoi ne pas automatiser directement les choses via l’API. Rassurez-vous, même si vous n’êtes pas un développeur chevronné, ce n’est pas très compliqué à mettre en place, et je vais tout vous expliquer dans ce tutoriel complet. Cela vous sera par exemple très utile pour générer du contenu avec ChatGPT de manière automatique.

Pour commencer, sachez qu’à la création d’un compte, même si cela a malheureusement été réduit par rapport à avant, OpenAI vous propose cinq dollars de crédit pour pouvoir utiliser leur API. Ce n’est pas grand-chose, mais c’est largement suffisant pour démarrer vos tests et utiliser l’API gratuitement pendant quelque temps. Très pratique pour vous faire la main en condition réelle ! Attention, comme vous le voyez sur l’image ci-dessous, vos crédits gratuits ont une date d’expiration. Tentez donc de les utiliser au maximum avant leur expiration. Vous pourrez bien sûr refaire un compte pour avoir à nouveau 5$ en cadeau de bienvenue, mais autant bien rentabiliser ses comptes. D’ailleurs, je ne sais pas si OpenAI maintiendra cette politique indéfiniment, donc autant en profiter le plus possible dès maintenant tant que c’est encore possible.

Créer un compte OpenAI et une clé api

J’ai d’ailleurs recréer un compte juste avant ce tutoriel, et j’ai pu quand même faire pas mal de requête qui ne m’ont consommé que six centimes de crédit comme vous pouvez le voir juste au-dessus. C’est donc très raisonnable et cela vous permet en plus de voir à quel point votre potentielle application sera consommatrice en termes de ressources sur l’API. Je ne vais pas rentrer dans les détails ici, mais selon le modèle que vous utilisez entre gpt-3.5-turbo et gpt-4, le prix n’est bien sûr pas le même. Loin de là, GPT-4 est beaucoup plus cher, mais aussi plus performant. Toutefois, pour certains projets, GPT-3.5 sera largement suffisant. Donc pensez-y pour faire des économies. Le choix du modèle n’est pas la seule chose qui va influencer le poids de votre facture chez OpenAI mais on reparlera de ça plus tard.

Une fois que vous avez créé votre nouveau compte OpenAI, rendez-vous sur ce lien pour pouvoir gérer vos clés API. C’est cette clé qui va nous permettre de nous authentifier et donc d’interagir avec l’API ChatGPT. Comme d’habitude faites bien attention de ne surtout pas la partager surtout si le test est concluant et que vous renseignez ensuite votre carte bleue pour passer aux choses sérieuses. Vous pourriez avoir un petit malin qui utilise votre clé et ensuite récupérer une facture astronomique à payer. Donc faites vraiment attention. Vous pourrez forcer des limites sur votre budget, mais on n’est jamais trop prudent, vous connaissez l’adage.

Cette étape n’est pas très compliquée. Vous allez pouvoir créer très facilement votre clé API en 2 clics et accessoirement lui donner un nom. Pratique si vous avez plusieurs applications qui utilisent l’API. Une fois crée, attention, elle n’apparaîtra qu’une seule fois pour des questions de sécurité. Donc notez-la bien dans un endroit sûr. Sinon il faudra refaire une nouvelle clé pour utiliser l’API de ChatGPT. Maintenant, que nous avons tout ce qu’il nous faut pour nous lancer. Nous pouvons passer à la suite et commencer à envoyer des requêtes vers l’API d’OpenAI et à utiliser ChatGPT avec PHP.

Le endpoint de ChatGPT de l’API d’OpenAI

Un endpoint pour une API (Application Programming Interface) est une URL spécifique à laquelle une application cliente peut envoyer une requête HTTP pour accéder à une fonctionnalité ou à des données spécifiques fournies par l’API. Les endpoints sont essentiellement des points d’entrée ou des points de terminaison dans une API qui permettent aux développeurs d’interagir avec les ressources ou les services fournis par l’API.

Chaque endpoint est généralement associé à une opération particulière, telle que la récupération de données, la création de nouvelles données, la mise à jour de données existantes ou la suppression de données. Lorsqu’une requête est envoyée à un endpoint spécifique avec les paramètres appropriés, l’API effectue l’action correspondante et renvoie une réponse au format spécifié par la documentation à l’application cliente. Dans notre cas, il s’agit ici de l’URL suivante que l’on va appeler avec cURL dans notre script PHP :

https://api.openai.com/v1/chat/completions

OpenAI nous fournit bien évidemment d’autres endpoints, mais ils remplissent d’autres fonctions que l’on verra dans de futurs tutoriels. Ce qui nous intéresse ici, c’est seulement le lien de l’API pour utiliser ChatGPT en PHP.

Communication avec l’API de ChatGPT un appel cURL dans PHP

Il existe maintenant une librairie officielle en PHP disponible sur GitHub pour utiliser l’API de ChatGPT. Mais ici je vais le faire à l’ancienne pour rester le plus simple possible et accessible pour tout le monde. Pour ce faire, nous allons renseigner simplement quelques paramètres et faire un appel cURL très simple. J’aime bien les choses simples et comme ça, il n’y a rien besoin d’installer de plus. On ne va utiliser que du PHP vanilla pour faire nos appels sur l’endpoint de l’API de ChatGPT.

Il faudra seulement que cURL soit activé dans votre environnement PHP. Comme j’aime bien le framework Laravel, je vais créer une commande pour faire tourner ce script en CLI. De votre côté, si vous utilisez un autre framework ou simplement du PHP vanille, cela devrait fonctionner aussi sans le moindre problème.

Pour commencer, je vais créer les 2 variables qui contiennent ma clé API d’OpenAI et l’URL de l’API :

$api_key = 'sk-maclétopsecrète';
$api_url = 'https://api.openai.com/v1/chat/completions';

Puis je crée la variable qui contient le prompt que l’on va transmettre à l’API :

$prompt = 'Qui a gagné la coupe du monde de football en 98 ?';

Ensuite, nous passons au tableau du contexte. Dans ce tutoriel, je vais rester très simple à ce niveau, mais nous verrons plus tard qu’il est possible de construire un contexte complet pour que l’intelligence artificielle comprenne mieux notre demande. C’est très utile sur des problèmes et des prompts plus complexes. D’ailleurs, je vous parlais au début de cet article de la consommation de votre budget sur l’API pour une bonne raison. Sachez que la longueur de votre prompt et du contexte que vous transmettez à l’API modifie le prix que va vous facturer OpenAI par requête.

Pour revenir à notre tutoriel, dans ce tableau, je commence par lui dire le rôle qu’il doit avoir pour lui construire un mini contexte, car cela influence fortement la réponse de l’intelligence artificielle. Cela se fait via la variable system. Ensuite, je lui donne le prompt de l’user qui est moi-même dans ce cas :

$data = array(
'model' => 'gpt-3.5-turbo',
'messages' => array(
    array('role' => 'system', 'content' => 'Vous êtes un assistant'),
    array('role' => 'user', 'content' => $prompt)
));

Nous pouvons maintenant lancer un appel sur le pays avec cURL tout ce qu’il y a de plus basique avec le code suivant :

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Authorization: Bearer ' . $api_key
));

Enfin, nous pouvons récupérer la réponse et la traiter avec le code suivant :

$response = curl_exec($ch);
curl_close($ch);
var_dump($response);

if ($response) {
    $response_data = json_decode($response, true);
    $response_prod = $response_data['choices'][0]['message']['content'];
    var_dump($response_prod) ;
} else {
    echo "Une erreur s'est produite lors de l'appel à l'API.";
}

Si sur le premier var_dump vous récupérez directement la réponse tel quel de l’API et que vous l’affichez, vous allez obtenir quelques informations supplémentaires en plus. Vous allez notamment avoir les statistiques de votre appel sur l’API, comme le nombre de tokens utilisés ou encore la raison qui a mis fin à la réponse de l’intelligence artificielle.

Cette réponse globale est au format JSON et vous devriez normalement avoir quelque chose qui devrait ressembler à ceci :

{
  "id": "chatcmpl-7xHBX3uiq6365eKw0Rjw4qUPsj9fP",
  "object": "chat.completion",
  "created": 1694361767,
  "model": "gpt-3.5-turbo-0613",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "L'équipe nationale de France a remporté la Coupe du Monde de football en 1998."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 30,
    "completion_tokens": 23,
    "total_tokens": 53
  }
}

Si c’est seulement la réponse de l’intelligence artificielle qui vous intéresse, c’est la ligne suivante :

$response_prod = $response_data['choices'][0]['message']['content'];

Qui permet de simplement récupérer la réponse seule dans le deuxième var_dump :

L'équipe nationale de France a remporté la Coupe du Monde de football en 1998.

Voilà vous savez maintenant comment utiliser l’API de ChatGPT en quelques lignes simples de PHP. Selon les retours sur cet article et son succès, je ferais sûrement d’autres tutoriels sur les différentes possibilités offertes par les différentes API fournies par OpenAI. Amusez-vous bien avec ChatGPT directement dans vos applications !

5 réflexions au sujet de “ChatGPT : comment utiliser l’API d’OpenAI avec PHP et cURL”

  1. Salut.

    Tiens je me rebiffe.
    Saurais tu comment utiliser des fichiers avec chatGPT.
    J’uploade un pdf via l’api, ca c’est bon mais apres je n’arrive pas poser une question à chatGPT concernant ce fichier.
    Par exemple savoir s’il contient un mot bien précis !

    Vu que tu as l’air de maitriser la chose !
    Merci.

    Répondre

Laisser un commentaire