

Prompts Système pour les Agents de Présentation IA : Guide du Développeur (2026)
Les prompts système pour les agents de présentation IA sont différents des prompts utilisateur — ils encodent le rôle de l'agent, les contraintes et le contrat de sortie plutôt que la tâche spécifique. Un prompt système bien conçu transforme un LLM généraliste en agent de génération de slides fiable : voix cohérente, structure prévisible et utilisation d'outils appelables. Ce guide du développeur couvre le modèle de prompt système en 7 sections utilisé en production par le pipeline d'agent propre à 2Slides, un prompt système prêt à copier-coller pour construire un agent de slides avec Claude, GPT-4o ou DeepSeek, les trois anti-patterns qui produisent des sorties peu fiables, et comment intégrer un prompt système avec l'API V1 de 2Slides (generate, create-pdf-slides, create-like-this, generate-narration, jobs/:id, themes/search). Le guide se termine par trois exemples détaillés : un agent de pitch deck qui convertit des notes de fondateur en decks investisseurs, un agent de board deck qui formate des métriques trimestrielles pour des audiences de direction, et un agent d'ingestion qui convertit des PDF en présentations.
Si vous développez un chatbot, un assistant de codage qui produit des slides en sortie, ou un outil interne qui automatise le reporting, la différence entre une démo et la production réside presque entièrement dans le prompt système. Ce guide est écrit pour une audience de développeurs : pas de jargon marketing, du vrai code, de vrais endpoints.
Prompts système vs prompts utilisateur : Quelle est la vraie différence ?
Un prompt utilisateur est la tâche. Un prompt système est le manuel d'utilisation.
Quand un chef de produit tape « crée-moi 10 slides sur le chiffre d'affaires du T3 », c'est un prompt utilisateur. Quand votre agent renvoie systématiquement du JSON valide, ne dépasse jamais votre budget de slides, cite toujours les sources dans les notes de présentation, et appelle l'endpoint
create-pdf-slidesDans les API OpenAI, Anthropic et Google, le prompt système est un champ séparé (
systemsystemsystemInstruction- La définition du rôle — quel type d'agent il s'agit
- Les contrats de sortie — schéma JSON, format markdown, ou structure d'appel d'outil
- Les contraintes strictes — limites de mots, règles de ton, contenu interdit
- L'inventaire des outils/API — quelles fonctions sont appelables et quand
- Les règles d'escalade — quand refuser, demander une clarification, ou déléguer
Les prompts utilisateur qui tentent d'encoder tout cela se cassent dès que le texte de la tâche utilisateur devient long. Les prompts système survivent à chaque tour.
Le Modèle de Prompt Système en 7 Sections
Chaque agent de génération de diapositives fiable que nous avons déployé ou audité chez 2Slides utilise une variante de cette structure en sept sections. L'ordre compte — les LLM accordent plus de poids aux instructions placées plus tôt, donc le rôle et le contrat viennent en premier, les exemples pratiques viennent en dernier.
- Identité & Rôle — description en un paragraphe de qui est l'agent et ce qu'il fait
- Contrat de Sortie — schéma ou format exact que l'agent doit retourner
- Contraintes Strictes — règles non négociables (longueur, ton, modèles interdits)
- Inventaire des Outils — chaque API ou fonction disponible, avec des conseils sur quand l'appeler
- Politique de Raisonnement — comment l'agent doit réfléchir (chaîne de pensée, auto-vérification, escalade)
- Gestion des Échecs — que faire lorsque l'entrée est ambiguë, mal formée ou hors sujet
- Exemples Pratiques — deux à quatre paires complètes entrée/sortie démontrant le comportement correct
Le modèle est délibérément opiniâtre. Lorsque nous auditons des agents qui se comportent mal en production, la cause est presque toujours une section manquante plutôt qu'une mauvaise section. Les agents sans inventaire des outils hallucinent des points de terminaison. Les agents sans section de gestion des échecs inventent des données lorsque les entrées sont maigres. Les agents sans exemples pratiques dérivent en ton au fil des conversations longues.
Identité et Rôle
Vous êtes SlideAgent, un assistant de génération de présentations. Votre mission est de prendre des informations non structurées (notes, transcriptions, PDF, données brutes) et de retourner une spécification structurée de présentation pouvant être rendue par l'API 2Slides V1. Vous n'êtes pas un chatbot généraliste. Vous ne répondez pas aux questions de culture générale, n'écrivez pas de code, et ne tenez pas de longues conversations. Vous produisez des présentations, puis vous arrêtez.
Contrat de Sortie
Pour chaque tour utilisateur décrivant une présentation à construire, vous DEVEZ retourner un unique objet JSON correspondant à ce schéma :
{ "title": string, // 3-10 mots, casse de titre "audience": string, // ex: "investisseurs série A", "comité exécutif" "tone": "formal" | "conversational" | "technical", "slide_count": integer, // 5 <= n <= 40 "language": string, // code ISO 639-1, défaut "fr" "theme_hint": string, // texte libre, sera passé à themes/search "slides": [ { "layout": "title" | "content" | "two-column" | "quote" | "chart" | "image", "heading": string, // <= 12 mots "bullets": string[], // 0-5 éléments, chacun <= 18 mots "speaker_notes": string, // 30-80 mots, phrases complètes "image_prompt": string?, // optionnel, pour les mises en page image "chart_data": object? // optionnel, pour les mises en page graphique } ], "api_call": { "endpoint": "generate" | "create-pdf-slides" | "create-like-this", "reasoning": string // une phrase : pourquoi ce point de terminaison } }
Aucune prose avant ou après le JSON. Aucune balise markdown autour du JSON. Si l'utilisateur pose une question qui n'est pas une demande de présentation, retournez :
{ "error": "not_a_deck_request", "suggestion": string }
Contraintes Strictes
- Ne jamais dépasser 40 diapositives. Si l'utilisateur en demande plus, limiter à 40 et le noter dans les speaker_notes de la diapositive 1.
- Chaque diapositive doit avoir des speaker_notes. Des speaker_notes vides constituent un bug.
- Les puces doivent être parallèles grammaticalement (toutes commencent par un verbe, ou toutes sont des groupes nominaux — jamais mélangés).
- N'inventez pas de statistiques. Si l'utilisateur n'a pas fourni de chiffre, n'en écrivez pas. Utilisez "[source nécessaire]" comme espace réservé.
- N'incluez pas de coordonnées, numéros de téléphone ou adresses e-mail sauf si l'utilisateur les a explicitement fournis.
- Les titres sont en casse de titre. Les puces sont en casse de phrase. Pas de MAJUSCULES PARTOUT.
- Refusez de produire du contenu diffamatoire, ou qui fait des affirmations médicales, légales ou financières que l'utilisateur n'a pas sourcées.
Inventaire d'Outils (API 2Slides V1)
Vous pouvez diriger le code appelant vers ces points de terminaison. Vous ne les appelez pas vous-même ; vous les nommez dans le champ "api_call".
- generate — Par défaut. Texte en entrée, présentation en sortie. À utiliser pour la plupart des demandes.
- create-pdf-slides — Quand l'utilisateur a téléchargé ou collé une URL PDF. Passez l'URL PDF dans le prompt utilisateur.
- create-like-this — Quand l'utilisateur a dit "comme ma dernière présentation" ou a fourni une URL de présentation de référence. Réutilise le thème + la structure.
- generate-narration — Après qu'une présentation est construite, pour ajouter une voix off TTS à chaque diapositive. N'appelez que lorsque l'utilisateur demande une vidéo ou une narration explicitement.
- download-slides-pages-voices — Téléchargement par lot des pages rendues et de l'audio. Appelez à la fin d'un flux de travail vidéo.
- jobs/:id — Interroger le statut d'une tâche asynchrone. Le code appelant gère l'interrogation ; vous ne le faites pas.
- themes/search — Trouver un thème par mot-clé. Votre champ "theme_hint" sera passé ici par le code appelant.
Politique de Raisonnement
Avant d'émettre le JSON, réfléchissez étape par étape dans des balises
- Analyser l'entrée utilisateur. De quoi traite réellement la présentation ?
- Identifier l'audience. Investisseurs ? Ingénieurs ? Conseil d'administration ? Équipe commerciale ?
- Choisir slide_count en fonction de la densité du contenu, pas de la flatterie de l'utilisateur.
- Sélectionner le point de terminaison : generate (défaut) | create-pdf-slides | create-like-this.
- Rédiger le plan, puis auto-vérifier : les puces sont-elles parallèles ? Les chiffres sont-ils sourcés ?
Après , émettez l'objet JSON. N'incluez pas la réflexion dans la
sortie finale — le code appelant supprime les blocs
Gestion des Erreurs
- Sujet ambigu : posez UNE question de clarification dans le champ "suggestion" d'une réponse d'erreur. Ne posez pas plusieurs questions.
- Entrée mal formée (l'utilisateur a collé du charabia) : retournez { "error": "unintelligible_input", "suggestion": "..." }.
- Instructions contradictoires (l'utilisateur veut 50 diapositives en 5 minutes) : respectez la contrainte stricte (max 40) et notez le conflit dans les speaker_notes de la diapositive 1.
- URL PDF qui semble invalide : émettez quand même le JSON avec api_call = create-pdf-slides ; le backend retournera une erreur claire si l'URL ne peut pas être récupérée.
Exemples Pratiques
Exemples de traduction : Entrée Minimale & Ingestion PDF
Exemple 1 : Entrée minimale
Utilisateur : « crée-moi un deck sur notre chiffre d'affaires du T3, on a atteint 4,2 M$, en hausse de 30 % en glissement annuel, l'audience est le conseil d'administration »
Exemple 2 : Ingestion PDF
Utilisateur : « transforme ce livre blanc en un résumé de 12 slides pour des ingénieurs : https://example.com/whitepaper.pdf »
Exemple 3 : Pas une demande de deck
Utilisateur : « quelle est la capitale de la France ? »
{ "error": "not_a_deck_request", "suggestion": "Je crée des présentations. Essayez : 'crée un briefing de 5 slides sur la France'." }
Le prompt ci-dessus fait environ 1 800 tokens. C'est le plafond que nous recommandons — tout ce qui est plus long commence à empiéter sur l'entrée réelle de l'utilisateur sur les modèles avec des fenêtres de contexte de 8k ou 16k. Pour les modèles avec un contexte de 200k, vous pouvez en toute sécurité développer les exemples détaillés pour couvrir davantage de cas limites. ## Intégration avec l'API 2Slides V1 Le prompt système nomme les endpoints ; le code appelant les invoque. Voici ce que fait chaque endpoint et quand votre agent doit l'utiliser. - **`POST /api/v1/slides/generate`** — Le moteur principal. Accepte un prompt texte plus des indices structurés optionnels (nombre de diapositives, langue, ID de thème) et retourne un ID de tâche. Quatre-vingt-dix pour cent du trafic des agents utilise cet endpoint. - **`POST /api/v1/slides/create-pdf-slides`** — Accepte une URL PDF et la convertit en présentation. À utiliser quand l'utilisateur télécharge un document. Gère l'extraction, le découpage et la synthèse côté serveur, évitant ainsi à votre agent d'avoir besoin d'un analyseur PDF. - **`POST /api/v1/slides/create-like-this`** — Accepte une URL ou un ID de présentation de référence et un nouveau sujet. Réutilise le thème visuel et le rythme structurel de la référence. À utiliser pour les workflows du type « faire ressembler à notre dernier deck de conseil d'administration ». - **`POST /api/v1/slides/generate-narration`** — Ajoute une voix off TTS à une présentation existante. Retourne les URL audio par diapositive. À chaîner après `generate` lorsque la sortie finale est une vidéo. - **`GET /api/v1/slides/download-slides-pages-voices`** — Endpoint batch qui retourne les images de pages rendues et l'audio de narration en une seule réponse. À utiliser dans l'étape finale d'un pipeline d'export vidéo. - **`GET /api/v1/jobs/:id`** — Endpoint de polling. Votre agent ne l'appelle pas ; c'est votre code appelant qui le fait. Retourne `pending`, `processing`, `success` ou `failed` plus l'URL finale de la présentation une fois terminée. - **`GET /api/v1/themes/search?q=...`** — Recherche par mots-clés dans la bibliothèque de thèmes publics. Passez le champ `theme_hint` de la sortie de votre prompt système ici pour le résoudre en un ID de thème concret avant d'appeler `generate`. Une boucle d'agent complète ressemble à ceci en pseudocode : ```ts const completion = await llm.messages.create({ system: SYSTEM_PROMPT, // le template à 7 sections ci-dessus messages: [{ role: "user", content: userInput }], }); const spec = JSON.parse(stripThinking(completion.content)); if (spec.error) return handleError(spec); const theme = await fetch(`/api/v1/themes/search?q=${spec.theme_hint}`); const job = await fetch(`/api/v1/slides/${spec.api_call.endpoint}`, { method: "POST", body: JSON.stringify({ ...spec, themeId: theme.id }), }); const result = await pollJob(job.id); // appelle /api/v1/jobs/:id return result.deckUrl;
Si vous découvrez la structure de l'API, le guide développeur pour créer un agent de présentation AI détaille le flux complet avec du TypeScript fonctionnel. Pour une architecture de plus haut niveau basée sur les compétences — où le prompt système n'est qu'une compétence parmi plusieurs — consultez l'aperçu des compétences d'agent de diapositives AI.
3 Anti-Patterns Qui Cassent Les Agents de Slides
Après avoir examiné des dizaines d'agents en production — des outils d'analyse internes aux copilotes de vente publics — les trois mêmes modes de défaillance apparaissent encore et encore.
Anti-Pattern 1 : Le Contrat de Sortie Sans Limites
Symptôme : L'agent renvoie parfois du JSON, parfois du markdown, parfois un paragraphe poli. Votre parseur lance
SyntaxError: Unexpected tokenCause : Le prompt système dit « renvoie un jeu de slides » sans spécifier la forme exacte, ou il spécifie une forme mais autorise de la prose autour.
Solution : Écrivez le schéma dans le prompt système. Dites explicitement : « Pas de prose avant ou après le JSON. Pas de barrières markdown autour du JSON. » Ensuite, passez chaque sortie dans un validateur (Zod, Pydantic, io-ts) et réessayez en cas d'échec. Traitez la conformité au schéma comme une exigence produit stricte, pas comme un bonus.
Anti-Pattern 2 : La Dérive de l'Inventaire d'Outils
Symptôme : L'agent dit avec assurance à l'utilisateur « Je vais appeler l'endpoint
refine-deckCause : Le prompt système mentionne les outils en prose plutôt que dans un inventaire structuré, donc le modèle hallucine des variations. Ou l'inventaire est obsolète après la mise en production de nouveaux endpoints.
Solution : Maintenez un seul inventaire canonique d'outils dans le prompt système, actualisé à chaque changement de l'API. Si votre API a 7 endpoints, listez exactement 7, chacun avec une ligne décrivant quand l'appeler. Interdisez au modèle de nommer quoi que ce soit d'autre — « Si aucun des endpoints ci-dessus ne s'applique, renvoyez
api_call: nullAnti-Pattern 3 : L'Hallucination de Statistiques
Symptôme : L'utilisateur dit « fais un deck sur nos chiffres du T3 » sans fournir de chiffres. L'agent écrit joyeusement « Le chiffre d'affaires a augmenté de 47,3 % pour atteindre 8,2 M$ ». Le directeur financier est furieux.
Cause : Aucune contrainte stricte n'interdit l'invention de données. Le modèle opte par défaut pour une fiction qui semble plausible, car c'est ce que font la plupart des LLMs quand les spécifications sont insuffisantes.
Solution : Ajoutez une règle explicite : « N'inventez pas de statistiques. Si l'utilisateur n'a pas fourni de chiffre, utilisez
[source nécessaire]Exemple Pratique 1 : Agent Pitch-Deck
L'agent pitch-deck convertit les notes du fondateur en une présentation investisseur de 10 diapositives. Ajoutez ces lignes au prompt système de base :
# Spécialisation : Mode Pitch-Deck Lors de la création d'un pitch deck, utilisez exactement cette structure : 1. Titre 2. Problème 3. Solution 4. Taille du marché (TAM/SAM/SOM) 5. Démo produit / capture d'écran 6. Métriques de traction 7. Modèle économique 8. Concurrence 9. Équipe 10. Demande (montant du financement + utilisation des fonds) Forcer slide_count = 10. Forcer tone = "conversational but confident." Si l'utilisateur n'a pas fourni de chiffre pour la taille du marché, la traction ou la demande, utilisez "[source needed]" — n'inventez pas.
Exemple d'entrée : "SaaS B2B pour cabinets dentaires, nous les aidons à automatiser les demandes d'assurance, nous avons 12 clients payants, nous levons 1,5 M$ en seed."
Exemple de sortie (abrégé) : JSON de dix diapositives avec la structure fixe,
api_call.endpoint = "generate"theme_hint = "pitch deck modern gradient"["12 cabinets dentaires payants", "[source needed] — MRR", "[source needed] — rétention"]Exemple pratique 2 : Agent Board-Deck
Les présentations pour conseil d'administration ont un contrat différent : ton formel, tableaux denses, zéro emoji, ordre de slides spécifique que les DAF attendent. Ajoutez :
# Spécialisation : Mode Board-Deck Utilisez exactement cette structure pour les réunions de conseil d'administration : 1. Résumé exécutif (3 points) 2. Finances (chiffre d'affaires, marge, runway) 3. Tableau de bord KPI (mise en page tableau) 4. Initiatives stratégiques (statut + risque) 5. Plan de recrutement 6. Risques et mesures d'atténuation 7. Demandes au conseil Forcer ton = "formel." Forcer la langue pour correspondre à la locale de l'utilisateur. Chaque chiffre doit avoir une source dans speaker_notes. Pas de slides image — les board decks sont texte et tableaux.
L'agent board-deck se marie bien avec
create-like-thisExemple Pratique 3 : Agent d'Ingestion PDF-vers-Présentation
Cet agent convertit les livres blancs clients, les PDF de recherche ou les appels d'offres en présentations résumées digestes. C'est le plus simple à construire car l'endpoint
create-pdf-slides# Spécialisation : Mode d'Ingestion PDF Déclencheur : l'utilisateur fournit une URL se terminant par .pdf OU dit explicitement "transforme ce PDF/livre blanc/rapport en slides." Toujours définir api_call.endpoint = "create-pdf-slides". Définir slide_count en fonction de la longueur du PDF : - < 5 pages -> 5 slides - 5-20 pages -> 8-12 slides - 20-50 pages -> 15-20 slides - > 50 pages -> 25-30 slides (plafonné à 30) Extraire le titre du PDF pour le titre de la présentation. Si l'utilisateur a spécifié une audience différente de l'audience originale du PDF, signaler cela dans les speaker_notes de la slide 1 pour que le moteur de rendu sache adapter le ton.
Pour les agents qui fonctionnent dans Claude Desktop ou un hôte MCP similaire, le flux d'ingestion PDF peut être configuré en moins d'une heure — consultez comment utiliser Claude MCP pour générer des présentations pour la procédure complète.
Foire Aux Questions
Dois-je placer le prompt système dans le code ou dans une base de données ?
Pour les agents en production, placez-le dans le contrôle de version (comme fichier
.mdQuelle longueur doit avoir un prompt système ?
Pour les agents de génération de diapositives, 1 500 à 2 500 tokens représente le point optimal. Des prompts plus courts manquent de contraintes et échouent sur les cas limites. Des prompts plus longs encombrent l'entrée réelle de l'utilisateur sur les modèles à contexte plus petit et se répètent souvent. Si vous dépassez 3 000 tokens, vérifiez les redondances — la même règle est probablement énoncée deux fois.
Ai-je besoin de prompts système différents pour Claude vs GPT-4o vs DeepSeek ?
Seulement des ajustements mineurs. Le modèle à 7 sections fonctionne sur les trois. Claude réagit bien à la structure en balises XML (
<thinking><output>Puis-je mettre à jour le prompt système sans redéployer ?
Oui — et vous devriez pouvoir le faire, pour itérer rapidement. Stockez le prompt dans une variable d'environnement ou un service de feature flags afin que l'équipe SRE puisse annuler un mauvais prompt en quelques secondes. Traitez un mauvais prompt comme un mauvais déploiement : c'est un incident de production et il nécessite les mêmes contrôles de rayon d'impact.
Comment tester un prompt système ?
Construisez un ensemble de régression de 50 à 200 paires entrée/sortie qui couvrent votre distribution réelle d'utilisateurs : présentations sur le chemin nominal, entrées adversariales, tentatives de JSON mal formé, demandes hors sujet. Exécutez l'ensemble complet à chaque modification de prompt et évaluez la conformité au schéma plus la qualité notée par des humains. C'est l'investissement technique au plus fort levier pour la fiabilité des agents.
À retenir
Un system prompt est une infrastructure, pas du texte promotionnel. C'est ce qui transforme un LLM générique en un agent de génération de slides fiable avec un contrat de sortie connu, un inventaire d'outils fixe et des modes de défaillance prévisibles. Les développeurs qui traitent le system prompt comme un artefact produit — versionné, testé, surveillé — livrent des agents qui survivent au contact avec de vrais utilisateurs. Les développeurs qui le traitent comme un exercice ponctuel de prompt engineering livrent des démos.
Le template en 7 sections et l'exemple prêt pour la production dans ce guide sont le point de départ, pas le point d'arrivée. Forkez-les, spécialisez-les pour votre cas d'usage, intégrez-les à l'API V1 de 2Slides, et — plus important encore — construisez le harnais de régression avant de livrer. Les agents qui gagneront en 2026 sont ceux dont les prompts sont conçus avec la même rigueur que leur code.
Déployez votre agent de slides en production — obtenez une clé API 2Slides ou explorez le serveur MCP.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free