AI Prompt Engineering · Leçon

Texte brut ou sortie mise en forme

Apprenez quand demander du texte brut et épuré plutôt qu’une sortie Markdown enrichie.

Leçon 4 sur 413 étapes

Texte brut ou sortie mise en forme est une leçon AI Prompt Engineering gratuite sur CoddyKit. Ceci est la leçon 4 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.

Le cas du texte brut

Le formatage par balisage est puissant, mais ce n'est pas toujours le bon choix. De nombreuses applications concrètes nécessitent un texte propre et non formaté, dans lequel les symboles de balisage apparaissent comme des caractères littéraux plutôt que comme un formatage rendu.

Savoir quand demander du texte brut est aussi important que savoir demander un formatage enrichi.

Quand le texte brut est requis

Utilisez une sortie en texte brut lorsque votre environnement n'interprète pas le balisage :

  • Texte de courriel : la plupart des clients de messagerie affichent les astérisques bruts
  • SMS et notifications push : aucune prise en charge du formatage
  • Sortie vocale : la synthèse vocale lit littéralement « ** gras ** »
  • Champs de CRM et de service d'assistance : beaucoup n'interprètent pas le balisage
  • Traitement des données d'API : lorsque le texte sera stocké ou traité ultérieurement
  • Champs de saisie de systèmes anciens : texte brut uniquement
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=200,
    messages=[{
        'role': 'user',
        'content': (
            'Write a 120-character push notification for a flash sale ending in 2 hours. '
            'Plain text only — no emojis, no markdown, no asterisks, no special characters. '
            'Must include: urgency, discount percentage (30%), and category (electronics). '
            'Output the notification text only — nothing else.'
        )
    }]
)
print(response.content[0].text)

Demander explicitement du texte brut

Dans de nombreux contextes, les modèles d'IA produisent par défaut des sorties abondamment formatées avec du balisage. Pour obtenir un texte véritablement brut, vous devez le préciser explicitement et mentionner souvent les symboles particuliers à éviter :

  • « Texte brut uniquement — aucun formatage de balisage »
  • « Aucun astérisque, aucun signe dièse, aucun symbole de puce »
  • « Aucun en-tête, aucun gras, aucune liste — uniquement des paragraphes de prose suivie »
  • « Supprimez tout le formatage — produisez le résultat comme si vous écriviez dans le Bloc-notes »
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Without plain text instruction — likely gets markdown
default_prompt = 'Explain what a webhook is in 100 words.'

# With explicit plain text instruction
plain_prompt = (
    'Explain what a webhook is in 100 words. '
    'Output format: plain text only. No markdown. No asterisks. No headers. '
    'No bullet points. Just continuous prose paragraphs.'
)

for label, prompt in [('DEFAULT (likely markdown)', default_prompt), ('EXPLICIT PLAIN TEXT', plain_prompt)]:
    response = client.chat.completions.create(
        model='gpt-4o', max_tokens=150,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'--- {label} ---')
    print(response.choices[0].message.content)
    print()

Texte brut pour les courriels

La rédaction de courriels est l'un des cas d'utilisation du texte brut les plus courants. Bien que certains clients de messagerie prennent en charge le formatage HTML, le texte de courriel généré par l'IA devrait se présenter sous la forme d'une prose claire qu'un éditeur humain peut coller directement dans un client de messagerie ou un CRM sans nettoyage.

Précisez : « Rédigez le corps du courriel en texte brut. Aucun balisage. Aucun astérisque pour le gras. Aucun tiret pour les listes. Utilisez des phrases numérotées ou des sauts de ligne au lieu de listes. »

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{
        'role': 'user',
        'content': (
            'Write a 3-paragraph re-engagement email for inactive newsletter subscribers. '
            'Context: SaaS analytics tool, subscriber inactive for 60 days.\n'
            'Format requirements:\n'
            '- Plain text only — no asterisks, no pound signs, no bullet symbols\n'
            '- Paragraph 1: acknowledge absence, create curiosity\n'
            '- Paragraph 2: one new feature they missed\n'
            '- Paragraph 3: CTA with a direct link placeholder [LINK]\n'
            '- No subject line — body only'
        )
    }]
)
print(response.content[0].text)

Paragraphes en prose claire

Au-delà de l'évitement des symboles de balisage, la « prose claire » consiste à structurer les idées sous forme de phrases suivies plutôt que de puces fragmentées.

Une bonne prose :

  • Utilise des mots de transition pour relier les idées (cependant, de plus, par conséquent)
  • Varie la longueur des phrases pour créer un rythme
  • Regroupe les idées connexes en paragraphes cohérents
  • Évite de commencer chaque phrase par un nom

Demande : « Rédigez des paragraphes en prose claire — aucune liste, aucun en-tête, des phrases suivies avec des transitions. »

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

