Éliminer l’ambiguïté des invites
Découvrez des techniques pour éliminer les interprétations multiples dans vos instructions.
Éliminer l’ambiguïté des invites est une leçon AI Prompt Engineering gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Prompt Engineering, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Prompt Engineering comprend 4 leçons au total.
Les effets de l'ambiguïté sur l'IA
Les instructions ambiguës obligent le modèle à choisir entre plusieurs interprétations valables. Il en choisit une — généralement la plus courante — et poursuit avec assurance, sans indiquer qu'il a dû faire un choix.
Résultat : vous obtenez une réponse parfaitement bien formulée à la mauvaise question. Repérer et éliminer l'ambiguïté avant l'envoi est plus rapide que de reformuler le résultat après coup.
Le grand classique : « Rendez-le meilleur »
« Rendez-le meilleur » est peut-être l'instruction la plus ambiguë qui soit. Meilleur comment ?
- Plus court ? Plus long ?
- Plus formel ? Plus familier ?
- Davantage d'exemples ? Moins d'exemples ?
- Un ton différent ? Une structure différente ?
- Une grammaire corrigée ? Un vocabulaire différent ?
Le modèle choisit une dimension et la modifie. Si ce n'est pas celle que vous vouliez modifier, vous vous retrouvez dans une boucle de reformulation.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
original_text = (
'Our software helps companies manage their data. '
'It has many features. Customers like it a lot.'
)
# Ambiguous improvement request
vague = f'Make this better:\n\n{original_text}'
# Unambiguous improvement request
specific = (
f'Rewrite this product description to be exactly 50% shorter, '
f'more confident in tone, and replace vague phrases like "many features" '
f'and "a lot" with specific claims. Do not add new features I have not mentioned.\n\n'
f'{original_text}'
)
for label, prompt in [('VAGUE', vague), ('SPECIFIC', specific)]:
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=200,
messages=[{'role': 'user', 'content': prompt}]
)
print(f'--- {label} ---')
print(response.content[0].text)
print()Interprétations multiples : exemples pratiques
Toute instruction contenant un pronom dont le référent n'est pas défini, un adjectif relatif ou un sujet manquant est potentiellement ambiguë. Exemples :
- « Améliorez les performances » — de quoi s'agit-il ? De la vitesse, de la précision ou de l'engagement des utilisateurs ?
- « Rédigez un texte sur l'impact » — positif, négatif, économique ou social ?
- « Corrigez ceci » — la logique, le style, la mise en forme ou la grammaire ?
- « Rendez-le professionnel » — un vocabulaire formel ? Des paragraphes structurés ? La suppression des émojis ?
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Disambiguating 'fix this code'
buggy_code = 'def divide(a, b): return a / b'
ambiguous = f'Fix this:\n{buggy_code}'
unambiguous = (
f'Fix only the division-by-zero bug in this function. '
f'Add a guard that raises a ValueError with message "b cannot be zero" when b=0. '
f'Do not change anything else — keep the function signature and return type identical.\n\n'
f'{buggy_code}'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': unambiguous}]
)
print(response.choices[0].message.content)Technique de désambiguïsation : énoncer l'interprétation
Si vous savez que votre instruction peut être interprétée de plusieurs façons, indiquez explicitement l'interprétation souhaitée.
Modèle : « Lorsque je dis [terme ambigu], je veux dire [définition précise]. »
Exemples :
- « Lorsque je dis modifier, je veux dire corriger uniquement la grammaire et l'orthographe — ne changez pas le contenu. »
- « Lorsque je dis bref, je veux dire 3 phrases maximum. »
- « Lorsque je dis professionnel, je veux dire sans pronoms à la première personne et sans formes contractées. »
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=256,
messages=[{
'role': 'user',
'content': (
'Edit the following paragraph. '
'When I say "edit", I mean: fix grammar and punctuation only. '
'Do NOT change vocabulary, sentence structure, or content. '
'When done, list each change you made in a numbered list below the edited text.\n\n'
'The team have went to the meeting early, but the manager '
'werent there so they waited for alot of time before leaving.'
)
}]
)
print(response.content[0].text)Technique de désambiguïsation : définir le périmètre
L'ambiguïté du périmètre est fréquente lorsqu'on demande des améliorations ou des extensions. Éliminez-la en définissant précisément ce qui est inclus et ce qui est exclu.
Dans le périmètre : ce que le modèle est autorisé à modifier
Hors périmètre : ce qui doit rester inchangé
C'est particulièrement important pour les tâches de modification de code, de révision de documents et de traitement de jeux de données, où des changements involontaires peuvent causer de graves problèmes.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
code_block = '''
def calculate_tax(income, rate):
return income * rate
def calculate_net(income, tax):
return income - tax
'''
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Add Python type hints to the following code.\n'
'IN SCOPE: adding type hints to parameters and return values only.\n'
'OUT OF SCOPE: changing function names, logic, docstrings, or formatting.\n'
'Do not add any comments or docstrings.\n\n'
+ code_block
)
}]
)
print(response.choices[0].message.content)Technique de désambiguïsation : préciser la forme du résultat
L'ambiguïté du résultat survient lorsque vous souhaitez un format précis sans le préciser. « Donnez-moi les données » — sous forme de paragraphe ? De liste ? De tableau ? D'objet JSON ?
Nommez toujours précisément la forme exacte du résultat attendue. Le modèle la respectera à la lettre si vous la lui indiquez explicitement.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
candidates_text = (
'Alice: 5 years Python, worked at Stripe, has a CS degree.\n'
'Bob: 3 years JavaScript, worked at a startup, self-taught.\n'
'Carol: 8 years Java, worked at Google, has an MS in CS.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=300,
messages=[{
'role': 'user',
'content': (
'Extract the candidate data below into a JSON array. '
'Each object must have exactly these keys: name, years_experience, primary_language, '
'previous_employer, education_level. '
'education_level values: DEGREE, MASTERS, SELF_TAUGHT.\n\n'
+ candidates_text
)
}]
)
print(response.content[0].text)Technique de désambiguïsation : demander au modèle de clarifier
Lorsque vous rédigez une instruction complexe dont vous savez qu'elle est ambiguë, vous pouvez demander au modèle de poser des questions de clarification avant d'essayer d'accomplir la tâche.
C'est particulièrement utile lors de la création d'assistants d'IA : vous voulez que le modèle recueille des informations plutôt que de faire des suppositions, comme le ferait un bon consultant humain.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
messages=[
{
'role': 'system',
'content': (
'You are a professional copywriter. '
'Before starting any writing task, ask exactly 3 clarifying questions '
'that would most improve the output quality. '
'Only proceed to write after the user answers those questions.'
)
},
{
'role': 'user',
'content': 'Write a landing page headline for my business.'
}
]
)
print(response.choices[0].message.content)Termes relatifs qui nécessitent un point de référence
Les termes relatifs n'ont pas de signification fixe : ils veulent dire des choses différentes selon les personnes :
- « Bref » — 1 phrase ? 3 phrases ? 1 paragraphe ?
- « Formel » — sans formes contractées ? Un style de citation universitaire ? Un langage juridique ?
- « Simple » — un niveau de lecture correspondant à la 5e année ? Aucun terme technique ? Uniquement des phrases courtes ?
- « Exhaustif » — couvrir tous les cas principaux ? Inclure les cas particuliers ? Avec des exemples ?
Remplacez chaque terme relatif par un équivalent concret et mesurable.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Relative terms mapped to concrete equivalents
mapping = [
('Give me a brief summary', 'Summarize in exactly 2 sentences'),
('Write something formal', 'Write using no contractions, no first person, and Flesch-Kincaid grade 12+'),
('Make it simple', 'Use only words a 10-year-old would know; max 15 words per sentence'),
('Be comprehensive', 'Cover at least 5 distinct subtopics with one example each'),
]
for vague, concrete in mapping:
print(f'Vague: "{vague}"')
print(f'Concrete: "{concrete}"')
print()Ambiguïté du sujet : qui effectue l'action ?
L'ambiguïté du sujet survient lorsqu'il n'est pas clair à qui ou à quoi l'instruction s'applique.
« Réécrivez l'introduction » — de quoi ? Du document que vous avez collé ? De celui dont nous avons parlé il y a 5 échanges ? D'un nouveau document ?
« Traduisez ceci » — quelle partie ? La réponse entière ? Seulement la section du résumé ? Les commentaires du code ?
Nommez toujours précisément l'objet ou la section que vous voulez désigner, en particulier dans les conversations comportant plusieurs échanges.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Clear subject reference prevents wrong-section edits
contract_text = (
'## Section 1: Payment Terms\nPayment is due within 30 days.\n\n'
'## Section 2: Termination\nEither party may terminate with 30 days notice.'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'In the contract below, rewrite ONLY Section 2 (Termination). '
'Change the notice period from 30 days to 90 days. '
'Do not change Section 1 or any other text.\n\n'
+ contract_text
)
}]
)
print(response.choices[0].message.content)Ambiguïté temporelle : quand ?
Les références temporelles présentes dans les instructions peuvent être ambiguës : « récent », « actuel », « dernier », « maintenant ».
L'entraînement du modèle s'arrête à une date donnée : il ne sait pas ce que signifie « maintenant » si vous ne le lui indiquez pas. Fournissez toujours des dates explicites pour les tâches sensibles au facteur temps.
- « Recherches récentes » → « Recherches publiées en 2024 ou 2025 »
- « Meilleures pratiques actuelles » → « Meilleures pratiques en vigueur en janvier 2025 »
- « Dernière version » → « Version 3.12 (publiée en octobre 2024) »
import anthropic
from datetime import date
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
today = date.today().isoformat()
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=256,
system=f'Today is {today}. Use this as the reference for any time-related words.',
messages=[{
'role': 'user',
'content': (
'Describe the best practices for Python async programming '
'as of January 2025. If your knowledge does not cover this timeframe, '
'say so explicitly and share what you know up to your cutoff.'
)
}]
)
print(response.content[0].text)Créer un radar à ambiguïtés
Avant d'envoyer une instruction, repérez ces signaux d'ambiguïté :
- Pronoms sans référent clair : il, ceci, cela, ils
- Adjectifs relatifs : meilleur, plus court, formel, simple, exhaustif, récent
- Verbes vagues : corriger, améliorer, mettre à jour, faire, faire quelque chose à propos de
- Périmètre manquant : aucune mention de ce qui est dans le périmètre ou hors périmètre
- Format manquant : le format du résultat n'est pas précisé
- Contexte manquant : identité du public et finalité du résultat
def scan_prompt_for_ambiguity(prompt):
'''Simple heuristic scanner for common ambiguity patterns.'''
warnings = []
vague_verbs = ['fix', 'improve', 'make it', 'update', 'change it', 'redo']
relative_adj = ['better', 'shorter', 'longer', 'formal', 'simple', 'recent', 'comprehensive']
missing_format = ['json', 'table', 'list', 'bullet', 'paragraph', 'word', 'sentence']
lower = prompt.lower()
for v in vague_verbs:
if v in lower:
warnings.append(f'Vague verb detected: "{v}" — specify what change exactly')
for a in relative_adj:
if a in lower:
warnings.append(f'Relative adjective: "{a}" — anchor with a measurable definition')
if not any(f in lower for f in missing_format):
warnings.append('No output format specified — add format, length, or structure')
return warnings
test = 'Make the report better and more formal.'
print('Prompt:', test)
for w in scan_prompt_for_ambiguity(test):
print(' WARNING:', w)Vérification des connaissances
Un développeur envoie cette instruction : « Simplifiez le code. » L'IA raccourcit le code, mais le développeur voulait des noms de variables plus lisibles, et non un code plus court. Quel était le problème fondamental ?
Éliminer l'ambiguïté — récapitulatif
L'ambiguïté oblige le modèle à deviner — et sa supposition correspond à l'interprétation la plus générale, pas à la vôtre. Voici les principales techniques de désambiguïsation :
- Énoncez l'interprétation : « Lorsque je dis X, je veux dire Y »
- Définissez le périmètre : indiquez ce qui est dans le périmètre et ce qui en est hors
- Nommez la forme du résultat : JSON / tableau / paragraphe / nombre de phrases
- Ancrez les termes relatifs : « bref » → « 2 phrases », « formel » → « sans formes contractées »
- Nommez le sujet : « Section 2 », et non « cette partie »
- Demandez une clarification : demandez au modèle de poser des questions avant de poursuivre
Questions Fréquemment Posées
La leçon « Éliminer l’ambiguïté des invites » est-elle gratuite ?
Oui — le texte complet de « Éliminer l’ambiguïté des invites » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Prompt Engineering, passe à CoddyKit PRO. Le cours AI Prompt Engineering comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Éliminer l’ambiguïté des invites » ?
Découvrez des techniques pour éliminer les interprétations multiples dans vos instructions. Tu pratiques AI Prompt Engineering avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Prompt Engineering ?
Aucune expérience préalable n'est requise. AI Prompt Engineering sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Éliminer l’ambiguïté des invites » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Prompt Engineering ?
Oui. Chaque leçon AI Prompt Engineering inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi la précision est importante
- Éliminer l’ambiguïté des invites
- Ajouter des détails concrets
- Comparer les invites vagues et précises