1. Fondements des modèles de génération de texte

Le modèle de génération de texte d'OpenAI, généralement appelé le Transformateur Pré-entraîné Génératif (GPT), repose sur le mécanisme d'auto-attention en apprentissage profond pour comprendre et traiter le langage naturel. La formation du modèle GPT se compose de deux étapes : le pré-entraînement et le fine-tuning.

Pré-entraînement

Pendant l'étape de pré-entraînement, le modèle subit un apprentissage non supervisé à l'aide d'un ensemble de données textuelles à grande échelle. Dans ce processus, le modèle est formé en prédisant le mot suivant. Par exemple, étant donné la phrase "J'ai un stylo", après avoir vu les premiers mots, il tente de prédire le mot "stylo". L'objectif principal du pré-entraînement est de permettre au modèle de comprendre la structure et la sémantique du langage.

Fine-tuning

L'étape de fine-tuning implique un apprentissage supervisé sur des tâches spécifiques. À cette étape, le modèle est ajusté pour s'adapter à des applications particulières telles que les systèmes de questions-réponses et la résumé de documents. Le fine-tuning implique de poursuivre l'entraînement du modèle avec des ensembles de données annotées basées sur le modèle pré-entraîné, lui permettant ainsi de mieux s'adapter à des tâches spécifiques.

2. Scénarios d'application

Le modèle de génération de texte d'OpenAI peut être appliqué à un large éventail de scénarios. Voici quelques applications spécifiques :

  • Rédaction de documents: Aider les utilisateurs à rédiger et éditer rapidement des documents.
  • Écriture de code informatique: Générer des extraits de code pour faciliter la programmation.
  • Répondre à des questions sur une base de connaissances: Fournir des réponses basées sur les connaissances stockées.
  • Analyse de texte: Extraire des informations textuelles, analyser le sentiment, et plus encore.
  • Fournir une interface de langage naturel aux logiciels: Permettre aux utilisateurs d'interagir avec le logiciel en langage naturel.
  • Tutorat dans diverses matières: Fournir un accompagnement pédagogique dans plusieurs matières.
  • Traduction de langues: Traduire du texte entre différentes langues.
  • Simulation de personnages pour les jeux: Générer des dialogues et des histoires d'arrière-plan pour des jeux ou des scénarios de jeu de rôle.

3. Introduction au modèle de dialogue

Un modèle de dialogue est un type spécial de modèle de génération de texte qui comprend et génère des conversations naturelles à travers le pré-entraînement. Ce modèle peut simuler une conversation entre un utilisateur et un assistant virtuel, adapté aux applications interactives en temps réel.

L'utilisation d'un modèle de dialogue implique généralement des conversations interactives à plusieurs tours. Par exemple, lorsque l'utilisateur pose une question, le modèle peut générer des réponses appropriées basées sur les données d'entraînement précédentes. De plus, le modèle de dialogue peut conserver des informations contextuelles, en tenant compte du contenu de la conversation précédente pour générer des réponses plus cohérentes et naturelles.

Scénarios d'application du modèle de dialogue:

  • Assistant Service Client: Répondre automatiquement aux questions fréquemment posées par les utilisateurs, fournir de l'aide et des conseils.
  • Chatbots: Engager des interactions conversationnelles naturelles avec les utilisateurs.
  • Assistants Virtuels: Exécuter les commandes vocales des utilisateurs, telles que la planification de réunions, la définition de rappels, et plus encore.
  • Jeux de rôle: Enrichir l'expérience de jeu en donnant à des personnages de jeu des dialogues et des personnalités uniques.

4. API du modèle de dialogue

L'API du modèle de dialogue permet aux développeurs d'interagir avec le modèle GPT à l'aide de requêtes HTTP. Cette section va présenter comment utiliser curl pour construire des requêtes et interpréter les réponses renvoyées par le modèle.

Construction des requêtes

Avant de commencer, vous devez vous inscrire et obtenir une clé API auprès d'OpenAI, qui doit être authentifiée via des en-têtes HTTP lors de l'envoi de requêtes.

Voici un exemple d'utilisation de curl pour envoyer une requête à l'API du modèle de dialogue :

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [
      {
        "role": "system",
        "content": "Vous êtes un assistant utile."
      },
      {
        "role": "user",
        "content": "Quelle équipe a remporté la Série mondiale 2020 ?"
      }
    ]
  }'

Signification des Paramètres du Modèle de Dialogue

Lors de l'utilisation de l'API du modèle de dialogue d'OpenAI, les principaux paramètres incluent "modèle" et "messages", chacun ayant des significations spécifiques et influençant les résultats produits.

Paramètres du modèle

Le paramètre du modèle est utilisé pour spécifier la version du modèle à utiliser. Par exemple, "model": "gpt-3.5-turbo" indique que vous demandez le modèle GPT-3.5-Turbo. La version du modèle sélectionnée ici répondra à l'entrée de l'utilisateur en fonction de ses capacités, de ses données d'entraînement et de ses caractéristiques d'interface.

Voici les modèles actuellement pris en charge :

