Utilisation de l'API OpenAI Chat Completion pour la génération de texte conversationnel

L'API OpenAI Chat Completion fournit une interface programmatique pour accéder aux modèles de langage de ChatGPT. Elle permet d'envoyer des séquences de messages et de recevoir des réponses générées par le modèle, avec prise en charge du streaming, des conversations multi-tours et des fonctionnalités multimodales.

Obtention d'un jeton d'accès

Pour utiliser l'API, il faut d'abord obtenir un jeton d'authentification. Accédez au tableau de bord développeur, créez un compte si nécessaire, et générez une clé API. La création initiale offre souvent un crédit gratuit pour commencer.

Envoi d'une requête de base

Une requête typique nécessite trois paramètres principaux : l'en-tête d'autorisation avec le jeton, le choix du modèle (comme gpt-4 ou gpt-3.5-turbo), et un tableau de messages. Chaque message contient un rôle (user, assistant, ou system) et un contenu textuel.

Paramètres optionnels courants :

  • max_tokens : Limite la longueur de la réponse.
  • temperature : Contrôle la créativité (valeur entre 0 et 2).
  • n : Nombre de réponses alternatives à générer.
  • response_format : Spécifie le format de sortie (par exemple, JSON structuré).

Exemple de réponse JSON :

{
  "id": "chatcmpl-exemple123",
  "object": "chat.completion",
  "created": 1700000000,
  "model": "gpt-4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Bonjour ! Comment puis-je vous aider ?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 8,
    "total_tokens": 18
  }
}

Les champs clés incluent id (identifiant de la requête), model (modèle utilisé), choices (réponses générées) et usage (statistiques de consommation de tokens).

Utilisation du streaming pour les réponses en temps réel

Activer le streaming en définissant stream à true permet de recevoir la réponse par morceaux, utile pour les interfaces utilisateur dynamiques. La réponse se présente comme un flux de données JSON séparées par des lignes commençant par data:. Un marqueur [DONE] indique la fin du flux.

Exemple avec Python en utilisant la bibliothèque requests :

import requests

api_endpoint = "https://api.openai.com/v1/chat/completions"
api_key = "votre_cle_api"

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

request_data = {
    "model": "gpt-4",
    "messages": [{"role": "user", "content": "Décris la couleur bleue."}],
    "stream": True
}

with requests.post(api_endpoint, json=request_data, headers=request_headers, stream=True) as response:
    for line in response.iter_lines():
        if line:
            print(line.decode())

Conversations à plusieurs tours

Pour maintenir le contexte, incluez l'historique des échanges dans le tableau messages. Chaque message représente un tour de conversation, permettant au modèle de répondre en fonction du dialogue antérieur.

Exemple en JavaScript (Node.js) :

const axios = require('axios');

const apiUrl = 'https://api.openai.com/v1/chat/completions';
const apiKey = 'votre_cle_api';

const conversationHistory = [
  { role: 'system', content: 'Vous êtes un assistant technique.' },
  { role: 'user', content: 'Comment fonctionne le streaming ?' },
  { role: 'assistant', content: 'Le streaming envoie les données progressivement.' },
  { role: 'user', content: 'Donne un exemple.' }
];

axios.post(apiUrl, {
  model: 'gpt-4',
  messages: conversationHistory
}, {
  headers: { 'Authorization': `Bearer ${apiKey}` }
})
.then(response => console.log(response.data.choices[0].message.content))
.catch(error => console.error('Erreur:', error));

Intégration avec la bibliothèque Python OpenAI

La bibliothèque officielle openai simplifie l'interaction. Configurez les variables d'environnement OPENAI_API_KEY et, si nécessaire, OPENAI_BASE_URL pour utiliser un endpoint personnalisé.

Installation : pip install openai

Exemple de code :

import os
from openai import OpenAI

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "Quelles sont les tendances en IA ?"}
    ]
)

print(response.choices[0].message.content)

Modèles avec capacité de recherche en ligne

Certains modèles comme gpt-4-browsing peuvent effectuer des recherches web en temps réel pour enrichir leurs réponses. Le résultat inclut souvent des liens sources, et le contenu doit être rendu avec une syntaxe Markdown pour une meilleure lisibilité.

Modèles de vision multimodale

Les modèles comme gpt-4o traitent à la fois texte et images. Pour envoyer une image, structurez le contenu comme une liste d'objets avec des champs type (soit text, soit image_url).

Exemple avec cURL :

curl -X POST 'https://api.openai.com/v1/chat/completions' \
-H 'Authorization: Bearer votre_cle_api' \
-H 'Content-Type: application/json' \
-d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "text", "text": "Décris cette image."},
          {"type": "image_url", "image_url": {"url": "https://exemple.com/image.jpg"}}
        ]
      }
    ]
}'

Modèles de génération d'images

Des modèles spécialisés comme gpt-4o-image génèrent des images à partir de descriptions textuelles. La requête inclut un contenu mixte avec des textes et des références de fichiers.

Gestion des erreurs

L'API renvoie des codes HTTP standards avec des messages d'erreur explicites. Par exemple :

  • 401 Unauthorized : Jeton manquant ou invalide.
  • 429 Too Many Requests : Limite de débit dépassée.
  • 500 Internal Server Error : Erreur interne du serveur.

Réponse d'erreur typique :

{
  "error": {
    "message": "Requête incorrecte",
    "type": "invalid_request_error",
    "code": "invalid_api_key"
  }
}

Étiquettes: OpenAI ChatGPT API Python JavaScript

Publié le 30 mai à 16h25