Créer des modèles à remplir
Utilisez des espaces réservés {{variable}} et la substitution de chaînes en Python.
Créer des modèles à remplir 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.
La convention des espaces réservés
Une structure de consigne à compléter utilise des espaces réservés pour marquer les parties d’une consigne qui seront remplacées par des valeurs réelles avant son envoi au modèle.
La convention la plus courante pour les espaces réservés utilise des accolades doubles : {{variable_name}}. Cette convention est facile à lire, a peu de chances d’apparaître accidentellement dans un texte normal et est largement prise en charge par les bibliothèques de modèles.
Vous rencontrerez également d’autres conventions : accolades simples {variable}, chevrons <variable> et variables en majuscules ALL_CAPS. Choisissez-en une et soyez cohérent.
Substitution simple de paramètres
Le modèle à trous le plus simple repose sur la substitution directe de chaînes :
Modèle : "Rédigez une description de {{product}} en {{word_count}} mots pour {{audience}}."
Une fois rempli : "Rédigez une description de TaskFlow Pro en 150 mots pour les propriétaires de petites entreprises."
La substitution s'effectue avant l'envoi de la chaîne au modèle : celui-ci reçoit une instruction complète et claire, sans marqueurs d'espace réservé. Les espaces réservés constituent une étape de prétraitement ; ce n'est pas le modèle lui-même qui les traite.
Catégories courantes d'espaces réservés
Construisez vos modèles à l'aide de catégories standard d'espaces réservés qui couvrent la plupart des cas d'utilisation :
{{customer_name}}— nom du destinataire ou du sujet{{product}}— produit, service ou sujet traité{{tone}}— par exemple : professionnel, décontracté, urgent ou enthousiaste{{audience}}— destinataires du contenu{{word_count}}— longueur cible{{format}}— puces, paragraphes ou liste numérotée{{context}}— informations contextuelles propres à cette situation
Une convention de nommage cohérente entre les modèles facilite la navigation dans votre bibliothèque et réduit les erreurs.
Substitution avec le formatage des chaînes Python
La méthode .format() intégrée aux chaînes Python permet de remplir simplement les espaces réservés à l'aide de la syntaxe {variable} :
import openai
client = openai.OpenAI(api_key='sk-...')
EMAIL_TEMPLATE = '''Write a follow-up email from {sender_name} to {recipient_name}.
Context: {context}
Tone: {tone}
Length: {word_count} words.
Include a clear call to action: {cta}.
Do not mention competitors. Active voice. No bullet points.'''
def generate_email(sender, recipient, context, tone, word_count, cta):
prompt = EMAIL_TEMPLATE.format(
sender_name=sender,
recipient_name=recipient,
context=context,
tone=tone,
word_count=word_count,
cta=cta
)
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}]
)
return response.choices[0].message.content
result = generate_email(
sender='Sarah Chen',
recipient='Mr. Patel',
context='We met at the DevConf conference last week and discussed API integration.',
tone='warm and professional',
word_count=120,
cta='Schedule a 20-minute demo call'
)
print(result)Approche des chaînes f de Python
Les chaînes f de Python offrent une syntaxe de substitution intégrée que certains développeurs préfèrent pour sa lisibilité :
import openai
client = openai.OpenAI(api_key='sk-...')
def generate_product_description(product, audience, tone, word_count, key_benefit):
prompt = (
f'Write a product description for {product}, designed for {audience}. '
f'Tone: {tone}. '
f'Length: {word_count} words. '
f'Lead with this key benefit: {key_benefit}. '
'Active voice. No bullet points. No pricing mentions.'
)
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}]
)
return response.choices[0].message.content
print(generate_product_description(
product='FocusFlow, a time-blocking productivity app',
audience='freelancers and independent consultants',
tone='energetic and practical',
word_count=150,
key_benefit='Reclaim two hours every day by blocking distractions automatically'
))Gestion des caractères spéciaux dans les espaces réservés
Un problème fréquent : les valeurs fournies par l'utilisateur qui contiennent des accolades, des guillemets ou des sauts de ligne peuvent perturber la substitution de chaînes.
Approches préventives :
- Nettoyez les entrées avant la substitution : supprimez ou échappez les caractères spéciaux si nécessaire
- Utilisez des chaînes entre triples guillemets pour les modèles multilignes afin de gérer les sauts de ligne en toute sécurité
- Lorsque la valeur de la variable contient elle-même des accolades, par exemple du code, utilisez une approche qui traite cette valeur comme du texte littéral (Jinja2 gère bien ce cas)
Testez toujours votre modèle avec des entrées correspondant à des cas limites : chaînes vides, chaînes contenant des guillemets, chaînes comportant des sauts de ligne et chaînes très longues.
Valeurs par défaut dans les modèles
Toutes les variables ne sont pas nécessairement obligatoires. Les modèles gagnent en flexibilité grâce aux valeurs par défaut des paramètres facultatifs :
def build_prompt(product, audience, tone='professional and friendly', word_count=200, format_style='prose'):
format_instruction = {
'prose': 'Write in continuous paragraphs. No bullet points.',
'bullets': 'Use bullet points. Each point is one sentence.',
'numbered': 'Use a numbered list. Each item is one sentence.'
}.get(format_style, 'Write in continuous paragraphs.')
return (
f'Write a description of {product} for {audience}. '
f'Tone: {tone}. '
f'Length: {word_count} words. '
f'{format_instruction} '
'Active voice. No competitor mentions.'
)
# Minimal call — uses all defaults
print(build_prompt('Notion', 'students'))
# Full call — overrides defaults
print(build_prompt('Notion', 'students', tone='casual', word_count=100, format_style='bullets'))Modèles à plusieurs blocs
Les instructions complexes peuvent comporter plusieurs blocs de variables : un bloc d'instructions système et un bloc de message utilisateur, chacun avec ses propres espaces réservés :
SYSTEM_TEMPLATE = 'You are a {role} writing for {company}. Your audience is {audience}. Style: {style}.'
USER_TEMPLATE = 'Write a {content_type} about {topic}. Length: {word_count} words. Deadline tone: {urgency}.'
import openai
client = openai.OpenAI(api_key='sk-...')
def generate(role, company, audience, style, content_type, topic, word_count, urgency):
system_msg = SYSTEM_TEMPLATE.format(
role=role, company=company, audience=audience, style=style
)
user_msg = USER_TEMPLATE.format(
content_type=content_type, topic=topic,
word_count=word_count, urgency=urgency
)
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': system_msg},
{'role': 'user', 'content': user_msg}
]
)
return response.choices[0].message.contentValidation des espaces réservés avant le rendu
Vérifiez toujours que tous les espaces réservés obligatoires sont remplis avant d'envoyer l'instruction. Un espace réservé manquant signifie que le modèle reçoit un texte littéral tel que {{product}} et peut produire un résultat aberrant :
import re
def validate_template(template_str, provided_vars):
required = set(re.findall(r'\{\{(\w+)\}\}', template_str))
missing = required - set(provided_vars.keys())
if missing:
raise ValueError(f'Missing required template variables: {missing}')
return True
template = 'Write a {{word_count}}-word {{tone}} description of {{product}} for {{audience}}.'
vars_provided = {'word_count': 150, 'tone': 'friendly', 'product': 'TaskFlow'}
try:
validate_template(template, vars_provided)
except ValueError as e:
print(f'Template error: {e}')
# Output: Template error: Missing required template variables: {{'audience'}}Blocs conditionnels dans les modèles
Parfois, une section du modèle ne doit apparaître que si une variable est fournie. Vous pouvez mettre cela en œuvre en Python en construisant la chaîne de manière conditionnelle :
def build_report_prompt(topic, audience, word_count, include_recommendations=False, cta=None):
prompt = f'Write a report on {topic} for {audience}. Length: {word_count} words. Active voice.'
if include_recommendations:
prompt += ' End with a numbered list of 3 specific recommendations.'
if cta:
prompt += f' Close with this call to action: {cta}'
return prompt
# Without optional sections
print(build_report_prompt('cloud cost optimization', 'engineering managers', 400))
# With optional sections
print(build_report_prompt(
topic='cloud cost optimization',
audience='engineering managers',
word_count=600,
include_recommendations=True,
cta='Book a cost audit with our team at cloudcost.io'
))Variables à choix prédéfinis
Certaines variables de modèle doivent être limitées à un ensemble fixe d'options valides. Appliquez une validation de type énumération :
VALID_TONES = ['professional', 'casual', 'urgent', 'empathetic', 'enthusiastic']
VALID_FORMATS = ['prose', 'bullets', 'numbered', 'table']
def generate_content(topic, tone, format_style, word_count):
if tone not in VALID_TONES:
raise ValueError(f'Invalid tone: {tone}. Choose from: {VALID_TONES}')
if format_style not in VALID_FORMATS:
raise ValueError(f'Invalid format: {format_style}. Choose from: {VALID_FORMATS}')
format_map = {
'prose': 'continuous paragraphs, no lists',
'bullets': 'bullet points',
'numbered': 'numbered list',
'table': 'a markdown table'
}
prompt = (f'Write about {topic} in {tone} tone. '
f'Format: {format_map[format_style]}. '
f'Length: {word_count} words. Active voice.')
return promptVérification des connaissances : modèles à trous
Vous disposez du modèle suivant : 'Write a {tone} email to {recipient} about {topic}. Length: {word_count} words.'
Vous l'appelez avec : tone='formal', recipient='the team', word_count=100, mais vous oubliez le paramètre topic.
Que se passe-t-il ?
Récapitulatif : création de modèles à trous
Les modèles d'instructions à trous utilisent des espaces réservés ({{variable}}, {variable} ou une syntaxe similaire) pour marquer les parties variables d'un modèle réutilisable. .format() de Python et les chaînes f sont les mécanismes de substitution les plus courants.
Bonnes pratiques : validez tous les espaces réservés obligatoires avant le rendu, utilisez des valeurs par défaut pour les variables facultatives, limitez les variables à choix énumérés et gérez les entrées correspondant à des cas limites, comme les chaînes vides ou les caractères spéciaux, de manière préventive.
Dans la prochaine leçon, vous découvrirez Jinja2 et string.Template de Python pour répondre à des besoins de substitution de variables plus avancés.
Apprends AI Prompt Engineering avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 53
- Leçons
- 199
Questions Fréquemment Posées
La leçon « Créer des modèles à remplir » est-elle gratuite ?
Oui — le texte complet de « Créer des modèles à remplir » 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 « Créer des modèles à remplir » ?
Utilisez des espaces réservés {{variable}} et la substitution de chaînes en Python. 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 « Créer des modèles à remplir » ?
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
- Qu’est-ce qu’un modèle d’invite ?
- Créer des modèles à remplir
- Techniques de substitution de variables
- Réutiliser des modèles pour différentes tâches