prose_prompt = (
    'Explain the advantages of using Docker for development environments. '
    'Write in 3 clean prose paragraphs. '
    'Requirements:\n'
    '- No bullet points or numbered lists\n'
    '- No markdown headers\n'
    '- Use transition words between sentences and paragraphs\n'
    '- Vary sentence length — mix short and long\n'
    '- 150 words total maximum'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': prose_prompt}]
)
print(response.choices[0].message.content)

Texte brut pour la sortie vocale

Les systèmes de synthèse vocale lisent tout littéralement. Si votre sortie d'IA doit être prononcée à voix haute :

  • Évitez tous les symboles de balisage
  • Évitez les abréviations (TTS peut ne pas les développer)
  • Écrivez les nombres en toutes lettres lorsque cela est approprié
  • Utilisez des virgules pour créer des pauses naturelles
  • Évitez les parenthèses — TTS les lit souvent de manière maladroite
  • Épelez les caractères spéciaux (« @ » → « arobase »)
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=200,
    messages=[{
        'role': 'user',
        'content': (
            'Write a 45-second spoken weather briefing for London today. '
            'Conditions: 12 degrees Celsius, light rain, wind 15 km/h from the southwest.\n'
            'Format for voice output:\n'
            '- No markdown symbols of any kind\n'
            '- No parentheses\n'
            '- No abbreviations (write "kilometres per hour" not "km/h")\n'
            '- Natural spoken rhythm — use commas for pause points\n'
            '- Write numbers as words when under ten'
        )
    }]
)
print(response.content[0].text)

Supprimer le balisage d'une sortie existante

Il arrive que vous obteniez une sortie avec du balisage lors d'un appel à une IA et que vous deviez la nettoyer pour un autre contexte. Vous pouvez effectuer un second appel à une IA consacré à la suppression du balisage :

« Supprimez tout formatage de balisage du texte suivant. Remplacez **bold** par du texte brut, supprimez les en-têtes #, convertissez les puces en phrases numérotées, supprimez tous les astérisques et les signes dièse. Produisez uniquement du texte brut propre. »

import openai
import re

client = openai.OpenAI(api_key='sk-your-key-here')

markdown_text = (
    '## Key Benefits\n'
    '- **Faster deployment** with Docker containers\n'
    '- **Consistent environments** across dev and prod\n'
    '- Reduced *configuration drift* between machines\n'
    '### Getting Started\n'
    'Run docker-compose up to start all services.'
)

# Option 1: Ask AI to strip
response = client.chat.completions.create(
    model='gpt-4o',
    max_tokens=150,
    messages=[{
        'role': 'user',
        'content': (
            'Remove all markdown formatting from the text below. '
            'Keep all the information but strip: **, ##, ###, -, *, backticks. '
            'Convert bullet lists to flowing sentences. Output plain text only.\n\n'
            + markdown_text
        )
    }]
)
print('AI-stripped:', response.choices[0].message.content.strip())

# Option 2: Simple regex strip (for code-based pipelines)
import re
clean = re.sub(r'[#*]', '', markdown_text).strip()
print('Regex-stripped:', clean)

Texte brut dans les messages système

Pour les assistants d'IA qui produisent systématiquement des sorties destinées à des environnements en texte brut, définissez la règle de formatage une seule fois dans le message système au lieu de la répéter à chaque intervention de l'utilisateur.

Il s'agit de l'approche la plus claire pour les applications en production lorsque vous connaissez à l'avance l'environnement de rendu.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# System message enforces plain text for all responses
plain_text_system = (
    'You are a helpful assistant embedded in a mobile push notification system. '
    'All your responses are displayed as plain text in mobile notifications. '
    'ALWAYS follow these formatting rules:\n'
    '- Never use markdown (no **, no #, no -, no backtick, no *, no _)\n'
    '- Never use bullet points or numbered lists\n'
    '- Write in 1-2 complete sentences only\n'
    '- Maximum 120 characters per response\n'
    '- No emojis'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=64,
    system=plain_text_system,
    messages=[
        {'role': 'user', 'content': 'Notify user their order has shipped and will arrive in 2 days.'}
    ]
)
print(response.content[0].text)

Cadre de décision du formatage

Utilisez ce cadre de décision rapide avant de demander un format de sortie :

  1. Où la sortie est-elle envoyée ? Interface web, courriel, terminal, voix, base de données
  2. Cet environnement interprète-t-il le balisage ? Oui → utilisez le balisage. Non → texte brut.
  3. Une personne la lira-t-elle ? Oui → structurez-la pour faciliter le repérage. Non → optimisez-la pour l'analyse.
  4. Du code la traitera-t-il ? Oui → JSON ou CSV, sans prose.
  5. Sera-t-elle prononcée ? Oui → texte brut adapté à la voix, sans abréviations.
