Diese Funktion ist für Zero Data Retention (ZDR) qualifiziert. Wenn deine Organisation eine ZDR-Vereinbarung hat, werden Daten, die über diese Funktion gesendet werden, nicht gespeichert, nachdem die API-Antwort zurückgegeben wurde.
Claude kann detaillierte Zitate liefern, 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 Zitate, mit Ausnahme von Claude Haiku 3.
Teile dein Feedback und deine Vorschläge zur Zitate-Funktion über das Feedback-Formular für Zitate.
Das folgende Beispiel zeigt, wie du Zitate für ein Klartext-Dokument mit der Messages API aktivierst:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
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)Vergleich mit Prompt-basierten Ansätzen
Im Vergleich dazu, Claude per Prompt zum Zitieren von Quellen aufzufordern, bietet die Zitate-Funktion folgende Vorteile:
cited_text nicht zu deinen Output-Token zählt.cited_text direkt extrahiert, enthalten Zitate garantiert gültige Verweise auf die bereitgestellten Dokumente.Integriere Zitate mit Claude in diesen Schritten:
Dokument(e) bereitstellen und Zitate aktivieren
citations.enabled=true für jedes deiner Dokumente. Derzeit müssen Zitate entweder für alle oder für keines der Dokumente innerhalb einer Anfrage aktiviert sein.Dokumente werden verarbeitet
Claude liefert eine Antwort mit Zitaten
Automatisches Chunking vs. benutzerdefinierter Inhalt
Standardmäßig werden Klartext- und PDF-Dokumente automatisch in Sätze aufgeteilt. Wenn du mehr Kontrolle über die Zitat-Granularität benötigst (zum Beispiel für Aufzählungspunkte oder Transkripte), verwende stattdessen Dokumente mit benutzerdefiniertem Inhalt. Siehe Dokumenttypen für weitere Details.
Wenn du beispielsweise möchtest, dass Claude bestimmte Sätze aus deinen RAG-Chunks zitieren kann, solltest du jeden RAG-Chunk in ein Klartext-Dokument packen. Wenn du hingegen kein weiteres Chunking wünschst oder zusätzliches Chunking anpassen möchtest, kannst du RAG-Chunks in Dokumente mit benutzerdefiniertem Inhalt packen.
source-Inhalt eines Dokuments befindet, kann zitiert werden.title und context sind optionale Felder, die an das Modell übergeben werden, aber nicht für zitierte Inhalte verwendet werden.title ist in der Länge begrenzt, daher ist das context-Feld nützlich, um Dokument-Metadaten als Text oder als String serialisiertes JSON zu speichern.content-Liste, die im Dokument mit benutzerdefiniertem Inhalt bereitgestellt wurde.cited_text wird der Einfachheit halber bereitgestellt und zählt nicht zu den Output-Token.cited_text in nachfolgenden Gesprächsrunden zurückgegeben wird, zählt es ebenfalls nicht zu den Input-Token.Zitate funktionieren in Verbindung mit anderen API-Features, einschließlich Prompt-Caching, Token-Zählung und Batch-Verarbeitung.
Zitate und strukturierte Ausgaben sind nicht kompatibel
Zitate können nicht zusammen mit strukturierten Ausgaben verwendet werden. Wenn du Zitate für ein vom Nutzer bereitgestelltes Dokument aktivierst (document-Blöcke oder search_result-Blöcke) und gleichzeitig den Parameter output_config.format (oder den veralteten Parameter output_format) angibst, gibt die API einen 400-Fehler zurück.
Das liegt daran, dass Zitate das Verschachteln von Zitat-Blöcken mit Textausgabe erfordern, was mit den strikten JSON-Schema-Einschränkungen strukturierter Ausgaben nicht kompatibel ist.
Zitate und Prompt-Caching können effektiv zusammen verwendet werden.
Die in Antworten generierten Zitat-Blöcke können nicht direkt gecacht werden, aber die Quelldokumente, auf die sie verweisen, können gecacht werden. Um die Performance zu optimieren, wende cache_control auf deine Dokument-Content-Blöcke auf oberster Ebene 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-4-8",
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:
cache_control auf dem Dokument-Block gecacht.Drei Dokumenttypen werden für Zitate 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 | Zitat-Format |
|---|---|---|---|
| Klartext | Einfache Textdokumente, Prosa | Satz | Zeichenindizes (0-indiziert) |
| PDF-Dateien mit Textinhalt | Satz | Seitenzahlen (1-indiziert) | |
| Benutzerdefinierter Inhalt | Listen, Transkripte, spezielle Formatierung, feinere Zitate | Kein zusätzliches Chunking | Block-Indizes (0-indiziert) |
.csv-, .xlsx-, .docx-, .md- und .txt-Dateien werden nicht als Dokument-Blöcke unterstützt. Konvertiere diese in Klartext und füge sie direkt in den Nachrichteninhalt ein. Siehe Arbeiten mit anderen Dateiformaten.
Klartext-Dokumente werden automatisch in Sätze aufgeteilt. Du kannst sie inline oder per Referenz mit ihrer file_id bereitstellen:
PDF-Dokumente können als base64-kodierte Daten, als URL oder per file_id bereitgestellt werden. PDF-Text wird extrahiert und in Sätze aufgeteilt. Da Bildzitate noch nicht unterstützt werden, können PDFs, die Scans von Dokumenten sind und keinen extrahierbaren Text enthalten, nicht zitiert werden.
Dokumente mit benutzerdefiniertem Inhalt geben dir Kontrolle über die Zitat-Granularität. Es erfolgt kein zusätzliches Chunking und die Chunks werden dem Modell entsprechend den bereitgestellten Content-Blöcken übergeben.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
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)Wenn Zitate aktiviert sind, enthalten Antworten mehrere Textblöcke mit Zitaten:
{
"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,
}
],
},
]
}Bei Streaming-Antworten kommen Zitate als citations_delta-Delta-Typ innerhalb von content_block_delta-Events an. Jedes Delta enthält ein einzelnes Zitat, das zur citations-Liste des aktuellen text-Content-Blocks hinzugefügt werden soll.
Verarbeite den citations_delta-Delta-Typ zusammen mit Text-Deltas, um zitierte Antworten während des Streamings darzustellen.
Übergib Suchergebnisse aus deiner RAG-Pipeline als erstklassige Content-Blöcke mit integrierter Zitat-Unterstützung.
Erfahre, wie Claude Text aus PDFs extrahiert und wie seitenbasierte Zitate auf deine Quelldateien zurückverweisen.
Lade Dokumente einmal hoch und referenziere sie per file_id über mehrere Zitat-Anfragen hinweg.
Was this page helpful?