Quellenangaben
Verankere Claudes Antworten in deinen Quelldokumenten. Citations geben die exakten Passagen zurück, die jede Aussage stützen, sodass du Antworten überprüfen und Quellen für deine Nutzer sichtbar machen kannst.
Claude kann detaillierte Citations bereitstellen, wenn Fragen zu Dokumenten beantwortet werden, und hilft dir so, die Quellen hinter jeder Antwort nachzuverfolgen und zu überprüfen.
Alle aktiven Modelle unterstützen Citations.
Das folgende Beispiel zeigt, wie du Citations für ein reines Textdokument mit der Messages API aktivierst:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-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?"},
],
}
],
)
print(response)Wie Citations funktionieren
Integriere Citations mit Claude in diesen Schritten:
Dokument(e) bereitstellen und Citations aktivieren
- Füge Dokumente in einem der unterstützten Formate ein: PDFs, reiner Text oder benutzerdefinierte Inhalte.
- Setze
citations.enabled=truefür jedes deiner Dokumente. Derzeit müssen Citations für alle oder keines der Dokumente innerhalb einer Anfrage aktiviert werden. - Derzeit werden nur Text-Citations unterstützt. Bild-Citations sind noch nicht möglich.
Dokumente werden verarbeitet
- Dokumentinhalte werden „gechunkt“, um die minimale Granularität möglicher Citations zu definieren. Zum Beispiel ermöglicht das Chunking nach Sätzen Claude, einen einzelnen Satz zu zitieren oder mehrere aufeinanderfolgende Sätze zu verketten, um einen Absatz oder eine längere Passage zu zitieren.
- Für PDFs: Text wird wie in PDF-Unterstützung beschrieben extrahiert und der Inhalt wird in Sätze gechunkt. Das Zitieren von Bildern aus PDFs wird derzeit nicht unterstützt.
- Für reine Textdokumente: Der Inhalt wird in Sätze gechunkt, aus denen zitiert werden kann.
- Für benutzerdefinierte Inhaltsdokumente: Deine bereitgestellten Inhaltsblöcke werden unverändert verwendet und es wird kein weiteres Chunking durchgeführt.
- Dokumentinhalte werden „gechunkt“, um die minimale Granularität möglicher Citations zu definieren. Zum Beispiel ermöglicht das Chunking nach Sätzen Claude, einen einzelnen Satz zu zitieren oder mehrere aufeinanderfolgende Sätze zu verketten, um einen Absatz oder eine längere Passage zu zitieren.
Claude liefert eine zitierte Antwort
- Antworten können nun mehrere Textblöcke enthalten, wobei jeder Textblock eine Aussage enthalten kann, die Claude trifft, sowie eine Liste von Citations, die die Aussage stützen.
- Citations verweisen auf bestimmte Stellen in Quelldokumenten. Das Format dieser Citations hängt vom Typ des zitierten Dokuments ab.
- Für PDFs: Citations enthalten den Seitenzahlbereich (1-indiziert).
- Für reine Textdokumente: Citations enthalten den Zeichenindexbereich (0-indiziert).
- Für benutzerdefinierte Inhaltsdokumente: Citations enthalten den Inhaltsblock-Indexbereich (0-indiziert), der der ursprünglich bereitgestellten Inhaltsliste entspricht.
- Dokumentindizes werden bereitgestellt, um die Referenzquelle anzugeben, und sind 0-indiziert gemäß der Liste aller Dokumente in deiner ursprünglichen Anfrage.
Zitierbare versus nicht zitierbare Inhalte
- Text, der innerhalb des
source-Inhalts eines Dokuments gefunden wird, kann zitiert werden. titleundcontextsind optionale Felder, die an das Modell übergeben, aber nicht für zitierte Inhalte verwendet werden.titleist in der Länge begrenzt, daher ist dascontext-Feld nützlich, um Dokumentmetadaten als Text oder als JSON-String zu speichern.
Citation-Indizes
- Dokumentindizes sind 0-indiziert aus der Liste aller Dokumentinhaltsblöcke in der Anfrage (über alle Nachrichten hinweg).
- Zeichenindizes sind 0-indiziert mit exklusiven Endindizes.
- Seitenzahlen sind 1-indiziert mit exklusiven Endseitenzahlen.
- Inhaltsblock-Indizes sind 0-indiziert mit exklusiven Endindizes aus der im benutzerdefinierten Inhaltsdokument bereitgestellten
content-Liste.
Token-Kosten
- Das Aktivieren von Citations führt zu einem leichten Anstieg der Input-Tokens aufgrund von Ergänzungen des System-Prompts und des Dokument-Chunkings.
- Die Citations-Funktion ist jedoch sehr effizient bei den Output-Tokens. Intern gibt das Modell Citations in einem standardisierten Format aus, die dann in zitierten Text und Dokumentstandort-Indizes geparst werden. Das
cited_text-Feld wird zur Bequemlichkeit bereitgestellt und zählt nicht zu den Output-Tokens. - Wenn
cited_textin nachfolgenden Gesprächsrunden zurückgegeben wird, zählt es ebenfalls nicht zu den Input-Tokens.
Funktionskompatibilität
Citations funktionieren in Verbindung mit anderen API-Funktionen, einschließlich Prompt-Caching, Token-Zählung und Batch-Verarbeitung.
Prompt-Caching mit Citations verwenden
Citations und Prompt-Caching können effektiv zusammen verwendet werden.
Die in Antworten generierten Citation-Blöcke können nicht direkt gecacht werden, aber die Quelldokumente, auf die sie verweisen, können gecacht werden. Um die Leistung zu optimieren, wende cache_control auf deine obersten Dokumentinhaltsblöcke an.
client = anthropic.Anthropic()
# Langer Dokumentinhalt (zum Beispiel technische Dokumentation)
long_document = (
"This is a very long document with thousands of words..." + " ... " * 1000
) # Minimum cacheable length
response = client.messages.create(
model="claude-opus-5-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"
}, # Cache the document content
},
{
"type": "text",
"text": "What does this document say about API features?",
},
],
}
],
)
print(response)In diesem Beispiel:
- Der Dokumentinhalt wird mit
cache_controlauf dem Dokumentblock gecacht. - Citations sind für das Dokument aktiviert.
- Claude kann Antworten mit Citations generieren und gleichzeitig vom gecachten Dokumentinhalt profitieren.
- Nachfolgende Anfragen, die dasselbe Dokument verwenden, profitieren vom gecachten Inhalt.
Dokumenttypen
Auswahl eines Dokumenttyps
Für Citations werden drei Dokumenttypen unterstützt. Dokumente können direkt in der Nachricht bereitgestellt werden (base64, Text oder URL) oder über die Files API hochgeladen und per file_id referenziert werden:
| Typ | Am besten geeignet für | Chunking | Citation-Format |
|---|---|---|---|
| Reiner Text | Einfache Textdokumente, Prosa | Satz | Zeichenindizes (0-indiziert) |
| PDF-Dateien mit Textinhalt | Satz | Seitenzahlen (1-indiziert) | |
| Benutzerdefinierter Inhalt | Listen, Transkripte, spezielle Formatierung, granularere Citations | Kein zusätzliches Chunking | Blockindizes (0-indiziert) |
Reine Textdokumente
Reine Textdokumente werden automatisch in Sätze gechunkt. Du kannst sie inline oder per Referenz mit ihrer file_id bereitstellen:
Das Einführungsbeispiel oben auf dieser Seite zeigt eine vollständige Anfrage mit reinem Text in jedem SDK. Der Dokumentblock verwendet eine text-Quelle:
{
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "Plain text content..."
},
"title": "Document Title",
"context": "Context about the document that will not be cited from",
"citations": { "enabled": true }
}{
"type": "char_location",
"cited_text": "The exact text being cited", // not counted toward output tokens
"document_index": 0,
"document_title": "Document Title",
"start_char_index": 0, // 0-indexed
"end_char_index": 50 // exclusive
}PDF-Dokumente
PDF-Dokumente können als base64-kodierte Daten, als URL oder per file_id bereitgestellt werden. PDF-Text wird extrahiert und in Sätze gechunkt. Da Bild-Citations noch nicht unterstützt werden, sind PDFs, die Scans von Dokumenten sind und keinen extrahierbaren Text enthalten, nicht zitierbar.
client = anthropic.Anthropic()
pdf_base64 = base64.standard_b64encode(
pathlib.Path("/path/to/document.pdf").read_bytes()
).decode()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": pdf_base64,
},
"title": "Document Title",
"context": "Context about the document that will not be cited from",
"citations": {"enabled": True},
},
{"type": "text", "text": "Summarize this document."},
],
}
],
)
print(response){
"type": "page_location",
"cited_text": "The exact text being cited", // not counted toward output tokens
"document_index": 0,
"document_title": "Document Title",
"start_page_number": 1, // 1-indexed
"end_page_number": 2 // exclusive
}Benutzerdefinierte Inhaltsdokumente
Benutzerdefinierte Inhaltsdokumente geben dir Kontrolle über die Granularität der Citations. Es wird kein zusätzliches Chunking durchgeführt und Chunks werden dem Modell gemäß den bereitgestellten Inhaltsblöcken übergeben.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "content",
"content": [
{"type": "text", "text": "First chunk"},
{"type": "text", "text": "Second chunk"},
],
},
"title": "Document Title",
"context": "Context about the document that will not be cited from",
"citations": {"enabled": True},
},
{"type": "text", "text": "Summarize this document."},
],
}
],
)
print(response){
"type": "content_block_location",
"cited_text": "The exact text being cited", // not counted toward output tokens
"document_index": 0,
"document_title": "Document Title",
"start_block_index": 0, // 0-indexed
"end_block_index": 1 // exclusive
}Antwortstruktur
Wenn Citations aktiviert sind, enthalten Antworten mehrere Textblöcke mit Citations:
{
"content": [
{ "type": "text", "text": "According to the document, " },
{
"type": "text",
"text": "the grass is green",
"citations": [
{
"type": "char_location",
"cited_text": "The grass is green.",
"document_index": 0,
"document_title": "Example Document",
"start_char_index": 0,
"end_char_index": 20
}
]
},
{ "type": "text", "text": " and " },
{
"type": "text",
"text": "the sky is blue",
"citations": [
{
"type": "char_location",
"cited_text": "The sky is blue.",
"document_index": 0,
"document_title": "Example Document",
"start_char_index": 20,
"end_char_index": 36
}
]
},
{
"type": "text",
"text": ". Information from page 5 states that "
},
{
"type": "text",
"text": "water is essential",
"citations": [
{
"type": "page_location",
"cited_text": "Water is essential for life.",
"document_index": 1,
"document_title": "PDF Document",
"start_page_number": 5,
"end_page_number": 6
}
]
},
{
"type": "text",
"text": ". The custom document mentions "
},
{
"type": "text",
"text": "important findings",
"citations": [
{
"type": "content_block_location",
"cited_text": "These are important findings.",
"document_index": 2,
"document_title": "Custom Content Document",
"start_block_index": 0,
"end_block_index": 1
}
]
}
]
}Streaming-Unterstützung
Bei Streaming-Antworten kommen Citations als citations_delta-Delta-Typ innerhalb von content_block_delta-Events an. Jedes Delta enthält eine einzelne Citation, die zur citations-Liste des aktuellen text-Inhaltsblocks hinzugefügt wird.
event: message_start
data: {"type": "message_start", ...}
event: content_block_start
data: {"type": "content_block_start", "index": 0, ...}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0,
"delta": {"type": "text_delta", "text": "According to..."}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0,
"delta": {"type": "citations_delta",
"citation": {
"type": "char_location",
"cited_text": "...",
"document_index": 0,
...
}}}
event: content_block_stop
data: {"type": "content_block_stop", "index": 0}
event: message_stop
data: {"type": "message_stop"}Nächste Schritte
Verarbeite den citations_delta-Delta-Typ zusammen mit Text-Deltas, um zitierte Antworten während des Streamings zu rendern.
Übergib Suchergebnisse aus deiner RAG-Pipeline als erstklassige Inhaltsblöcke mit integrierter Citation-Unterstützung.
Erfahre, wie Claude Text aus PDFs extrahiert und wie seitenbasierte Citations auf deine Quelldateien zurückverweisen.
Lade Dokumente einmal hoch und referenziere sie per file_id über mehrere Citation-Anfragen hinweg.
Compatibility
- Supported platforms
- Claude API
- Claude Platform on AWS
- Amazon Bedrock
- Google Cloud
- Microsoft Foundry
Was this page helpful?