# Quand utiliser un GPT, et quand utiliser l’API Assistants?

Date: 2024-01-28 · Author: Robert Scales · https://guidetoartificialintelligence.com/fr/apprendre/gpt-ou-api-assistants/

**Answer:** Créez un GPT quand les personnes qui ont besoin de votre assistant utilisent déjà ChatGPT et que vous voulez quelque chose qui fonctionne cet après-midi, sans code. Utilisez l’API Assistants quand l’assistant doit vivre dans votre propre site Web ou application, se brancher sur vos systèmes ou servir des gens qui n’ont pas de forfait ChatGPT.

Les deux options viennent de la même idée. Un GPT est une version personnalisée de ChatGPT que vous configurez en clavardant avec un outil de création : vous décrivez la tâche, ajoutez des consignes et téléversez les fichiers sur lesquels il doit s’appuyer, sans aucune programmation. L’API Assistants offre les mêmes ingrédients aux programmeurs, pour que l’assistant puisse fonctionner dans un logiciel que vous contrôlez. La vraie question n’est pas de savoir lequel est le plus intelligent, puisque les deux peuvent utiliser GPT-4, mais où se trouvent vos utilisateurs et de combien de contrôle vous avez besoin.

Un test simple règle la plupart des cas. Si vos utilisateurs ouvriront ChatGPT pour obtenir de l’aide, un GPT est le chemin le plus court. S’ils ouvriront votre site Web, votre application ou l’outil de votre entreprise, il vous faut l’API.

## Le même assistant, construit de deux façons

Imaginez une petite bibliothèque publique qui veut un assistant pour répondre aux questions sur ses règles de prêt, ses frais de retard et ses réservations de salles, à partir d’un PDF de 20 pages sur ses politiques.

**Sous forme de GPT.** Une employée qui a un forfait ChatGPT payant ouvre l’outil de création de GPT, décrit l’assistant en langage courant, téléverse le PDF et écrit quelques règles : répondre seulement à partir de la politique, le dire quand la politique ne couvre pas la question, et garder les réponses courtes. Dix minutes plus tard, ça fonctionne. Avec un forfait ChatGPT Team, OpenAI permet aux collègues de créer et de partager des GPT dans l’espace de travail, et affirme ne pas entraîner ses modèles sur les conversations de Team. Le hic : l’assistant vit dans ChatGPT, alors les usagers de la bibliothèque auraient besoin de leur propre compte pour l’utiliser, et la bibliothèque ne peut pas le mettre sur son propre site Web.

**Avec l’API Assistants.** Un développeur écrit un court programme. L’API a trois éléments de base :

| Élément de base | Ce qu’il contient | Exemple de la bibliothèque |
|---|---|---|
| Assistant (*Assistant*) | Modèle, consignes, outils et fichiers | « Assistant de bibliothèque » avec le PDF de la politique |
| Fil (*Thread*) | Une conversation, conservée par OpenAI | La conversation d’un usager sur le site Web |
| Exécution (*Run*) | L’assistant qui travaille sur un fil | Lire la question et répondre |

En voici l’essentiel en Python, avec la version 1 de la bibliothèque `openai` et les points de terminaison bêta d’Assistants tels qu’ils sont documentés ce mois-ci :

```python
import os, time
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

policy = client.files.create(file=open("library-policy.pdf", "rb"),
                             purpose="assistants")

helper = client.beta.assistants.create(
    name="Assistant de bibliothèque",
    instructions=("Réponds aux questions sur les règles de la bibliothèque en utilisant seulement "
                  "la politique jointe. Si la politique ne couvre pas la question, dis-le et suggère "
                  "de s'adresser au comptoir d'accueil. Garde tes réponses sous 80 mots."),
    model="gpt-4-1106-preview",
    tools=[{"type": "retrieval"}],
    file_ids=[policy.id],
)

thread = client.beta.threads.create()      # un par conversation d'usager
client.beta.threads.messages.create(thread_id=thread.id, role="user",
                                    content="Combien coûtent les frais de retard pour un DVD?")
run = client.beta.threads.runs.create(thread_id=thread.id, assistant_id=helper.id)

while run.status in ("queued", "in_progress"):   # les exécutions sont asynchrones
    time.sleep(1)
    run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)

reply = client.beta.threads.messages.list(thread_id=thread.id).data[0]
print(reply.content[0].text.value)
```

