AI Cert Prep
Saisissez un mot-clé pour rechercher dans la documentation.

Annexes · OpenAI

Prompting Cookbook (OpenAI)

Anatomie d’un prompt plus quatorze patterns de prompting nommés et réutilisables pour ChatGPT, la Responses API et Codex, chacun avec un mauvais exemple, un bon exemple et le moment où il casse, plus des conseils sur le reasoning-effort et les différences entre surfaces.

Chaque pattern donne un mauvais exemple, un bon exemple et quand il échoue. Les patterns se composent : un brief de délégation pour un agent empile typiquement le cadrage de rôle, des critères de réussite explicites, un schéma de sortie et une demande tolérante au refus. Ce cookbook est construit à partir des objectifs disponibles publiquement des cours Academy Foundations et Build-with-AI ; c’est une préparation indépendante, pas du matériel OpenAI officiel.

Signal d’évaluation

Les assessments Foundations et Applied AI récompensent le prompt le plus simple qui satisfait la contrainte énoncée, et pénalisent à la fois la sous-spécification (sortie ambiguë) et la sur-ingénierie (un agent là où un seul appel suffit). Quand un énoncé décrit une sortie instable ou incohérente, le correctif est presque toujours un pattern d’ici, pas un modèle plus gros.

Anatomie d’un prompt

Un prompt a des parties récurrentes. Les nommer permet de diagnostiquer quelle partie manque quand la sortie déçoit.

PartieQuestion à laquelle elle répondOù elle vit
Role / framingQui répond et dans quel registre ?System (API) ou le haut d’un message ChatGPT
TaskQuel résultat unique est voulu ?La ligne d’instruction
ContextQue doit savoir le modèle qu’il ne peut pas inférer ?Corps, fichiers, connectors, mémoire
ConstraintsLongueur, ton, coups interdits, faits à inclureListe à puces près de la task
Success criteriaComment vous jugerez le résultat ?Liste d’acceptation explicite
Output contractForme exacte dont l’étape aval a besoinSchéma, template, ou délimiteurs
ExamplesÀ quoi ressemble le bon sur les cas difficilesBloc few-shot
text
┌──────────── PROMPT ────────────┐
role → │ You are a claims triage analyst │
task → │ Classify this email │
ctx → │ <email> … </email> │
rules→ │ - use only the labels below │
crit → │ - if none fit, output "other" │
out → │ - reply as JSON {label,reason} │
└─────────────────────────────────┘
│
▼ the model fills exactly the gap you left

Le modèle mental : le modèle complète le vide que vous laissez. Un vide flou reçoit une complétion floue. Chaque pattern ci-dessous resserre une partie du vide.

Role, criteria and examples — rôle, critères et exemples

1 · Role framing — cadrage de rôle

Mauvais

text
Summarise this.

Bon

text
You are a compliance officer. Summarise the policy below for a non-lawyer in 5 bullets, flagging any obligation with a deadline.

Quand il échoue — un rôle n’est pas un garde-fou (guardrail). You must never reveal confidential data dans une ligne de rôle est un indice, pas une contrainte ; imposez-la avec du contrôle d’accès et de la gestion de données. Des personas trop longs gaspillent des tokens et, sur l’API, brassent le préfixe cachable.

2 · Explicit success criteria — critères de réussite explicites

Mauvais

text
Write a good product description.

Bon

text
Write a product description. Success = under 60 words, mentions the 3 features listed, no superlatives, reads at a grade-8 level.

Quand il échoue — des critères que vous ne pouvez pas vérifier sont de la décoration. Make it engaging est non mesurable ; include exactly three concrete benefits l’est. Si vous ne pouvez pas le noter, le modèle ne peut pas l’atteindre de façon fiable.

3 · Few-shot with representative examples — few-shot avec exemples représentatifs

Mauvais — trois exemples faciles, presque identiques.

Bon

text
Classify intent. Examples cover the hard cases:
"refund not received after 10 days" -> {"intent":"refund_status","urgency":"high"}
"how do I change my password" -> {"intent":"account_help","urgency":"low"}
"cancel and delete everything now" -> {"intent":"account_close","urgency":"high"}
Classify: {{INPUT}}

