Claude способен предоставлять подробные цитаты при ответе на вопросы о документах, помогая вам отслеживать и проверять источники информации в ответах.

Функция цитирования в настоящее время доступна в Claude Opus 4, Claude Sonnet 4, Claude Sonnet 3.7, Claude Sonnet 3.5 (новый) и Haiku 3.5.

Цитирование с Claude Sonnet 3.7

Claude Sonnet 3.7 может с меньшей вероятностью делать цитаты по сравнению с другими моделями Claude без более явных инструкций от пользователя. При использовании цитирования с Claude Sonnet 3.7 мы рекомендуем включать дополнительные инструкции в сообщение user, например, "Используйте цитаты для подтверждения вашего ответа.".

Мы также заметили, что когда модель получает запрос на структурирование своего ответа, она вряд ли будет использовать цитаты, если ей явно не сказать использовать цитаты в рамках этого формата. Например, если модель получает запрос на использование тегов в своем ответе, вы должны добавить что-то вроде “Всегда используйте цитаты в своем ответе, даже внутри .”

Пожалуйста, поделитесь своими отзывами и предложениями о функции цитирования, используя эту форму.

Вот пример использования цитирования с Messages API:

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-opus-4-20250514",
    "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?"
          }
        ]
      }
    ]
  }'

Сравнение с подходами на основе промптов

По сравнению с решениями для цитирования на основе промптов, функция цитирования имеет следующие преимущества:

  • Экономия средств: Если ваш подход на основе промптов просит Claude выводить прямые цитаты, вы можете увидеть экономию средств благодаря тому, что cited_text не учитывается в ваших выходных токенах.
  • Лучшая надежность цитирования: Поскольку мы анализируем цитаты в соответствующие форматы ответов, упомянутые выше, и извлекаем cited_text, цитаты гарантированно содержат действительные указатели на предоставленные документы.
  • Улучшенное качество цитирования: В наших оценках мы обнаружили, что функция цитирования значительно чаще цитирует наиболее релевантные цитаты из документов по сравнению с чисто промпт-ориентированными подходами.

Как работает цитирование

Интегрируйте цитирование с Claude в следующие шаги:

1

Предоставьте документ(ы) и включите цитирование

  • Включите документы в любом из поддерживаемых форматов: PDF, обычный текст или пользовательский контент
  • Установите citations.enabled=true для каждого из ваших документов. В настоящее время цитирование должно быть включено для всех или ни одного из документов в запросе.
  • Обратите внимание, что в настоящее время поддерживаются только текстовые цитаты, а цитирование изображений пока невозможно.
2

Документы обрабатываются

  • Содержимое документа “разбивается на части” для определения минимальной детализации возможных цитат. Например, разбиение на предложения позволит Claude цитировать одно предложение или объединять несколько последовательных предложений для цитирования абзаца (или более длинного фрагмента)!
    • Для PDF: Текст извлекается, как описано в Поддержка PDF, и содержимое разбивается на предложения. Цитирование изображений из PDF в настоящее время не поддерживается.
    • Для документов в виде обычного текста: Содержимое разбивается на предложения, которые можно цитировать.
    • Для документов с пользовательским контентом: Предоставленные вами блоки контента используются как есть, и дальнейшее разбиение не производится.
3

Claude предоставляет ответ с цитатами

  • Ответы теперь могут включать несколько текстовых блоков, где каждый текстовый блок может содержать утверждение, которое делает Claude, и список цитат, подтверждающих это утверждение.
  • Цитаты ссылаются на конкретные места в исходных документах. Формат этих цитат зависит от типа цитируемого документа.
    • Для PDF: цитаты будут включать диапазон номеров страниц (с индексацией от 1).
    • Для документов в виде обычного текста: Цитаты будут включать диапазон индексов символов (с индексацией от 0).
    • Для документов с пользовательским контентом: Цитаты будут включать диапазон индексов блоков контента (с индексацией от 0), соответствующий исходному списку контента.
  • Индексы документов предоставляются для указания источника ссылки и индексируются с 0 в соответствии со списком всех документов в вашем исходном запросе.

Автоматическое разбиение на части vs пользовательский контент

По умолчанию документы в виде обычного текста и PDF автоматически разбиваются на предложения. Если вам нужен больший контроль над детализацией цитирования (например, для маркированных списков или транскриптов), используйте вместо этого документы с пользовательским контентом. Дополнительную информацию см. в разделе Типы документов.

Например, если вы хотите, чтобы Claude мог цитировать конкретные предложения из ваших фрагментов RAG, вы должны поместить каждый фрагмент RAG в документ в виде обычного текста. В противном случае, если вы не хотите, чтобы выполнялось дальнейшее разбиение, или если вы хотите настроить любое дополнительное разбиение, вы можете поместить фрагменты RAG в документ(ы) с пользовательским контентом.

Цитируемый и нецитируемый контент

  • Текст, найденный в содержимом source документа, может быть цитирован.
  • title и context — это необязательные поля, которые будут переданы модели, но не будут использоваться для цитируемого контента.
  • title ограничен по длине, поэтому вы можете найти поле context полезным для хранения любых метаданных документа в виде текста или строкового JSON.

