Claude est capable de fournir des citations détaillées lors de la réponse à des questions sur des documents, vous aidant à suivre et vérifier les sources d'information dans les réponses.
Tous les modèles actifs prennent en charge les citations, à l'exception de Haiku 3.
Citations avec Claude Sonnet 3.7
Claude Sonnet 3.7 peut être moins susceptible de faire des citations par rapport aux autres modèles Claude sans instructions plus explicites de la part de l'utilisateur. Lors de l'utilisation de citations avec Claude Sonnet 3.7, nous recommandons d'inclure des instructions supplémentaires dans le tour user, comme "Utilisez des citations pour étayer votre réponse." par exemple.
Nous avons également observé que lorsque le modèle est invité à structurer sa réponse, il est peu probable qu'il utilise des citations à moins qu'on ne lui dise explicitement d'utiliser des citations dans ce format. Par exemple, si le modèle est invité à utiliser des balises <result> dans sa réponse, vous devriez ajouter quelque chose comme "Utilisez toujours des citations dans votre réponse, même dans les balises <result>."
Veuillez partager vos commentaires et suggestions sur la fonctionnalité de citations en utilisant ce formulaire.
Voici un exemple de comment utiliser les citations avec l'API Messages :
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "The grass is green. The sky is blue."
},
"title": "My Document",
"context": "This is a trustworthy document.",
"citations": {"enabled": true}
},
{
"type": "text",
"text": "What color is the grass and sky?"
}
]
}
]
}'Comparaison avec les approches basées sur les invites
En comparaison avec les solutions de citations basées sur les invites, la fonctionnalité de citations présente les avantages suivants :
cited_text ne compte pas dans vos jetons de sortie.cited_text, les citations sont garanties de contenir des pointeurs valides vers les documents fournis.Intégrez les citations avec Claude en suivant ces étapes :
Découpage automatique vs contenu personnalisé
Par défaut, les documents de texte brut et PDF sont automatiquement découpés en phrases. Si vous avez besoin de plus de contrôle sur la granularité des citations (par exemple, pour les puces ou les transcriptions), utilisez plutôt des documents de contenu personnalisé. Voir Types de documents pour plus de détails.
Par exemple, si vous voulez que Claude soit capable de citer des phrases spécifiques de vos chunks RAG, vous devriez mettre chaque chunk RAG dans un document de texte brut. Sinon, si vous ne voulez pas qu'un découpage supplémentaire soit effectué, ou si vous voulez personnaliser tout découpage supplémentaire, vous pouvez mettre les chunks RAG dans un ou des documents de contenu personnalisé.
source d'un document peut être cité.title et context sont des champs optionnels qui seront transmis au modèle mais ne seront pas utilisés pour le contenu cité.title est limité en longueur, vous pourriez donc trouver le champ context utile pour stocker toutes les métadonnées de document sous forme de texte ou de json stringifié.content fournie dans le document de contenu personnalisé.cited_text est fourni pour la commodité et ne compte pas dans les jetons de sortie.cited_text n'est également pas compté dans les jetons d'entrée.Les citations fonctionnent en conjonction avec d'autres fonctionnalités de l'API, notamment la mise en cache d'invites, le comptage de jetons et le traitement par lots.
Les citations et la mise en cache d'invites peuvent être utilisées ensemble efficacement.
Les blocs de citation générés dans les réponses ne peuvent pas être mis en cache directement, mais les documents sources qu'ils référencent peuvent être mis en cache. Pour optimiser les performances, appliquez cache_control à vos blocs de contenu de document de niveau supérieur.
Dans cet exemple :
cache_control sur le bloc de documentNous prenons en charge trois types de documents pour les citations. Les documents peuvent être fournis directement dans le message (base64, texte ou URL) ou téléchargés via l'API Files et référencés par file_id :
| Type | Idéal pour | Découpage | Format de citation |
|---|---|---|---|
| Texte brut | Documents texte simples, prose | Phrase | Indices de caractères (indexés à partir de 0) |
| Fichiers PDF avec contenu texte | Phrase | Numéros de page (indexés à partir de 1) | |
| Contenu personnalisé | Listes, transcriptions, formatage spécial, citations plus granulaires | Aucun découpage supplémentaire | Indices de blocs (indexés à partir de 0) |
Les fichiers .csv, .xlsx, .docx, .md et .txt ne sont pas pris en charge comme blocs de document. Convertissez-les en texte brut et incluez-les directement dans le contenu du message. Voir Travailler avec d'autres formats de fichiers.
Les documents de texte brut sont automatiquement découpés en phrases. Vous pouvez les fournir en ligne ou par référence avec leur file_id :
Les documents PDF peuvent être fournis sous forme de données encodées en base64 ou par file_id. Le texte PDF est extrait et découpé en phrases. Comme les citations d'images ne sont pas encore prises en charge, les PDFs qui sont des scans de documents et ne contiennent pas de texte extractible ne seront pas citables.
Les documents de contenu personnalisé vous donnent le contrôle sur la granularité des citations. Aucun découpage supplémentaire n'est effectué et les chunks sont fournis au modèle selon les blocs de contenu fournis.
{
"type": "document",
"source": {
"type": "content",
"content": [
{"type": "text", "text": "Premier chunk"},
{"type": "text", "text": "Deuxième chunk"}
]
},
"title": "Titre du document", # optionnel
"context": "Contexte sur le document qui ne sera pas cité", # optionnel
"citations": {"enabled": True}
}Lorsque les citations sont activées, les réponses incluent plusieurs blocs de texte avec des citations :
{
"content": [
{
"type": "text",
"text": "Selon le document, "
},
{
"type": "text",
"text": "l'herbe est verte",
"citations": [{
"type": "char_location",
"cited_text": "L'herbe est verte.",
"document_index": 0,
"document_title": "Document d'exemple",
"start_char_index": 0,
"end_char_index": 20
}]
},
{
"type": "text",
"text": " et "
},
{
"type": "text",
"text": "le ciel est bleu",
"citations": [{
"type": "char_location",
"cited_text": "Le ciel est bleu.",
"document_index": 0,
"document_title": "Document d'exemple",
"start_char_index": 20,
"end_char_index": 36
}]
},
{
"type": "text",
"text": ". Les informations de la page 5 indiquent que ",
},
{
"type": "text",
"text": "l'eau est essentielle",
"citations": [{
"type": "page_location",
"cited_text": "L'eau est essentielle à la vie.",
"document_index": 1,
"document_title": "Document PDF",
"start_page_number": 5,
"end_page_number": 6
}]
},
{
"type": "text",
"text": ". Le document personnalisé mentionne ",
},
{
"type": "text",
"text": "des découvertes importantes",
"citations": [{
"type": "content_block_location",
"cited_text": "Ce sont des découvertes importantes.",
"document_index": 2,
"document_title": "Document de contenu personnalisé",
"start_block_index": 0,
"end_block_index": 1
}]
}
]
}Pour les réponses en streaming, nous avons ajouté un type citations_delta qui contient une seule citation à ajouter à la liste citations sur le bloc de contenu text actuel.
Fournir le(s) document(s) et activer les citations
citations.enabled=true sur chacun de vos documents. Actuellement, les citations doivent être activées sur tous ou aucun des documents dans une requête.Les documents sont traités
Claude fournit une réponse citée
import anthropic
client = anthropic.Anthropic()
# Contenu de document long (par exemple, documentation technique)
long_document = "Ceci est un document très long avec des milliers de mots..." + " ... " * 1000 # Longueur minimale cachable
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": long_document
},
"citations": {"enabled": True},
"cache_control": {"type": "ephemeral"} # Mettre en cache le contenu du document
},
{
"type": "text",
"text": "Que dit ce document sur les fonctionnalités de l'API ?"
}
]
}
]
)