Aller au contenu principal

Predicted Outputs : réponses accélérées

Accélérer les réponses quand vous connaissez la structure

Les Predicted Outputs sont une fonctionnalité qui permet de réduire significativement la latence lorsque vous savez à l’avance à quoi ressemblera une grande partie de la réponse. Au lieu de générer chaque token depuis zéro, le modèle valide votre prédiction et ne génère que les parties qui diffèrent.

Cas d’usage typiques

Les Predicted Outputs sont particulièrement efficaces pour :

  • Édition de code : vous envoyez le fichier complet et demandez une modification ciblée
  • Réécriture partielle : reformuler un paragraphe dans un document long
  • Complétion de templates : remplir les champs variables d’un template fixe
  • Mise à jour de données : modifier quelques valeurs dans un JSON structuré

Exemple : édition de code

import openai

client = openai.OpenAI()

code_original = """
def calculer_prix(quantite, prix_unitaire, tva=0.20):
    sous_total = quantite * prix_unitaire
    total = sous_total * (1 + tva)
    return total

def formater_facture(client, articles):
    lignes = []
    for article in articles:
        prix = calculer_prix(article["qte"], article["prix"])
        lignes.append(f"{article[nom]}: {prix:.2f}€")
    return "\n".join(lignes)
"""

# On prédit que la majeure partie du code reste identique
response = client.responses.create(
    model="gpt-5.3",
    input=(
        "Modifiez la fonction calculer_prix pour ajouter un paramètre "
        "de remise (discount) avec une valeur par défaut de 0. "
        "Appliquez la remise avant la TVA."
    ),
    prediction={
        "type": "content",
        "content": code_original,  # La prédiction
    },
)

print(response.output_text)
# Le modèle ne régénère que les lignes modifiées — latence réduite

Comment ça fonctionne techniquement

Le mécanisme de validation

Quand vous fournissez une prédiction :

  1. Le modèle compare sa génération token par token avec votre prédiction
  2. Les tokens qui correspondent sont validés instantanément (pas de calcul de génération)
  3. Les tokens qui diffèrent sont générés normalement
  4. Le résultat final est toujours correct — la prédiction ne force rien

Mesurer le gain

response = client.responses.create(
    model="gpt-5.3",
    input="Ajoutez un paramètre discount à la fonction calculer_prix.",
    prediction={
        "type": "content",
        "content": code_original,
    },
)

usage = response.usage
print(f"Tokens de sortie : {usage.output_tokens}")
print(f"Tokens acceptés (prédiction) : "
      f"{usage.output_tokens_details.accepted_prediction_tokens}")
print(f"Tokens rejetés (prédiction) : "
      f"{usage.output_tokens_details.rejected_prediction_tokens}")

# Plus le ratio accepté/total est élevé, plus le gain est important

Bonnes pratiques

Quand utiliser les Predicted Outputs

def doit_utiliser_prediction(texte_original: str, instruction: str) -> bool:
    """Heuristique pour décider si les Predicted Outputs valent le coup."""
    # Le texte doit être suffisamment long
    if len(texte_original) < 200:
        return False

    # L'instruction doit être une modification ciblée
    mots_edition = ["modifiez", "changez", "remplacez", "ajoutez", "corrigez"]
    est_edition = any(mot in instruction.lower() for mot in mots_edition)

    return est_edition

Pattern de mise à jour JSON

import json

donnees_originales = {
    "entreprise": "Corsen AI",
    "employes": 42,
    "departements": ["Engineering", "Sales", "Marketing"],
    "adresse": {
        "rue": "123 Avenue de la République",
        "ville": "Paris",
        "code_postal": "75011",
    },
}

json_original = json.dumps(donnees_originales, indent=2, ensure_ascii=False)

response = client.responses.create(
    model="gpt-5.3",
    input=(
        f"Mettez à jour le JSON suivant : changez le nombre d'employés "
        f"à 58 et ajoutez le département Data Science.\n\n{json_original}"
    ),
    prediction={
        "type": "content",
        "content": json_original,
    },
)

Limites et pièges

  • Pas compatible avec le streaming de tokens dans tous les cas — testez
  • Coût des tokens rejetés : les tokens de prédiction rejetés sont facturés
  • Ne pas utiliser pour des réponses totalement nouvelles : aucun gain si rien ne correspond
  • Les modèles de raisonnement (o3-pro, o4-mini) ne supportent pas les Predicted Outputs

Points clés à retenir

  • Les Predicted Outputs accélèrent les réponses quand vous connaissez la structure attendue
  • Idéal pour l’édition de code, la mise à jour de JSON, la réécriture partielle
  • Vérifiez accepted_prediction_tokens pour mesurer le gain réel
  • Ne les utilisez pas pour des générations entièrement nouvelles