For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale
Theme

Format des citations

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 :

  1. Unités citables : définissez ce que le modèle est autorisé à citer.
  2. Présentation des sources : fournissez le contenu des sources dans un format clair et structuré.
  3. Format des citations : précisez le format exact que le modèle doit utiliser.
  4. Instructions du prompt : indiquez au modèle quand citer ses sources et comment le faire correctement.
  5. 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.

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.

Gabarit

{CITATION_START}<citation_family>{CITATION_DELIMITER}<source_id>{CITATION_DELIMITER}<locator>{CITATION_STOP}

Exemple

{CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_DELIMITER}L8-L13{CITATION_STOP}

Si votre système n’utilise pas de repères de position, omettez ce champ :

{CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_STOP}

Rédigez des instructions de citation efficaces

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.

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.

Rédigez les instructions du prompt

## Citations

L’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.

<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

## Citations

Le 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

Remarque : les outils hébergés par OpenAI, comme la recherche web, insèrent automatiquement les citations dans le texte. Si vous préférez utiliser ces outils, consultez la présentation des outils, le guide de la recherche web et le guide de la recherche de fichiers.