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

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

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

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

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

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

  • Экономия затрат: Если ваш подход на основе промптов просит 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, включая кэширование промптов, подсчет токенов и пакетную обработку.


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

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

Мы поддерживаем три типа документов для цитирования:

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

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

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

{
    "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}
}

PDF документы

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

{
    "type": "document",
    "source": {
        "type": "base64",
        "media_type": "application/pdf",
        "data": base64_encoded_pdf_data
    },
    "title": "Document Title", # необязательно
    "context": "Context about the document that will not be cited from", # необязательно
    "citations": {"enabled": True}
}

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

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

{
    "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}
}

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

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

{
    "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
            }]
        }
    ]
}

Поддержка стриминга

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