Was this page helpful?
This feature is eligible for Zero Data Retention (ZDR). When your organization has a ZDR arrangement, data sent through this feature is not stored after the API response is returned.
Claude способен предоставлять подробные цитирования при ответах на вопросы о документах, помогая вам отслеживать и проверять источники информации в ответах.
Все активные модели поддерживают цитирование, за исключением Haiku 3.
Поделитесь своими отзывами и предложениями о функции цитирования, используя эту форму.
Вот пример использования цитирования с Messages API:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
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)Сравнение с подходами на основе подсказок
По сравнению с решениями для цитирования на основе подсказок, функция цитирования имеет следующие преимущества:
cited_text не учитывается в ваших выходных токенах.cited_text извлекается, цитирования гарантированно содержат действительные указатели на предоставленные документы.Интегрируйте цитирование с Claude в следующие шаги:
Автоматическое разбиение в сравнении с пользовательским содержимым
По умолчанию документы простого текста и PDF автоматически разбиваются на предложения. Если вам нужен больший контроль над детализацией цитирования (например, для маркированных списков или стенограмм), используйте вместо этого документы пользовательского содержимого. Дополнительные сведения см. в разделе Типы документов.
Например, если вы хотите, чтобы Claude мог цитировать конкретные предложения из ваших фрагментов RAG, вы должны поместить каждый фрагмент RAG в документ простого текста. В противном случае, если вы не хотите, чтобы выполнялось дальнейшее разбиение, или если вы хотите настроить любое дополнительное разбиение, вы можете поместить фрагменты RAG в документ(ы) пользовательского содержимого.
source документа, может быть процитирован.title и context - это необязательные поля, которые будут переданы модели, но не будут использоваться для цитируемого содержимого.title ограничен по длине, поэтому вы можете найти поле context полезным для хранения любых метаданных документа в виде текста или строкового json.content, предоставленного в документе пользовательского содержимого.cited_text предоставляется для удобства и не учитывается в выходных токенах.cited_text также не учитывается в входных токенах.Цитирования работают в сочетании с другими функциями API, включая кэширование подсказок, подсчет токенов и пакетную обработку.
Цитирования и структурированные выходы несовместимы
Цитирования не могут использоваться вместе со Структурированными выходами. Если вы включите цитирования для любого предоставленного пользователем документа (блоки Document или RequestSearchResultBlock) и также включите параметр output_config.format (или устаревший параметр output_format), API вернет ошибку 400.
Это потому, что цитирования требуют чередования блоков цитирования с текстовым выводом, что несовместимо со строгими ограничениями схемы JSON структурированных выходов.
Цитирования и кэширование подсказок можно использовать вместе эффективно.
Блоки цитирования, созданные в ответах, не могут быть кэшированы напрямую, но исходные документы, на которые они ссылаются, могут быть кэшированы. Для оптимизации производительности примените cache_control к вашим блокам содержимого документа верхнего уровня.
В этом примере:
cache_control на блоке документаТри типа документов поддерживаются для цитирований. Документы могут быть предоставлены непосредственно в сообщении (base64, текст или URL) или загружены через Files API и указаны по file_id:
| Тип | Лучше всего для | Разбиение | Формат цитирования |
|---|---|---|---|
| Простой текст | Простые текстовые документы, проза | Предложение | Индексы символов (с индексацией 0) |
| PDF файлы с текстовым содержимым | Предложение | Номера страниц (с индексацией 1) | |
| Пользовательское содержимое | Списки, стенограммы, специальное форматирование, более детальные цитирования | Без дополнительного разбиения | Индексы блоков (с индексацией 0) |
Файлы .csv, .xlsx, .docx, .md и .txt не поддерживаются как блоки документов. Преобразуйте их в простой текст и включите непосредственно в содержимое сообщения. См. Работа с другими форматами файлов.
Документы простого текста автоматически разбиваются на предложения. Вы можете предоставить их встроенными или по ссылке с их file_id:
PDF документы могут быть предоставлены как данные в кодировке base64 или по file_id. Текст PDF извлекается и разбивается на предложения. Поскольку цитирования изображений еще не поддерживаются, PDF файлы, которые являются сканами документов и не содержат извлекаемого текста, не будут цитируемыми.
Документы пользовательского содержимого дают вам контроль над детализацией цитирования. Дополнительное разбиение не выполняется, и фрагменты предоставляются модели в соответствии с предоставленными блоками содержимого.
{
"type": "document",
"source": {
"type": "content",
"content": [
{"type": "text", "text": "First chunk"},
{"type": "text", "text": "Second chunk"},
],
},
"title": "Document Title", # optional
"context": "Context about the document that will not be cited from", # optional
"citations": {"enabled": True},
}Когда цитирования включены, ответы включают несколько текстовых блоков с цитированиями:
{
"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,
}
],
},
]
}Для потоковых ответов включен тип citations_delta, который содержит одно цитирование, которое будет добавлено в список citations на текущем блоке содержимого text.
Предоставьте документ(ы) и включите цитирование
citations.enabled=true для каждого из ваших документов. В настоящее время цитирование должно быть включено для всех или ни одного из документов в запросе.Документы обрабатываются
Claude предоставляет цитируемый ответ
client = anthropic.Anthropic()
# Long document content (e.g., technical documentation)
long_document = (
"This is a very long document with thousands of words..." + " ... " * 1000
) # Minimum cacheable length
response = client.messages.create(
model="claude-opus-4-7",
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)