Эта функция соответствует требованиям Zero Data Retention (ZDR) (нулевого хранения данных). Если у вашей организации действует соглашение ZDR, данные, отправленные через эту функцию, не сохраняются после возврата ответа API.
Claude может предоставлять подробные цитаты при ответах на вопросы о документах, помогая вам отслеживать и проверять источники, лежащие в основе каждого ответа.
Все активные модели поддерживают цитирование, за исключением Claude Haiku 3.
Поделитесь своими отзывами и предложениями о функции цитирования, используя форму обратной связи по цитированию.
Следующий пример показывает, как включить цитирование для документа с обычным текстом с помощью Messages API:
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)Сравнение с подходами на основе подсказок
По сравнению с использованием подсказок, в которых Claude просят указывать источники, функция цитирования предлагает следующие преимущества:
cited_text не учитывается в ваших выходных токенах.cited_text напрямую, цитаты гарантированно содержат корректные указатели на предоставленные документы.Интегрируйте цитирование с Claude, выполнив следующие шаги:
Предоставьте документ(ы) и включите цитирование
citations.enabled=true для каждого из ваших документов. В настоящее время цитирование должно быть включено либо для всех документов в запросе, либо ни для одного из них.Документы обрабатываются
Claude предоставляет ответ с цитатами
Автоматическое разбиение и пользовательское содержимое
По умолчанию документы с обычным текстом и PDF автоматически разбиваются на предложения. Если вам нужен больший контроль над гранулярностью цитирования (например, для маркированных списков или транскриптов), используйте вместо этого документы с пользовательским содержимым. Подробнее см. в разделе Типы документов.
Например, если вы хотите, чтобы Claude мог цитировать конкретные предложения из ваших фрагментов RAG, вам следует поместить каждый фрагмент RAG в документ с обычным текстом. В противном случае, если вы не хотите, чтобы выполнялось какое-либо дополнительное разбиение, или если вы хотите настроить любое дополнительное разбиение, вы можете поместить фрагменты RAG в документ(ы) с пользовательским содержимым.
source документа, может быть процитирован.title и context — необязательные поля, которые передаются модели, но не используются в качестве цитируемого содержимого.title ограничено по длине, поэтому поле context полезно для хранения метаданных документа в виде текста или сериализованного JSON.content, предоставленному в документе с пользовательским содержимым.cited_text предоставляется для удобства и не учитывается в выходных токенах.cited_text также не учитывается во входных токенах.Цитирование работает совместно с другими функциями API, включая кэширование подсказок, подсчёт токенов и пакетную обработку.
Цитирование и структурированные выходные данные несовместимы
Цитирование нельзя использовать вместе со структурированными выходными данными. Если вы включите цитирование для любого предоставленного пользователем документа (блоки document или блоки search_result) и одновременно укажете параметр output_config.format (или устаревший параметр output_format), API вернёт ошибку 400.
Это связано с тем, что цитирование требует чередования блоков цитат с текстовым выводом, что несовместимо со строгими ограничениями JSON-схемы структурированных выходных данных.
Цитирование и кэширование подсказок можно эффективно использовать вместе.
Блоки цитат, генерируемые в ответах, не могут быть кэшированы напрямую, но исходные документы, на которые они ссылаются, могут быть кэшированы. Для оптимизации производительности примените cache_control к вашим блокам содержимого документов верхнего уровня.
client = anthropic.Anthropic()
# Длинное содержимое документа (например, техническая документация)
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)В этом примере:
cache_control на блоке документа.Для цитирования поддерживаются три типа документов. Документы могут быть предоставлены непосредственно в сообщении (base64, текст или URL) или загружены через Files API и указаны по file_id:
| Тип | Лучше всего подходит для | Разбиение на фрагменты | Формат цитирования |
|---|---|---|---|
| Обычный текст | Простые текстовые документы, проза | По предложениям | Индексы символов (индексация с 0) |
| PDF-файлы с текстовым содержимым | По предложениям | Номера страниц (индексация с 1) | |
| Пользовательское содержимое | Списки, транскрипты, специальное форматирование, более детальное цитирование | Без дополнительного разбиения | Индексы блоков (индексация с 0) |
Файлы .csv, .xlsx, .docx, .md и .txt не поддерживаются в качестве блоков документов. Преобразуйте их в обычный текст и включите непосредственно в содержимое сообщения. См. Работа с другими форматами файлов.
Документы с обычным текстом автоматически разбиваются на предложения. Вы можете предоставить их встроенными или по ссылке с их file_id:
PDF-документы могут быть предоставлены в виде данных, закодированных в base64, URL или по file_id. Текст PDF извлекается и разбивается на предложения. Поскольку цитирование изображений пока не поддерживается, PDF-файлы, которые являются сканами документов и не содержат извлекаемого текста, не могут быть процитированы.
Документы с пользовательским содержимым дают вам контроль над гранулярностью цитирования. Дополнительное разбиение не выполняется, и фрагменты предоставляются модели в соответствии с предоставленными блоками содержимого.
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)Когда цитирование включено, ответы включают несколько текстовых блоков с цитатами:
{
"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 внутри событий content_block_delta. Каждая дельта содержит одну цитату для добавления в список citations текущего блока содержимого text.
Обрабатывайте тип дельты citations_delta вместе с текстовыми дельтами, чтобы отображать ответы с цитатами по мере их потоковой передачи.
Передавайте результаты поиска из вашего RAG-конвейера как полноценные блоки содержимого со встроенной поддержкой цитирования.
Узнайте, как Claude извлекает текст из PDF и как цитаты на основе страниц соотносятся с вашими исходными файлами.
Загружайте документы один раз и ссылайтесь на них по file_id в нескольких запросах с цитированием.
Was this page helpful?