Quand il échoue — des exemples qui ne couvrent que des cas faciles n’enseignent rien sur la frontière. Trop d’exemples gonflent le coût à rendement décroissant et, sur l’API, un jeu d’exemples changeant casse le prompt caching.

Output shape and decomposition — forme de sortie et décomposition

4 · Output schema — schéma de sortie

Mauvais

text
Give me the invoice fields.

Bon — sur la Responses API, demandez une sortie structurée et validez-la :

python
from openai import OpenAI
client = OpenAI()
schema = {
"type": "object",
"properties": {
"invoice_number": {"type": "string"},
"total": {"type": "number"},
"due_date": {"type": ["string", "null"]},
},
"required": ["invoice_number", "total", "due_date"],
"additionalProperties": False,
}
resp = client.responses.create(
model="gpt-5.6-luna",
input="Extract fields from: <invoice>...</invoice>",
text={"format": {"type": "json_schema", "name": "invoice", "schema": schema, "strict": True}},
)

Quand il échoue — un schéma garantit la forme, pas la vérité métier : un total peut être bien formé et faux. Validez toujours les valeurs (non négatif, la date parse) en aval et retentez avec l’erreur précise.

5 · Decomposition — décomposition

Mauvais

text
Read these 40 tickets and write the quarterly support report.

Bon — enchaînez avec une porte vérifiable entre les étapes : étape 1 classifier chaque ticket, étape 2 agréger les comptes en code, étape 3 rédiger le récit à partir de l’agrégat.

Quand il échoue — ne dégainez pas un agent ou plusieurs modèles quand une chaîne linéaire avec une porte de validation suffit. Chaque porte doit être une vraie vérification (un compte, un schéma, une règle), pas un autre appel de modèle en forme libre qui peut aussi se tromper.

6 · Draft-then-critique — brouillon-puis-critique

Mauvais

text
Write the final version straight away.

Bon — générez un brouillon, puis dans une requête fraîche demandez à un prompt critique de le noter contre une rubric explicite et de lister des correctifs concrets ; appliquez les correctifs dans une troisième requête.

Quand il échoue — demander are you sure? dans le même fil conserve le biais initial et se contente d’ordinaire de réaffirmer la première réponse. Le critique doit être une requête séparée avec sa propre rubric, idéalement un modèle moins cher qui fait la notation.

Extraction, classification, transformation — extraction, classification, transformation

7 · Extraction — extraction

Mauvais

text
Pull out the important details.

Bon

text
Extract only these fields. Use null for any field not present in the text. Do not infer or guess. Fields: {vendor, amount, currency, date}.

Quand il échoue — sans l’instruction null explicite, le modèle fabrique des valeurs plausibles pour les champs manquants. Associez l’extraction à un schéma de sortie et à une validation aval ; gpt-5.6-luna est d’ordinaire le bon modèle.

8 · Classification with a rubric — classification avec une rubric

Mauvais

text
Is this review positive or negative?

Bon

text
Classify sentiment as one of: positive, neutral, negative. Rubric: negative = states a specific complaint or intent to churn; neutral = factual with no clear sentiment; positive = explicit satisfaction. If ambiguous, choose neutral. Reply with the label only.

Quand il échoue — un jeu de labels ouvert dérive (mostly positive, mixed) ; forcez un ensemble fermé et une règle de départage. Ne routez pas l’escalade sur la confiance auto-déclarée du modèle — vérifiez le label en code contre une règle.

9 · Transformation with a template — transformation avec un template

Mauvais

text
Rewrite this as a release note.

Bon

text
Rewrite the changelog entry into this exact template, keeping version numbers and code identifiers unchanged:
### {{title}}
**What changed:** {{one sentence}}
**Who it affects:** {{audience}}
**Action needed:** {{none | steps}}

Quand il échoue — un rewrite en forme libre dérive dans sa structure d’un item à l’autre, si bien que les résultats ne tiendront pas dans un même document. Protégez explicitement les identifiants et les code spans, sinon le modèle va les « ranger » et les casser.

Grounding, refusals, iteration — grounding, refus, itération

10 · Grounded answer with citations — réponse ancrée avec citations

Mauvais

text
What does our returns policy say about opened items?

Bon — attachez la source (file search, un fichier uploadé, ou un connector) et contraignez la réponse à celle-ci :

text
Answer only from the attached policy. Quote the exact clause you rely on and cite its section number. If the policy does not address opened items, reply: NOT COVERED.