Индексы цитирования

  • Индексы документов индексируются с 0 из списка всех блоков контента документа в запросе (охватывающих все сообщения).
  • Индексы символов индексируются с 0 с эксклюзивными конечными индексами.
  • Номера страниц индексируются с 1 с эксклюзивными конечными номерами страниц.
  • Индексы блоков контента индексируются с 0 с эксклюзивными конечными индексами из списка content, предоставленного в документе с пользовательским контентом.

Стоимость токенов

  • Включение цитирования приводит к небольшому увеличению входных токенов из-за добавлений системного промпта и разбиения документа.
  • Однако функция цитирования очень эффективна с выходными токенами. Под капотом модель выводит цитаты в стандартизированном формате, которые затем анализируются в цитируемый текст и индексы местоположения документа. Поле cited_text предоставляется для удобства и не учитывается в выходных токенах.
  • При передаче обратно в последующих оборотах разговора cited_text также не учитывается во входных токенах.

Совместимость функций

Цитирование работает в сочетании с другими функциями API, включая кэширование промптов, подсчет токенов и пакетную обработку.

Использование кэширования промптов с цитированием

Цитирование и кэширование промптов могут эффективно использоваться вместе.

Блоки цитирования, сгенерированные в ответах, не могут быть кэшированы напрямую, но исходные документы, на которые они ссылаются, могут быть кэшированы. Для оптимизации производительности примените cache_control к вашим блокам содержимого документа верхнего уровня.

import anthropic

client = anthropic.Anthropic()

# Длинное содержимое документа (например, техническая документация)
long_document = "This is a very long document with thousands of words..." + " ... " * 1000  # Минимальная кэшируемая длина

response = client.messages.create(
    model="claude-opus-4-20250514",
    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"}  # Кэширование содержимого документа
                },
                {
                    "type": "text",
                    "text": "What does this document say about API features?"
                }
            ]
        }
    ]
)

В этом примере:

  • Содержимое документа кэшируется с использованием cache_control на блоке документа
  • Цитирование включено для документа
  • Claude может генерировать ответы с цитатами, используя кэшированное содержимое документа
  • Последующие запросы, использующие тот же документ, будут использовать преимущества кэшированного содержимого

Типы документов

Выбор типа документа

Мы поддерживаем три типа документов для цитирования. Документы могут быть предоставлены непосредственно в сообщении (base64, текст или URL) или загружены через Files API и указаны по file_id:

ТипЛучше всего подходит дляРазбиениеФормат цитирования
Обычный текстПростые текстовые документы, прозаПредложениеИндексы символов (с индексацией от 0)
PDFPDF-файлы с текстовым содержимымПредложениеНомера страниц (с индексацией от 1)
Пользовательский контентСписки, транскрипты, специальное форматирование, более детальное цитированиеБез дополнительного разбиенияИндексы блоков (с индексацией от 0)

Документы в виде обычного текста

Документы в виде обычного текста автоматически разбиваются на предложения. Вы можете предоставить их встроенными или по ссылке с их file_id:

{
    "type": "document",
    "source": {
        "type": "text",
        "media_type": "text/plain",
        "data": "Содержимое обычного текста..."
    },
    "title": "Заголовок документа", # необязательно
    "context": "Контекст о документе, который не будет цитироваться", # необязательно
    "citations": {"enabled": True}
}

PDF документы

PDF-документы могут быть предоставлены в виде данных в кодировке base64 или по file_id. Текст PDF извлекается и разбивается на предложения. Поскольку цитирование изображений пока не поддерживается, PDF-файлы, которые являются сканами документов и не содержат извлекаемого текста, не будут цитируемыми.

{
    "type": "document",
    "source": {
        "type": "base64",
        "media_type": "application/pdf",
        "data": base64_encoded_pdf_data
    },
    "title": "Заголовок документа", # необязательно
    "context": "Контекст о документе, который не будет цитироваться", # необязательно
    "citations": {"enabled": True}
}

Документы с пользовательским контентом

Документы с пользовательским контентом дают вам контроль над детализацией цитирования. Дополнительное разбиение не выполняется, и фрагменты предоставляются модели в соответствии с предоставленными блоками контента.

{
    "type": "document",
    "source": {
        "type": "content",
        "content": [
            {"type": "text", "text": "Первый фрагмент"},
            {"type": "text", "text": "Второй фрагмент"}
        ]
    },
    "title": "Заголовок документа", # необязательно
    "context": "Контекст о документе, который не будет цитироваться", # необязательно
    "citations": {"enabled": True}
}

Структура ответа

Когда цитирование включено, ответы включают несколько текстовых блоков с цитатами:

{
    "content": [
        {
            "type": "text",
            "text": "Согласно документу, "
        },
        {
            "type": "text",
            "text": "трава зеленая",
            "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": " и "
        },
        {
            "type": "text",
            "text": "небо голубое",
            "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
            }]
        }
    ]
}

Поддержка потоковой передачи

Для потоковых ответов мы добавили тип citations_delta, который содержит одну цитату, которая должна быть добавлена в список citations в текущем блоке контента text.