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 :
- Le modèle compare sa génération token par token avec votre prédiction
- Les tokens qui correspondent sont validés instantanément (pas de calcul de génération)
- Les tokens qui diffèrent sont générés normalement
- 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_tokenspour mesurer le gain réel - Ne les utilisez pas pour des générations entièrement nouvelles