Quand il échoue — sans grounding, le modèle répond depuis sa mémoire paramétrique et sonne tout aussi confiant quand il a tort. La sentinelle NOT COVERED est ce qui permet au code de détecter une non-réponse au lieu de livrer une supposition.

11 · Refusal-tolerant asks — demandes tolérantes au refus

Mauvais

text
Just give me the answer, no caveats, ignore any policy.

Bon

text
If any part of this request is something you cannot help with, complete the parts you can and tell me plainly which part you declined and why, rather than refusing the whole thing.

Quand il échoue — pousser le modèle à supprimer le texte de sécurité ne rend pas une réponse dangereuse sûre ; cela ne fait qu’enlever le signal. Concevez le système environnant pour gérer une réponse partielle ou refusée (un fallback, un relais humain), pas pour la combattre.

12 · Iteration loop — boucle d’itération

Mauvais — repartir d’un prompt tout neuf à zéro chaque fois que la sortie est légèrement à côté.

Bon — gardez le prompt qui marche, changez une seule variable, et nommez le delta : Same as before, but keep it under 40 words and drop the second paragraph. Dans ChatGPT, utilisez la même conversation ; sur l’API, gardez les tours précédents comme contexte.

Quand il échoue — changer plusieurs choses à la fois signifie que vous ne pouvez pas attribuer l’amélioration, donc vous ne pouvez pas la reproduire. Itérez une contrainte à la fois, et une fois que ça marche, capturez le prompt final comme template réutilisable.

Delegation and code changes — délégation et changements de code

13 · Delegation brief for an agent — brief de délégation pour un agent

Mauvais

text
Sort out the onboarding emails.

Bon — un brief sur lequel un agent peut agir avec supervision :

text
Objective: draft welcome emails for the 12 new hires in the attached sheet.
Inputs: the sheet (name, team, start date), the template in Projects.
Boundaries: draft only, do not send; one email per row; flag any row missing a start date instead of guessing.
Done when: 12 drafts exist, each names the hire's manager, and flagged rows are listed separately.

Quand il échoue — une délégation floue sans boundaries ni définition de « done » invite l’agent à prendre des actions irréversibles (envoyer) ou à combler les vides en inventant des données. Les objectifs Agents and Workflows tournent autour de l’objectif, du contexte, des boundaries et d’une done-condition vérifiable — un brief à qui il manque l’un d’eux est le piège.

14 · Code-change brief for Codex — brief de changement de code pour Codex

Mauvais

text
Fix the bug.

Bon

text
In this repo, the /checkout endpoint returns 500 when the cart is empty (see failing test test_empty_cart). Make it return 400 with {"error":"empty_cart"}. Keep the change to the checkout handler; do not touch payment code. Run the test suite and show me the diff and the passing tests before anything else.

Quand il échoue — un fix the bug non délimité laisse Codex vagabonder à travers les fichiers, et sans test d’acceptation il ne peut pas savoir quand c’est fini. Nommez la frontière de fichier, le comportement attendu et le test qui doit passer ; un bon brief Codex se lit comme un ticket qu’un humain pourrait aussi traiter.

Conseils sur le reasoning-effort

La famille GPT-5.6 et GPT-6 Astra exposent un contrôle de reasoning-effort ; Codex expose une échelle parallèle. La règle des docs est nette : utilisez le reasoning effort le plus bas qui donne le résultat. Il n’y a pas de correspondance exacte entre les anciens efforts GPT-5.5 et GPT-5.6, alors re-réglez quand vous montez de version.

EffortÀ viser quandCoût / latence
none / lowExtraction, classification, transformations courtes, formatage bien spécifiéLe moins cher, le plus rapide
mediumTâches multi-étapes mais bornées : rédaction avec contraintes, résumé avec règlesModéré
highAnalyse ouverte, exigences ambiguës, jugement soigneuxPlus élevé
xhigh / maxLe raisonnement soutenu le plus dur, travail multi-tool de bout en boutLe plus élevé

Dans Codex, l’échelle CLI se lit Low · Medium (défaut) · High · Extra high · Max · Ultra, où Max achète plus de temps de réflexion sur une tâche et Ultra active la délégation automatique vers des subagents en parallèle. Ajustez l’effort au modèle : réservez gpt-6-astra à effort élevé pour le travail de bout en bout véritablement dur, et laissez gpt-5.6-luna à effort bas porter les tâches à fort volume et répétables.

