Créer votre assistant ChatGPT

Publié le 9 avril 2024 par Mathieu De Gracia
Couverture de l'article Créer votre assistant ChatGPT

Par le passé, nous vous avions présenté le package openai-php/laravel facilitant la communication avec les API d'OpenAI directement depuis votre Laravel.

Aujourd'hui, essayons d'approfondir l'une des fonctionnalités récentes d'OpenAI, les assistants.

Lorsque vous utilisez ChatGPT, vous êtes probablement contraint de lui fournir un contexte à l'aide d'un pré-prompt afin d'améliorer la qualité et la pertinence de ses réponses. Les connaissances de ChatGPT sont également limité, il ne sait pas tout, et n'est pas spécialisé pour répondre à des questions spécifiques.

Un assistant répond à ces problématiques en vous permettant de configurer en amont un modèle, un pre-prompt, ainsi qu'un ensemble de ressources afin de vous constituer un robot personnalisé ayant ses propres connaissances.

Voyons dans ce tutoriel comment créer rapidement notre premier assistant ChatGPT !

Configurer le package

Dans ce tutoriel, nous ne reviendrons pas en détails sur la configuration du package openai-php/laravel.

Vous retrouverez dans notre précédent article toutes les informations nécessaires afin de configurer le package, de comprendre la tarification et de lancer vos premières requêtes vers les APIs d'OpenAI !

Une fois le package opérationnel, vous pourrez commencer la création de votre assistant.

Créer un assistant

La toute première étape consistera à créer l'assistant depuis les API, plusieurs modèles sont disponibles mais nous vous conseillons d'utiliser le plus récent à ce jour : gpt-4-turbo-preview.

Ce dernier prend en charge une fonctionnalité essentielle pour notre assistant : la possibilité de lire et de rechercher des informations dans des fichiers que nous lui transmettrons par la suite.

1$assistant = OpenAI::assistants()->create([
2 'name' => '',
3 'instructions' => '',
4 'tools' => [
5 [
6 'type' => 'retrieval',
7 ],
8 ],
9 'model' => 'gpt-4-turbo-preview',
10]);
11 
12echo $assistant->id; // asst_[...]

Conservez bien l'identifiant de votre assistant, son id, il vous sera utile un peu plus tard pour communiquer avec lui.

Pas de panique, si vous perdez cette valeur, votre assistant sera visible sur le panel d'administration de OpenAI à cette URL.

Transmettre des fichiers à l'assistant

Le moyen le plus simple de transmettre des fichiers à votre assistant sera d'utiliser l'interface fournie par OpenAI.

En éditant votre assistant sur la page de gestion, vous pourrez y ajouter autant de fichiers que nécessaire, ces fichiers seront par la suite visibles dans la page storage.

ChatGPT supporte un vaste choix d'extensions de fichiers, allant des documents texte aux images et incluant même les fichiers PHP, vous retrouverez la liste complète des extensions de fichiers supportées à cette URL.

Concernant la tarification, le téléchargement des fichiers coûte environ $0.20/GB par assistant et par jour.

Cela signifie que si vous téléchargez un fichier utilisé par 3 assistants, vous paierez 0.20*3$ par GB téléchargé, vous trouverez plus de détails sur la tarification des fichiers utilisés par les assistants à cette URL.

Un même fichier peut être utilisé par plusieurs assistants.

Communiquer avec l'assistant

Désormais, notre assistant est configuré et possède ses propres connaissances à travers les fichiers que nous lui avons transmis, nous sommes prêts à communiquer avec lui !

Interroger un assistant se déroule en plusieurs étapes : nous allons commencer par créer un thread dans lequel nous insérerons des messages, ensuite, ce thread sera exécuté par notre assistant qui aura la capacité de lire les fichiers que nous lui aurons précédemment transmis :

Tout d'abord, commençons par créer un nouveau thread :

1$thread = OpenAI::threads()->create([]);

Ce thread pourra recevoir un ou plusieurs messages, nous utiliserons à chaque fois le rôle par défaut, user :

1OpenAI::threads()->messages()->create($thread->id, [
2 'role' => 'user',
3 'content' => "Est-ce que tester c'est douter ?",
4]);

Une fois toutes vos questions insérées dans le thread, il ne nous reste plus qu'à l'exécuter en précisant l'identifiant que vous avez conservé un peu plus tot, à la création de l'assistant :

1$threadRunResponse = OpenAI::threads()->runs()->create(
2 threadId: $thread->id,
3 parameters: [
4 'assistant_id' => 'asst_[...]',
5 ],
6);
7 
8$status = $threadRunResponse->status;

Après cette étape, le thread sera bloqué le temps que l'assistant traite les différents messages, une simple boucle while nous permettra de surveiller l'état du thread et d'attendre que son status passe à completed :

1while ($status === 'queued' || $status === 'in_progress') {
2 
3 sleep(1);
4 
5 $threadRunResponse = OpenAI::threads()->runs()->retrieve(
6 threadId: $thread->id,
7 runId: $threadRunResponse->id,
8 );
9 
10 $status = $threadRunResponse->status;
11}

La génération des réponses prendra une dizaine de secondes selon la complexité de vos questions, du modèle utilisé et des fichiers à disposition de votre assistant.

Une fois le thread complété, nous pouvons récupérer les différentes réponses à nos messages à l'aide du code suivant :

1$threadMessageListResponse = OpenAI::threads()->messages()->list($thread->id);
2 
3foreach ($threadMessageListResponse->data as $threadMessageResponse) {
4 
5 foreach($threadMessageResponse->content as $content)
6 {
7 echo $content->text->value;
8 }
9}

Félicitations, vous venez d'interagir avec votre premier assistant !

Mathieu De Gracia avatar
Mathieu De Gracia
Des fois, mon chat code à ma place 🐱

A lire

Autres articles de la même catégorie