def choose_format(environment, human_reads, code_processes, voice_output):
    '''Simple formatting decision tree.'''
    if voice_output:
        return 'PLAIN TEXT — voice safe, spell out numbers and units'
    if code_processes:
        return 'JSON or CSV — machine-parseable, no prose'
    renders_markdown = environment in ['web', 'notion', 'github', 'vscode', 'obsidian']
    if renders_markdown and human_reads:
        return 'MARKDOWN — headers, bold, code blocks, lists'
    return 'PLAIN TEXT — clean prose paragraphs, no markdown symbols'

scenarios = [
    ('web',         True,  False, False),
    ('email',       True,  False, False),
    ('api_pipeline',False, True,  False),
    ('voice_app',   False, False, True),
    ('terminal',    True,  False, False),
]
for env, human, code, voice in scenarios:
    result = choose_format(env, human, code, voice)
    print(f'{env:<15} -> {result}')

Texte brut structuré

Le texte brut n'a pas besoin d'être dépourvu de structure. Vous pouvez créer une structure sans balisage en utilisant :

  • ALL CAPS SECTION LABELS (affichées de la même manière partout)
  • Des sauts de ligne entre les sections
  • Des phrases numérotées : « 1. Premier point. 2. Deuxième point. »
  • Des tirets cadratins pour séparer : « Idée clé — vérifiez toujours avant d'agir. »
  • Une indentation régulière avec des espaces (pour la sortie du terminal)
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Write a daily briefing for a developer — 3 sections: TASKS, BLOCKERS, NOTES. '
            'Format: plain text only. '
            'Use ALL CAPS section labels followed by a colon. '
            'Use a line break between sections. '
            'Number each item within a section. '
            'No markdown symbols of any kind. '
            'Use realistic placeholder content.'
        )
    }]
)
print(response.choices[0].message.content)

Détection du format de sortie

Dans les applications en production, vous pouvez détecter l'environnement de sortie par programmation et insérer automatiquement l'instruction de formatage appropriée — vous n'aurez ainsi jamais besoin de la préciser manuellement dans chaque invite.

Il s'agit d'un schéma courant dans les systèmes d'IA multicanaux qui diffusent le même contenu aux utilisateurs du web, des appareils mobiles et des API.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

def get_format_instruction(channel):
    formats = {
        'web':   'Use markdown formatting: headers, bold, bullet points, code blocks.',
        'email': 'Plain text only. No markdown symbols. Use line breaks between sections.',
        'sms':   'Plain text. Single paragraph. Max 160 characters.',
        'voice': 'Plain text. No symbols. Natural spoken sentences only. Spell out numbers.',
        'api':   'JSON output only. No prose.',
    }
    return formats.get(channel, 'Plain text only.')

def ask_with_channel(question, channel):
    fmt = get_format_instruction(channel)
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=100,
        system=f'Format instruction: {fmt}',
        messages=[{'role': 'user', 'content': question}]
    )
    return response.content[0].text

q = 'What are 3 benefits of regular code reviews?'
for ch in ['web', 'sms', 'voice']:
    print(f'[{ch.upper()}]:')
    print(ask_with_channel(q, ch)[:150])
    print()

Vérification des connaissances

Un développeur construit un agent conversationnel d'IA pour le service client, qui transmet les réponses à un ancien CRM stockant du texte brut. L'IA continue de produire des réponses contenant ** pour le gras et - pour les puces, lesquels s'affichent comme des caractères bruts dans le CRM. Quelle est la solution la plus fiable ?

Texte brut ou sortie formatée — Récapitulatif

Le choix du format dépend de votre environnement de sortie. Règles principales :

  • Utilisez le balisage lorsque l'environnement l'interprète : interfaces web, outils de prise de notes, GitHub, documentation
  • Utilisez le texte brut pour les textes de courriel, les SMS, la voix, les CRM et les chaînes de traitement d'API
  • Utilisez le JSON/CSV lorsque du code traitera la sortie
  • Demandez du texte brut en indiquant explicitement les éléments à éviter : aucun astérisque, aucun signe dièse, aucune puce
  • Définissez les règles de formatage une seule fois dans le message système pour obtenir un comportement cohérent de l'application
  • Le texte brut peut tout de même être structuré au moyen de ALL CAPS LABELS, de sauts de ligne et de phrases numérotées
Gratuit pour commencer

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 « Texte brut ou sortie mise en forme » est-elle gratuite ?

Oui — le texte complet de « Texte brut ou sortie mise en forme » 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 « Texte brut ou sortie mise en forme » ?

Apprenez quand demander du texte brut et épuré plutôt qu’une sortie Markdown enrichie. 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 4 sur 4.

Combien de temps prend la leçon « Texte brut ou sortie mise en forme » ?

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

  1. Demander des listes et des puces
  2. Demander des tableaux et des données structurées
  3. Mise en forme Markdown dans les invites
  4. Texte brut ou sortie mise en forme
← Retour à AI Prompt Engineering