Modèles pris en charge Contexte maximum Description du modèle
gpt-4-0125-preview 128 000 tokens Modèle de prévisualisation GPT-4 Turbo conçu pour réduire les cas de "paresse" où le modèle échoue à compléter des tâches.
gpt-4-turbo-preview 128 000 tokens Actuellement pointant vers le modèle gpt-4-0125-preview.
gpt-4-1106-preview 128 000 tokens Modèle GPT-4 Turbo avec des capacités améliorées d'exécution des instructions, un mode JSON, une sortie reproductible et des appels de fonction parallèles.
gpt-4-vision-preview 128 000 tokens Modèle GPT-4 avec la capacité de comprendre les images, en plus de toutes les autres fonctionnalités de GPT-4 Turbo.
gpt-4 8 192 tokens Actuellement pointant vers gpt-4-0613.
gpt-4-0613 8 192 tokens Capture d'écran de GPT-4 du 13 juin 2023, offrant un meilleur support des appels de fonction.
gpt-4-32k 32 768 tokens Actuellement pointant vers gpt-4-32k-0613. Ce modèle n'est pas largement promu et préfère l'utilisation de GPT-4 Turbo.
gpt-4-32k-0613 32 768 tokens Version 32k de GPT-4 capture d'écran du 13 juin 2023. Ce modèle n'est pas largement promu et préfère l'utilisation de GPT-4 Turbo.
gpt-3.5-turbo-1106 16 385 tokens Le dernier modèle GPT-3.5 Turbo avec une exécution des instructions améliorée, un mode JSON, une sortie reproductible et des appels de fonction parallèles.
gpt-3.5-turbo 4 096 tokens Actuellement pointant vers gpt-3.5-turbo-0613.
gpt-3.5-turbo-16k 16 385 tokens Actuellement pointant vers gpt-3.5-turbo-16k-0613.
gpt-3.5-turbo-instruct 4 096 tokens Similaire aux modèles de l'ère GPT-3. Compatible avec les points d'achèvement de complétion traditionnels, pas adapté pour la complétion de chat.
gpt-3.5-turbo-0613 4 096 tokens Capture d'écran de gpt-3.5-turbo du 13 juin 2023. Sera obsolète le 13 juin 2024.
gpt-3.5-turbo-16k-0613 16 385 tokens Capture d'écran de gpt-3.5-16k-turbo du 13 juin 2023. Sera obsolète le 13 juin 2024.
gpt-3.5-turbo-0301 4 096 tokens Capture d'écran de gpt-3.5-turbo du 1er mars 2023. Sera obsolète le 13 juin 2024.

Paramètre Messages

Le paramètre messages est un tableau, où chaque élément représente un message dans la conversation. Chaque message est un objet contenant deux propriétés : role (le rôle de l'expéditeur) et content (le contenu spécifique du message).

  • role: Spécifie le rôle de l'expéditeur pour le message. Les valeurs facultatives comprennent "système", "utilisateur" et "assistant".
  • content: Le contenu spécifique du message.

Types et fonctions du rôle

La valeur du paramètre du rôle définit le type et la fonction du message. L'API de dialogue changera la réponse du modèle en fonction des différents rôles.

Rôle « système »

Les messages système servent à indiquer globalement le comportement du modèle. Par exemple, ils peuvent spécifier explicitement le rôle joué par le modèle (tel qu'assistant, traducteur, etc.) ou fournir des instructions spécifiques à suivre dans la conversation. Les messages système ont un impact à long terme sur le comportement du modèle tout au long de la conversation, mais ils sont généralement facultatifs.

Par exemple, si vous souhaitez que le modèle participe à la conversation en tant qu'assistant du service client, vous pouvez le spécifier dans le message système :

{
  "role": "system",
  "content": "Vous êtes un assistant du service client."
}

Rôle « utilisateur »

Les messages utilisateur représentent les questions saisies par l'utilisateur. Le modèle répond à ces messages et fournit des informations, des réponses ou d'autres formes de sortie. Ces messages sont une partie cruciale du flux de travail de l'API de dialogue et correspondent généralement à de véritables demandes d'utilisateur dans l'application.

Par exemple, dans la demande de l'utilisateur dans l'exemple curl ci-dessus :

{
  "role": "user",
  "content": "Quelle équipe a remporté la Série mondiale 2020 ?"
}

Rôle « assistant »

Les messages de l'assistant font généralement référence aux réponses générées par le modèle et peuvent également faire partie des messages d'historique de conversation fournis par le développeur, utilisés pour simuler le format de retour de l'IA. Dans les requêtes API, les messages de rôle d'assistant ne sont généralement pas fournis à moins qu'il ne soit nécessaire de prédéfinir le format dans lequel le modèle répond aux questions dans l'historique de la conversation pour fournir des exemples de sortie pour le modèle.

Analyse de la réponse

La réponse du modèle est renvoyée au format JSON. Voici un exemple d'analyse de la réponse :

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "Le champion de la Série mondiale 2020 est les Los Angeles Dodgers.",
        "role": "assistant"
      },
      "logprobs": null
    }
  ],
  "created": 1677664795,
  "id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
  "model": "gpt-3.5-turbo-0613",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 17,
    "prompt_tokens": 57,
    "total_tokens": 74
  }
}