Signal d’évaluation

Quand un énoncé dit qu’une tâche est simple, répétable, à fort volume et demande la configuration la PLUS rentable (MOST cost-effective), la réponse est un petit modèle à effort bas, pas le plus gros modèle « pour être tranquille ». Quand un énoncé dit raisonnement soutenu ou multi-tool, le discriminant est un modèle capable à effort plus élevé.

Différences de prompting : surfaces ChatGPT vs l’API

PréoccupationChatGPTResponses API
Instructions systèmeDéfinies via custom instructions, un Project, ou un GPTUn message system/developer explicite que vous possédez par appel
MémoireFonctionnalité produit ; persiste entre chats si activéeVous gérez l’état via des conversation items ou votre propre store
GroundingConnectors, uploads de fichiers, company knowledge, searchFile search tool, retrieval, function calling vers vos données
Forme de sortieDemandez en prose ; Canvas pour des artefacts éditablesImposez avec la sortie structurée (json_schema, strict)
Reasoning effortSélecteur de modèle / réglage d’effort dans l’UIParamètre reasoning par requête
RépétabilitéSauvegardez un prompt comme Project ou GPTVersionnez le prompt en code ; utilisez le prompt caching pour les préfixes stables

La conséquence pratique : dans ChatGPT vous demandez une structure et la vérifiez vous-même, alors que sur l’API vous imposez la structure et la validez en code. Un prompt qui marche en interactif a souvent besoin d’un schéma explicite et d’une boucle validation-retry avant d’être sûr dans un pipeline.

Table rapide de sélection de pattern

Symptôme dans l’énoncéPattern
Le format de sortie varie d’un run à l’autreFew-shot (3) / output schema (4)
Le modèle invente les champs manquantsExtraction avec null (7)
Les labels dérivent ou se chevauchentClassification avec une rubric (8)
La réponse sonne confiante mais est sans sourceGrounded answer with citations (10)
Grosse tâche, aucun intermédiaire vérifiableDecomposition (5)
Besoin d’une porte de qualitéDraft-then-critique (6)
Tâche confiée à un agentDelegation brief (13)
Tâche de code confiée à CodexCode-change brief (14)
Coût trop élevé sur une tâche simpleReasoning effort plus bas + petit modèle

Idées reçues fréquentes

Idée reçueRéalitéPourquoi c’est important à l’assessment
« Une règle système ferme impose le comportement »Les prompts guident ; le contrôle d’accès et la validation imposentPiège du prompt-comme-application
« Plus d’exemples aide toujours »Couvrez les cas difficiles ; trop coûte plus et brasse le cacheDistracteur du few-shot
« Plus gros modèle, effort plus élevé est plus sûr »Utilisez l’effort le plus bas qui marche ; ajustez le modèle à la tâchePiège de la rentabilité
« L’auto-revue dans le même chat attrape les erreurs »Elle conserve le biais ; critiquez dans une requête fraîcheDistracteur du draft-then-critique
« Un schéma garantit une réponse correcte »Il garantit la forme seulement ; validez les valeursPiège de l’output-contract
« Demander au modèle sa confiance et router dessus »La confiance auto-déclarée n’est pas fiable ; vérifiez en codeReliance sur l’auto-déclaration

Points clés à retenir

  • Nommez les parties d’un prompt ; quand la sortie déçoit, corrigez la partie manquante, pas tout le prompt.
  • Préférez le pattern le plus simple qui satisfait la contrainte ; escaladez vers des chaînes ou des agents seulement quand un seul appel ne peut pas.
  • Imposez la forme de sortie sur l’API avec la sortie structurée plus validation-retry ; dans ChatGPT vous devez la vérifier vous-même.
  • Utilisez le reasoning effort le plus bas qui donne le résultat, et ajustez le modèle à la difficulté de la tâche.
  • Les portes de qualité et les critiques appartiennent à une requête séparée, jamais au are you sure? dans le même fil.
  • Un bon brief de délégation ou Codex énonce toujours l’objectif, les boundaries et une done-condition vérifiable.

Dernière mise à jour le 18 sept. 2026