Aller au contenu principal

Votre premier appel API

Votre premier appel API

C’est le moment de passer à la pratique. Dans cette leçon, vous allez effectuer votre premier appel à la Responses API, comprendre la structure de la réponse et expérimenter avec les paramètres de base.

L’appel le plus simple

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5.3",
    input="Quelle est la différence entre Python et JavaScript ?"
)

print(response.output_text)
# Résultat : Python est un langage polyvalent orienté vers la science des
# données et le backend, tandis que JavaScript est principalement utilisé
# pour le développement web frontend et backend (via Node.js)...

Deux paramètres suffisent :

  • model : le modèle à utiliser
  • input : votre prompt (texte ou liste de messages)

Comprendre la réponse

L’objet response contient bien plus que le texte :

response = client.responses.create(
    model="gpt-5.3",
    input="Bonjour, comment allez-vous ?"
)

# Le texte de la réponse (raccourci)
print(response.output_text)

# L'identifiant unique de la réponse
print(f"ID : {response.id}")

# Le modèle utilisé
print(f"Modèle : {response.model}")

# Les tokens consommés
print(f"Tokens entrée : {response.usage.input_tokens}")
print(f"Tokens sortie : {response.usage.output_tokens}")
print(f"Tokens total : {response.usage.total_tokens}")

# Résultat :
# Bonjour ! Je vais très bien, merci. Comment puis-je vous aider ?
# ID : resp_abc123xyz
# Modèle : gpt-5.3-2026-03-01
# Tokens entrée : 14
# Tokens sortie : 19
# Tokens total : 33

Les paramètres essentiels

Température : contrôler la créativité

# Température basse (0.0) = déterministe, factuel
response_factuel = client.responses.create(
    model="gpt-5.3",
    input="Quelle est la capitale de l'Allemagne ?",
    temperature=0.0
)
print(response_factuel.output_text)
# Résultat : La capitale de l'Allemagne est Berlin.

# Température haute (1.0) = créatif, varié
response_creatif = client.responses.create(
    model="gpt-5.3",
    input="Inventez un nom pour un café littéraire.",
    temperature=1.0
)
print(response_creatif.output_text)
# Résultat : "Les Pages Vagabondes" — un café où chaque table porte
# le nom d'un chapitre célèbre.

Instructions système

Vous pouvez fournir des instructions qui guident le comportement du modèle :

response = client.responses.create(
    model="gpt-5.3",
    instructions="Vous êtes un expert en cuisine française. "
                 "Répondez toujours avec des suggestions de recettes.",
    input="Je ne sais pas quoi faire avec des courgettes."
)
print(response.output_text)
# Résultat : Voici trois idées pour vos courgettes :
# 1. Gratin de courgettes au fromage de chèvre...
# 2. Ratatouille provençale...
# 3. Velouté froid de courgettes à la menthe...

Max output tokens

Limitez la longueur de la réponse :

response = client.responses.create(
    model="gpt-5.3",
    input="Expliquez la relativité générale.",
    max_output_tokens=100
)
print(response.output_text)
print(f"Tokens utilisés : {response.usage.output_tokens}")
# La réponse sera tronquée à environ 100 tokens

Input structuré : aller plus loin

L’input peut être une liste de messages pour des conversations plus complexes :

response = client.responses.create(
    model="gpt-5.3",
    input=[
        {
            "role": "user",
            "content": "Traduisez en anglais : Bonjour le monde"
        }
    ]
)
print(response.output_text)
# Résultat : Hello world

# Avec un contexte de conversation
response = client.responses.create(
    model="gpt-5.3",
    input=[
        {
            "role": "user",
            "content": "Mon langage préféré est Python."
        },
        {
            "role": "assistant",
            "content": "Python est un excellent choix ! Il est très polyvalent."
        },
        {
            "role": "user",
            "content": "Donnez-moi un conseil pour progresser."
        }
    ]
)
print(response.output_text)
# Résultat : Pour progresser en Python, je vous recommande de...

Gestion des erreurs de base

Protégez toujours vos appels API :

from openai import OpenAI, APIError, AuthenticationError, RateLimitError

client = OpenAI()

try:
    response = client.responses.create(
        model="gpt-5.3",
        input="Bonjour !"
    )
    print(response.output_text)
except AuthenticationError:
    print("Erreur : clé API invalide ou manquante")
except RateLimitError:
    print("Erreur : trop de requêtes, attendez un moment")
except APIError as e:
    print(f"Erreur API : {e.message}")

Exercice pratique

Créez un script qui pose trois questions différentes et affiche les réponses avec le nombre de tokens consommés :

from openai import OpenAI

client = OpenAI()

questions = [
    "Quel est le plus grand océan du monde ?",
    "Qui a peint la Joconde ?",
    "Combien de planètes compte le système solaire ?"
]

total_tokens = 0

for question in questions:
    response = client.responses.create(
        model="gpt-5.3",
        input=question,
        temperature=0.0
    )
    tokens = response.usage.total_tokens
    total_tokens += tokens
    print(f"Q: {question}")
    print(f"R: {response.output_text}")
    print(f"   ({tokens} tokens)\n")

print(f"Total : {total_tokens} tokens consommés")

Points clés à retenir

  • Un appel basique nécessite seulement model et input
  • response.output_text donne le texte de la réponse
  • response.usage détaille la consommation de tokens
  • La temperature contrôle la créativité (0.0 = factuel, 1.0 = créatif)
  • Les instructions remplacent le message système de Chat Completions
  • Gérez toujours les erreurs avec des blocs try/except