Dans la réponse ci-dessus, vous pouvez obtenir la réponse du modèle à partir de choices[0].message.content.

Comment implémenter la fonction mémoire dans le modèle de dialogue

Voici un exemple d'utilisation de l'API de complétion de chat d'OpenAI pour implémenter la fonction mémoire du modèle GPT, qui montre comment sauvegarder le contexte de la conversation historique (c'est-à-dire le contenu de la mémoire) dans une nouvelle requête API pour obtenir un dialogue continu.

import requests

api_url = "https://api.openai.com/v1/chat/completions"
api_key = "Votre clé API OpenAI"

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}"
}

data = {
    "model": "gpt-3.5-turbo",  # Peut être remplacé par gpt-4 ou d'autres modèles disponibles
    "messages": [
      {
        "role": "system",  # Message système, utilisé pour définir le comportement du modèle de dialogue
        "content": "Vous êtes un assistant d'aide."
      },
      {
        "role": "user",  # Message de l'utilisateur, le modèle y répondra
        "content": "Pouvez-vous me dire les principales raisons du changement climatique ?"
      },
      {
        "role": "assistant",  # Réponse du modèle
        "content": "Les principales raisons du changement climatique incluent les émissions de gaz à effet de serre, la combustion de combustibles fossiles, et la déforestation, etc."
      },
      {
        "role": "user",  # Nouvelle question basée sur la réponse du modèle
        "content": "Comment pouvons-nous réduire les émissions de gaz à effet de serre ?"
      }
    ]
}

response = requests.post(api_url, headers=headers, json=data)

if response.status_code == 200:
    reply_content = response.json()['choices'][0]['message']['content']
    print(f"Réponse du modèle => {reply_content}")
else:
    print(f"Erreur de requête : {response.status_code}")

Dans cet exemple, nous simulons un utilisateur posant d'abord des questions sur les principales raisons du changement climatique, puis posant une autre question basée sur l'explication du modèle. Dans les requêtes suivantes, nous conservons le contenu de la conversation précédente pour que le modèle puisse se souvenir de l'historique de la conversation précédente et générer une réponse basée sur celui-ci. Cette méthode permet de transmettre et de mémoriser l'état du dialogue en utilisant l'entrée et la sortie du tour de conversation précédent comme messages historiques de la nouvelle demande.

Astuce : Pour implémenter la fonction mémoire du dialogue, étant donné que le modèle a une limite maximale de jetons, il n'est pas réalisable d'entrer tous les messages de conversation historique pour chaque demande. En général, les messages pertinents liés aux questions actuelles sont saisis comme messages historiques dans le modèle, et les sections suivantes expliqueront comment la fonctionnalité d'incorporation réalise une recherche de similarité de texte.

5. Schéma JSON

Le schéma JSON est une fonctionnalité de l'API du modèle de dialogue qui permet aux utilisateurs d'instruire le modèle de toujours renvoyer un objet JSON, adapté aux scénarios nécessitant la réception de réponses au format JSON.

Utilisation du schéma JSON

Pour utiliser le schéma JSON, vous devez définir le champ response_format comme { "type": "json_object" } dans le corps de la requête HTTP et vous assurer que le message du système indique que la sortie du modèle est au format JSON. Voici un exemple de requête curl pour activer le schéma JSON :

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $CLE_API_OPENAI" \
  -d '{
    "model": "gpt-3.5-turbo-1106",
    "response_format": { "type": "json_object" },
    "messages": [
      {
        "role": "system",
        "content": "Tu es un assistant utile conçu pour produire du JSON."
      },
      {
        "role": "user",
        "content": "Quelle équipe a remporté les World Series 2020 ?"
      }
    ]
  }'

Analyse de la réponse du schéma JSON

En mode Schéma JSON, la réponse contiendra un objet JSON complet et parfaitement analysé. Ce mode garantit que la sortie du modèle est un objet JSON valide qui peut être directement analysé et utilisé. Voici un exemple de réponse qui pourrait être renvoyée à l'aide du schéma JSON :

{
  "choices": [
    {
      "finish_reason": "stop",
      "message": {
        "content": "{\"winner\": \"Los Angeles Dodgers\"}"
      }
    }
  ]
}

En Python, vous pouvez utiliser le code suivant pour extraire le contenu de la réponse :

import json

response = {
  "choices": [
    {
      "finish_reason": "stop",
      "message": {
        "content": "{\"winner\": \"Los Angeles Dodgers\"}"
      }
    }
  ]
}

response_content = json.loads(response['choices'][0]['message']['content'])

print(response_content)

La sortie sera :

{'winner': 'Los Angeles Dodgers'}

Le Schéma JSON fournit une méthode fiable pour garantir le formatage correct des réponses pour des cas d'utilisation spécifiques. Il est donc recommandé d'activer le Schéma JSON dans les scénarios où il existe des exigences spécifiques pour le format de réponse de l'API.