Permettez aux modèles de générer des citations fiables.
Des citations fiables inspirent confiance et permettent aux lecteurs de vérifier l’exactitude des réponses. Ce guide explique comment préparer les contenus à citer et donner au modèle des instructions de mise en forme adaptées aux formats que les modèles d’OpenAI connaissent déjà.
Vue d’ensemble
La mise en place d’un système de citation comporte plusieurs étapes. Vous déterminez ce qui peut être cité, présentez clairement les contenus correspondants, indiquez au modèle comment les citer et validez le résultat avant de l’afficher à l’utilisateur.
Ce guide couvre cinq éléments qui concernent directement le modèle :
Unités citables : définissez ce que le modèle est autorisé à citer.
Présentation des sources : fournissez le contenu des sources dans un format clair et structuré.
Format des citations : précisez le format exact que le modèle doit utiliser.
Instructions du prompt : indiquez au modèle quand citer ses sources et comment le faire correctement.
Analyse des citations : extrayez les citations de la réponse du modèle pour les exploiter ensuite.
Choisissez les unités citables
Avant de rédiger vos prompts, définissez précisément ce que le modèle peut citer. Voici les options les plus courantes :
Unité citable
Quand l’utiliser
Inconvénient
Exemple
Document
Il suffit d’indiquer de quel document provient la réponse.
Peu précis.
Citez le manuel du personnel dans son ensemble s’il suffit d’indiquer quel document étaye l’affirmation.
Bloc / segment
Vous recherchez un bon équilibre entre simplicité et précision.
Ne permet pas de repérer le texte à la ligne près.
Citez le paragraphe du contrat ou le segment récupéré qui contient la clause.
Plage de lignes
Vous devez indiquer le passage exact qui étaye la réponse.
Plus difficile pour le modèle.
Citez les lignes L42-L47 lorsque l’utilisateur doit vérifier le passage précis.
Une bonne unité citable répond à trois critères :
Stabilité : une même source doit conserver le même identifiant d’une exécution à l’autre.
Lisibilité : une personne doit pouvoir lire l’unité et en comprendre le contexte.
Taille adaptée : l’unité doit être assez longue pour être compréhensible, mais assez courte pour que la citation reste précise.
Pour la plupart des systèmes, citer des blocs est le meilleur choix par défaut. Il est généralement plus facile pour le modèle de citer un bloc que des lignes précises, et plus utile pour l’utilisateur de retrouver un bloc qu’un document entier.
Présentez les contenus à citer
Le modèle ne peut pas citer un contenu qui ne lui a pas été présenté clairement. Que ce contenu provienne d’un outil ou soit injecté directement, veillez à fournir les éléments suivants :
Identifiant de source stable : utilisez un identifiant qui reste le même, comme file1 ou block1.
Texte lisible : mettez en forme le contenu de la source pour en faciliter la lecture.
Métadonnées (facultatives) : URL, horodatages, titres et autres éléments de contexte.
Citation Marker: {CITATION_START}cite{CITATION_DELIMITER}file0{CITATION_STOP}Title: Employee HandbookURL: https://company.example/handbookUpdated: 2026-03-01[L1] Employees may work remotely up to three days per week.[L2] Additional remote days require manager approval.[L3] Exceptions may apply for approved accommodations.
Identifiants de source et repères de position : un identifiant de source est un identifiant stable généré par le modèle, comme block1. Un repère de position indique le passage précis que l’interface met en évidence, par exemple lines L8-L13 ou
Paragraph 21. En règle générale, le modèle doit produire l’identifiant de source, tandis que votre système détermine ou affiche le passage correspondant au repère. Combiner les deux trop tôt tend à multiplier les erreurs de format.
Définissez le format des citations
Définissez le format des citations que le modèle doit générer. Choisissez un format explicite et cohérent que le modèle peut reproduire de manière fiable.
Le tableau ci-dessous présente le format de citation et les marqueurs que nous recommandons. Nous vous conseillons vivement d’utiliser ces marqueurs, car ils sont très proches de ceux utilisés lors de l’entraînement de nos modèles. Si vous choisissez d’autres valeurs pour les marqueurs, conservez un format de citation aussi proche que possible de celui proposé.
Élément
Rôle
Valeur recommandée
CITATION_START
Ouvre le marqueur de citation.
\ue200
Famille de citations
Indique le type de citation. Utilisez cite pour toutes les sources prises en charge.
cite
CITATION_DELIMITER
Sépare les champs à l’intérieur du marqueur.
\ue202
Identifiant de source
Identifie l’unité citée. turn# indique le numéro du tour. item# identifie le fichier, le bloc ou l’URL en question.
turn0file1, turn0block1, turn0url1
Repère de position (facultatif)
Délimite le passage précis auquel renvoie la citation.
L8-L13
CITATION_STOP
Ferme le marqueur de citation.
\ue201
Le compteur turnN augmente d’une unité à chaque appel d’outil, quel que soit le nombre de résultats renvoyés. Pour un même appel, les sources se distinguent par des suffixes tels que file0, file1, etc. Dans un système qui produit une seule réponse, toutes les références auront la forme
turn0… uniquement si le modèle effectue exactement un appel d’outil avant de répondre. S’il effectue plusieurs appels, vous pourrez obtenir des références telles que turn0fileX, turn1fileX, etc.
Pour obtenir la meilleure précision possible, utilisez des formats de citation familiers au modèle. Les formats personnalisés ou peu familiers demandent davantage d’effort au modèle et entraînent des erreurs de citation, en particulier dans les cas suivants :
Lorsque l’effort de raisonnement est faible, le modèle dispose d’un budget de raisonnement plus limité pour corriger ses erreurs de format.
Lorsque la tâche est très complexe, le modèle consacre l’essentiel de son budget de raisonnement à la résolution de la tâche elle-même et dispose de peu de ressources pour corriger la syntaxe des citations.
Nous recommandons ci-dessous un format de citation proche de ceux que le modèle connaît déjà. Vous pouvez l’utiliser tel quel ou l’adapter à votre système.
Si vous rédigez votre propre prompt, précisez :
la syntaxe exacte des marqueurs ;
où placer les citations ;
quand citer une source et quand s’en abstenir ;
comment citer plusieurs sources à l’appui d’une même affirmation ;
quels formats sont interdits ;
quoi faire lorsqu’aucune source n’étaye une affirmation.
Donnez au modèle des instructions explicites en suivant ce format :
## CitationsL’outil « tool_1 » renvoie les résultats. Chaque message de `tool_1` constitue une « source ». Pour trouver son identifiant de référence, repérez la première occurrence du motif 【turn\d+\w+\d+】 dans le message (par exemple 【turn2file1】). Dans cet exemple, la chaîne « turn2file1 » est l’identifiant de référence de la source.Les citations renvoient aux sources fournies par `tool_1`. Une citation peut renvoyer à une ou plusieurs sources.Pour citer une seule source, utilisez le format {CITATION_START}cite{CITATION_DELIMITER}turn\d+\w+\d+{CITATION_STOP} (par exemple {CITATION_START}cite{CITATION_DELIMITER}turn2file5{CITATION_STOP}).Pour citer plusieurs sources, utilisez le format {CITATION_START}cite{CITATION_DELIMITER}turn\d+\w+\d+{CITATION_DELIMITER}turn\d+\w+\d+{CITATION_DELIMITER}...{CITATION_STOP} (par exemple {CITATION_START}cite{CITATION_DELIMITER}turn2file5{CITATION_DELIMITER}turn2file1{CITATION_DELIMITER}...{CITATION_STOP}).Placez les citations en dehors des passages en gras ou en italique et des blocs de code Markdown pour qu’elles s’affichent correctement. Ne placez aucune citation sur la même ligne que le délimiteur de fermeture d’un bloc de code.N’écrivez JAMAIS un identifiant de référence de la forme turn\d+\w+\d+ tel quel dans le texte de la réponse sans l’encadrer par {CITATION_START}...{CITATION_STOP}.- Placez les citations à la fin du paragraphe ou, si le paragraphe est long, dans le corps du texte, sauf si l’utilisateur demande un emplacement précis.- Placez les citations après la ponctuation.- Ne regroupez pas toutes les citations à la fin de la réponse.- Ne placez pas les citations sur une ligne ou dans un paragraphe qui ne contient rien d’autre.
Si vous souhaitez que le modèle fournisse également des repères de position, par exemple une plage de lignes (L1-L22), précisez-le dans le prompt comme suit :
Vous *devez* citer chaque résultat de cet outil que vous utilisez, mais UNIQUEMENT si ce résultat possède un marqueur de citation correspondant. Utilisez le format suivant :`\ue200cite\ue202turn0file0\ue202L8-L13\ue201`.
Ne tentez pas de citer des éléments dépourvus de marqueur de citation : ils ne sont pas destinés à être cités.
Vous DEVEZ inclure les plages de lignes dans vos citations.
Lorsque vous avez besoin d’un ancrage plus rigoureux dans les sources, il est souvent utile d’inclure les règles suivantes. Adaptez cette section aux exigences de votre cas d’usage.
12345678910111213<extra_considerations_for_citations>- **Pertinence :** incluez uniquement les résultats de recherche et les citations qui étayent le passage concerné de la réponse. Les sources sans rapport avec ce passage nuisent durablement à la confiance des utilisateurs.- **Diversité :** appuyez votre réponse sur des sources provenant de domaines variés et citez-les à l’appui des passages correspondants.- **Fiabilité :** pour produire une réponse crédible, appuyez-vous sur des domaines de qualité. Écartez les informations provenant de domaines moins réputés, sauf si ces domaines sont votre seule source d’information.- **Fidélité aux sources :** chaque citation doit refléter fidèlement le contenu de la source. Toute interprétation sélective de ce contenu est interdite.Gardez à l’esprit que la qualité d’un domaine ou d’une source dépend du contexte.- Lorsqu’il existe plusieurs points de vue, citez des sources qui couvrent l’éventail des opinions pour en rendre compte de manière équilibrée et complète.- Lorsque des sources fiables divergent, citez au moins une source de qualité pour chaque point de vue majeur.- Veillez à ce que plus de la moitié des citations renvoient à des publications largement reconnues comme faisant autorité sur le sujet.- Pour les sujets controversés, citez au moins une source fiable représentant chaque point de vue majeur.- N’écartez pas le contenu d’une source pertinente au seul motif qu’elle est de faible qualité.</extra_considerations_for_citations>
Analysez les citations
Une fois les citations générées par le modèle, extrayez-les du texte de la réponse. Vous pourrez ainsi retrouver les sources à partir de leurs identifiants, afficher des liens ou supprimer les marqueurs bruts avant de présenter la réponse aux utilisateurs.
Vous pouvez copier les fonctions ci-dessous directement dans votre application. Elles analysent les citations qui renvoient à une ou plusieurs sources ainsi que les éventuels repères de position exprimés en plages de lignes, tout en conservant la position des caractères dans le texte d’origine.
Cet exemple ne prend en charge que les repères de position exprimés en lignes. Adaptez-le si votre système utilise un autre format de repère.
Si vos identifiants de source suivent un autre format, adaptez SOURCE_ID_RE à votre système.
Exemples
Les exemples ci-dessous illustrent deux façons courantes de citer des sources :
Contexte récupéré par un outil : votre outil renvoie les contenus à citer et leurs identifiants.
Contexte injecté : vous fournissez les blocs à citer directement dans le prompt.
Formatez les citations d’un contexte récupéré par un outil
Utilisez cette méthode lorsque le modèle récupère du contexte à l’aide d’un outil et le cite dans sa réponse.
Définissez les unités citables
Choisissez les unités citables en fonction du degré de précision qu’exige votre cas d’usage. Les exemples ci-dessous illustrent quelques résultats possibles d’un appel d’outil.
Ces exemples présentent plusieurs formats de sortie recommandés. L’outil peut varier d’une application à l’autre. L’essentiel est qu’il renvoie les résultats dans une structure claire et stable, comme dans ces exemples.
Voici un exemple de résultat d’un appel d’outil :
Citation Marker: {CITATION_START}cite{CITATION_DELIMITER}turn0file0{CITATION_STOP}[L1] The service agreement states that termination for convenience requires thirty (30) days’ written notice, unless superseded by a customer-specific addendum.[L2] In practice, renewal terms auto-extend for successive one-year periods when no written non-renewal notice is received before the deadline.[L3] Appendix B further clarifies that pricing exceptions must be approved in writing by both Finance and the account owner.Citation Marker: {CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_STOP}...
Ici, turn0file0 est l’identifiant stable de la source. Les numéros de ligne servent de repères de position.
Voici un exemple de résultat d’un appel d’outil :
Citation Marker: {CITATION_START}cite{CITATION_DELIMITER}turn0file0{CITATION_STOP}[Block1]The service agreement states that termination for convenience requires thirty (30) days’ written notice, unless superseded by a customer-specific addendum.In practice, renewal terms auto-extend for successive one-year periods when no written non-renewal notice is received before the deadline.Appendix B further clarifies that pricing exceptions must be approved in writing by both Finance and the account owner.Citation Marker: {CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_STOP}[Block2]...
Si vous souhaitez citer des blocs plutôt que des lignes, nous vous recommandons d’attribuer à chaque bloc récupéré son propre identifiant de source stable. Citez ensuite ce bloc avec le même marqueur à deux champs, par exemple {CITATION_START}cite{CITATION_DELIMITER}turn0file0{CITATION_STOP}, sans créer de nouvelle famille de citations.
Rédigez les instructions du prompt
## CitationsL’outil « tool_1 » renvoie les résultats. Chaque message de `tool_1` constitue une « source ». Son identifiant de référence est la première chaîne du message qui correspond au motif `turn\\d+file\\d+` (par exemple `turn0file0` ou `turn2file1`). Dans cet exemple, la chaîne `turn0file0` est l’identifiant de référence de la source.Les citations renvoient aux sources fournies par `tool_1`. Une citation peut renvoyer à une ou plusieurs sources.Pour citer une seule source, utilisez le format suivant :{CITATION_START}cite{CITATION_DELIMITER}turn\d+file\d+{CITATION_STOP}Si le système prend en charge les citations par lignes, utilisez le format suivant pour citer une plage de lignes précise :{CITATION_START}cite{CITATION_DELIMITER}turn\d+file\d+{CITATION_DELIMITER}L\d+-L\d+{CITATION_STOP}Pour citer plusieurs sources, produisez un marqueur de citation distinct pour chaque source qui étaye le passage.N’écrivez JAMAIS d’identifiants de référence comme `turn0file0` tels quels dans le texte de la réponse sans les encadrer par {CITATION_START}...{CITATION_STOP}.- Placez les citations à la fin de la phrase qu’elles étayent ou, si la phrase est longue et contient plusieurs propositions étayées, au fil du texte après les propositions concernées.- Placez les citations après la ponctuation.- Citez uniquement les sources récupérées qui étayent directement le passage concerné.- N’inventez jamais d’identifiants de source, de plages de lignes ou de repères de bloc que l’outil n’a pas renvoyés.- Si plusieurs sources récupérées contribuent de manière substantielle à étayer une affirmation, citez-les toutes.- Si les sources récupérées se contredisent, citez les sources concernées et décrivez précisément leur désaccord.
Exemple de sortie :
The on-call handoff process is documented in the weekly support sync notes. \ue200cite\ue202turn0file0\ue202L8-L13\ue201
Formatez les citations d’un contexte injecté
Utilisez cette méthode lorsque vous récupérez ou préparez le contexte à l’avance et l’injectez directement dans le prompt.
Définissez les unités citables
Pour le contexte injecté, une pratique courante consiste à encadrer chaque segment de la source par des balises explicites portant un identifiant de référence stable.
12345678910<BLOCK id="block1">The service agreement states that termination for convenience requires thirty (30) days’ written notice, unless superseded by a customer-specific addendum.In practice, renewal terms auto-extend for successive one-year periods when no written non-renewal notice is received before the deadline.Appendix B further clarifies that pricing exceptions must be approved in writing by both Finance and the account owner.</BLOCK><BLOCK id="block2">Syllabus</BLOCK>...
Le modèle peut ainsi repérer clairement chaque unité citable et y faire référence facilement.
Rédigez les instructions du prompt
## CitationsLe prompt fournit directement le contexte à l’appui de la réponse sous forme d’unités citables. Pour identifier chaque unité, lisez la valeur de son attribut `id` dans la première occurrence d’une balise telle que `<BLOCK id="block5"> ... </BLOCK>`. Dans cet exemple, `block5` est l’identifiant de référence de la source.Cette méthode ne fait appel à aucun outil. Il n’y a donc aucun compteur d’appels d’outil à incrémenter, et le préfixe `turn#` est facultatif dans le marqueur de citation. Vous pouvez conserver des identifiants de la forme `turn0block5` si le reste de votre système utilise ce format, ou employer un identifiant simple comme `block5` dans cet exemple. Dans chaque marqueur de citation, reproduisez exactement l’identifiant fourni dans le contexte injecté.Les citations renvoient aux unités citables fournies. Une citation peut renvoyer à une ou plusieurs sources.Pour citer une seule source, utilisez le format suivant :{CITATION_START}cite{CITATION_DELIMITER}<block_id>{CITATION_STOP}Par exemple :{CITATION_START}cite{CITATION_DELIMITER}block5{CITATION_STOP}Pour citer plusieurs sources, produisez un marqueur de citation distinct pour chaque bloc qui étaye le passage.N’écrivez JAMAIS les identifiants de bloc tels quels dans le texte de la réponse sans les encadrer par {CITATION_START}...{CITATION_STOP}.- Placez les citations à la fin de la phrase qu’elles étayent ou, si la phrase est longue et contient plusieurs propositions étayées, au fil du texte après les propositions concernées.- Placez les citations après la ponctuation.- Citez uniquement les blocs qui figurent dans le contexte fourni.- N’inventez jamais de nouveaux identifiants de bloc.- Ne citez jamais de connaissances ni de sources de référence extérieures au contexte fourni.- Si plusieurs blocs contribuent de manière substantielle à étayer une affirmation, citez-les tous.- Si les blocs fournis se contredisent, citez les blocs concernés et décrivez précisément la contradiction.
Exemple de sortie :
The Court held that the District Court lacked personal jurisdiction over the petitioner. \ue200cite\ue202block5\ue201