Vous créez l’assistant une seule fois et vous enregistrez son identifiant; ensuite, chaque usager obtient un nouveau fil. La boucle d’interrogation compte parce qu’une exécution ne répond pas instantanément : elle commence à l’état `queued`, et votre code vérifie de nouveau jusqu’à ce qu’elle se termine. Les messages reviennent du plus récent au plus ancien, ce qui explique pourquoi le code lit l’élément `[0]`. La récupération (*retrieval*) est l’outil qui fouille les fichiers téléversés, et OpenAI se charge pour vous du découpage et de l’indexation du PDF.

> **À essayer :** choisissez un document que vous connaissez bien, comme les règlements d’un club ou le manuel d’un produit. Construisez-en d’abord un GPT et posez-lui cinq vraies questions, puis notez les réponses que vous voudriez contrôler plus étroitement. Cette liste vous dira si l’API vaut le travail supplémentaire.

## Ce que vous contrôlez avec chacun

Un GPT vous donne gratuitement la rapidité et une fenêtre de clavardage soignée. Vous ne gérez ni serveurs, ni comptes, ni stockage des conversations. En échange, vous acceptez l’interface de ChatGPT et ses règles sur qui peut accéder à votre GPT.

L’API vous donne le contrôle. Vous choisissez l’écran où il apparaît, décidez qui peut l’utiliser, consignez les questions pour améliorer vos documents, et pouvez ajouter l’appel de fonctions (*function calling*) pour que l’assistant consulte des données en direct, par exemple pour savoir si une salle de réunion est libre ce soir. Vous prenez aussi le travail en charge : l’hébergement, la gestion des erreurs, la protection de votre clé d’API et la surveillance de vos dépenses.

Bien des projets utilisent les deux, l’un après l’autre. Créez le GPT pour tester l’idée avec des collègues, apprenez quelles consignes fonctionnent, puis transférez ces mêmes consignes dans un assistant quand l’idée a fait ses preuves.

## Combien coûte chacun à construire et à faire fonctionner?

Un GPT coûte le prix du forfait ChatGPT de la personne qui le crée. ChatGPT Plus coûte 20 $ US par mois; Team, 25 $ US par utilisateur par mois avec un forfait annuel, ou 30 $ US au mois. Il n’y a pas de frais par question, alors un GPT très utilisé coûte autant qu’un GPT peu utilisé. Sa création ne coûte que du temps.

L’API Assistants facture selon l’usage. Vous payez les jetons, les petits morceaux de texte que le modèle lit et écrit, au tarif du modèle choisi : pour GPT-4 Turbo, c’est 0,01 $ US par 1 000 jetons lus et 0,03 $ US par 1 000 jetons écrits. Deux frais d’outils s’ajoutent. L’interpréteur de code (*code interpreter*) coûte 0,03 $ US par session, et le stockage pour la récupération coûte 0,20 $ US par gigaoctet, par assistant, par jour.

Le détail qui surprend les gens, c’est que chaque exécution est facturée pour toute la conversation jusque-là, plus les passages que la récupération tire de vos fichiers, même si vous n’envoyez plus vous-même l’historique. Les longs fils coûtent plus cher par réponse que les courts. À titre d’illustration, avec des chiffres inventés mais plausibles : une réponse qui lit 5 000 jetons et en écrit 200 coûte environ 0,05 $ US en entrée plus 0,006 $ US en sortie, soit à peu près six cents. Un fichier de politique de 20 Mo stocké sur un assistant revient à bien moins d’un cent par jour au tarif publié.

Le choix se résume donc souvent au volume et au public. Pour une poignée de collègues qui paient déjà ChatGPT, un GPT ne coûte pratiquement rien à faire fonctionner. Pour des centaines d’usagers sur un site Web public, la tarification par réponse de l’API est la seule option, et quelques cents par question valent la peine d’être estimés avant le lancement.

## Sources

- Assistants API Overview (Python SDK): https://github.com/openai/openai-cookbook/blob/2c441ab9a200070fee204a63b4203628c456e878/examples/Assistants_API_overview_python.ipynb
- Pricing: https://web.archive.org/web/20240110213730/https://openai.com/pricing
- OpenAI debuts ChatGPT subscription aimed at small teams: https://techcrunch.com/2024/01/10/openai-launches-chatgpt-subscription-aimed-at-small-teams/
