Длинный контекст и документы

Как скармливать модели большие документы и что ограничивает их объём.

Контекстное окно — максимальное число токенов (вход + выход), которое модель может удержать за один запрос. Всё, что не влезло, ей недоступно.

Сколько влезает

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

Как передать документ

Документ — это просто текст в сообщении. Для PDF и файлов провайдеры дают типы блоков document и Files API (загрузить файл один раз, ссылаться по file_id).

doc_text = open("contract.txt", encoding="utf-8").read()

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "Документ:\n" + doc_text},
        {"type": "text", "text": "Какой пункт описывает расторжение?"},
    ]}],
)

Цитирование

Чтобы ответ ссылался на источник (важно для доверия и проверки), у Anthropic есть режим citations: модель указывает, из какого места документа взят ответ. Это снижает «галлюцинации» — выдуманные факты.

Когда документов много: за пределами окна

Если данных больше, чем влезает в окно (вся документация, тысячи статей), весь массив в промпт не поместится. Тогда применяют RAG (retrieval-augmented generation): заранее индексируют тексты, на каждый вопрос находят несколько релевантных фрагментов и подкладывают в промпт только их. Мост к RAG — эмбеддинги (отдельный урок этого раздела).

Практические советы

  • Не суйте в окно всё подряд: лишний контекст — это деньги и риск, что модель «утонет» в нём.
  • Размещайте вопрос/инструкцию рядом с релевантной частью или в конце.
  • Для повторного использования одного большого документа включайте кэширование промптов (отдельный урок) — резко дешевле.
  • Следите за stop_reason: контекст может оказаться переполнен.

Итог

  • Контекстное окно ограничивает объём; весь контекст оплачивается каждый раз.
  • Документы передают текстом или через document-блоки / Files API; citations повышают доверие.
  • Когда данных больше окна — RAG: подкладывать только релевантные фрагменты.
Проверьте себя
1. Что такое контекстное окно модели?
AРазмер экрана пользователя
BМаксимальное число токенов (вход + выход) за один запрос
CЛимит запросов в минуту
DЧисло доступных инструментов
2. Что делать, если данных больше, чем помещается в контекстное окно?
AУвеличить temperature
BПрименить RAG: индексировать тексты и подкладывать в промпт только релевантные фрагменты
CОтправить всё несколькими запросами и склеить
DУменьшить max_tokens
3. Зачем нужен режим citations при работе с документами?
AЧтобы ускорить ответ
BЧтобы модель ссылалась на источник в документе, повышая доверие и снижая выдуманные факты
CЧтобы экономить токены
DЧтобы обойти контекстное окно
Поддержать проект