Эту статью целиком написал Claude Opus 4.7 (ИИ). Это не перевод и не официальная документация — собственный обзор ИИ на основе публичных источников. Для критичных решений проверяй факты сам.
Как работают LLM: фундамент
Составил: Claude · 2026-04-27
Чтобы работать с Claude Code и с GPT-5.4-mini внутри своего бота
спокойно, не обязательно понимать математику. Но шесть концептов
стоит знать на уровне «как устроен холодильник, не углубляясь в
термодинамику»: токен, окно контекста, переполнение,
температура, галлюцинации, lost-in-the-middle. Без них работа с
моделью превращается в магию — а магия плохо отлаживается.
Токен — единица, которой меряется всё
LLM (large language model — «большая языковая модель») не видит
буквы и не видит слова. Она видит токены — куски
текста, которые модель перевела в числа на этапе обучения. Один
токен — это часто слово целиком, часто кусок слова, иногда символ.
Эвристика для русского текста: 1 слово ≈ 2–3 токена,
для английского — 1 слово ≈ 1.3 токена (английский
«упакован» плотнее, потому что моделей училось больше на
английском). Это не точно, но даёт правильный порядок величины.
Зачем тебе это знать:
Цена API считается в токенах. «Запрос на 1000
токенов» — это примерно 350–500 русских слов или одна длинная
реплика бота с системным промптом.
Окно контекста меряется в токенах (об этом ниже).
«200 000 токенов» — это огромный объём текста, но в пересчёте на
твою историю чата с пользователем за месяц — может оказаться, что
она туда не влезает.
Длинный системный промпт стоит дорого каждый раз.
На каждое сообщение пользователя ты отправляешь весь системный
промпт + всю историю + само сообщение. Если системный промпт
на 3000 токенов, и пользователь написал 100 сообщений за день —
это 300 000 токенов «съедено» только промптом.
Окно контекста — оперативная память модели
LLM не имеет долговременной памяти. Между запросами
она забывает всё. Каждый запрос — это отдельный фокус, в котором
модель видит ровно то, что ты ей передала: системный промпт +
историю переписки + последнее сообщение.
Сколько помещается в этот фокус, и есть окно контекста. У современных
моделей — порядка 200 тысяч токенов (≈ 150 000 слов, ≈ 500 страниц
книги). Это много, но конечно. И есть тонкий момент: размер окна и
качество работы внутри окна — разные вещи.
Что значит «модель забыла»
Когда твой бот ведёт долгий диалог с пользователем, ты обычно
отправляешь в OpenAI всю историю сообщений плюс системный промпт.
«Забыла» означает одно из трёх:
Ты не передала. Если у тебя в коде
messages = [system, last_user_msg], то модель и не
видит истории, ей нечего «помнить».
История не влезла. Когда суммарный размер
приближается к окну, нужно решать что выкидывать. Чаще всего —
старые сообщения. Это нормально, но должно быть осознанно (см.
«Переполнение» ниже).
История есть, но «зарылась». Информация в
середине очень длинного контекста извлекается хуже, чем в начале
и в конце. Это явление называется lost-in-the-middle (ниже
отдельный раздел).
Переполнение контекста — что с этим делать в боте
Для бота на aiogram + SQLite типичный паттерн: история диалога
хранится в твоей таблице, и при каждом запросе ты собираешь
последние N сообщений и передаёшь модели. Когда диалог становится
длинным, у тебя три стратегии:
Срез (window). Брать только последние K
сообщений (например, последние 20). Просто, но теряются ранние
решения («пользователь сказал, что у него депрессия» — а через
30 сообщений модель этого уже не видит).
Сжатие (summary). Каждые N сообщений просить
отдельным запросом коротко суммировать прошлое («пользователь:
имя, важные факты, текущая цель») и хранить эту сводку в
user_notes. В следующий запрос подаёшь сводку +
последние сообщения. Это — то же самое, что делает
/compact в Claude Code.
Структурированная память. Извлекать факты в
твою БД (users.adhd_severity,
user_notes.long_term_goal) и подкладывать их в
системный промпт точечно. Самый трудоёмкий вариант, но самый
надёжный — модель не «забывает» того, что лежит в
структурированном виде.
На практике для бота с СДВГ-памятью разумно сочетать (3) для
долгосрочных вещей (цели, диагноз) и (1) для оперативного диалога.
Температура — насколько модель «играет»
На каждом шаге модель выбирает следующий токен из распределения
вероятностей. Температура (параметр API,
temperature, от 0 до 2) управляет тем, насколько
жёстко выбирается самый вероятный токен.
0 — почти детерминированно: на одинаковом входе
почти одинаковый выход. Подходит для задач, где правильный ответ
один: классификация, извлечение фактов, JSON по схеме, tool
calling.
0.3–0.5 — небольшая вариативность.
Используй для деловых ответов, кода, объяснений. Модель не
«творческая», но и не повторяется буквально.
0.7–1.0 — заметная вариативность. Подходит для
эмпатичных ответов, для текстов, где важно чтобы каждый раз было
«своё». Для бота поддержки людей с СДВГ — типичная зона.
>1.2 — модель начинает «гулять». Полезно для
brainstorm, но рискованно для прода.
Эвристика: если модель пишет одно и то же одинаковыми словами —
подними температуру. Если стала отвечать невпопад или путать
факты — опусти. Большинство случаев в твоём боте лежит между 0 и
0.7.
Галлюцинации — модель уверенно придумывает
LLM обучена выдавать правдоподобный следующий
токен, а не правдивый. Если в её обучающих данных есть
закономерность «после такого вопроса обычно идёт такой ответ» —
она его выдаст, даже если конкретно для твоего случая это
выдумка.
Типичные случаи в боте:
Ссылка, которой нет. «Прочитай статью на
psychology-today.ru/adhd-2024» — такого URL нет, модель собрала
его из похожих.
Цитата из несуществующего источника. «Как писал
Карл Юнг…» — Юнг такого не писал, модель сгенерировала фразу в
его стиле.
Ложная уверенность в фактах о пользователе. Модель
«помнит», что пользователь работает в банке, хотя пользователь
такого не говорил — это собралось из похожих диалогов в
обучении.
Что снижает галлюцинации:
Разрешить «не знаю». В системном промпте: «Если
ты не уверена — скажи "не знаю", не выдумывай». Удивительно
простой приём, и он работает.
Опираться на источник, а не на память модели.
Если боту нужны факты о пользователе — подавать их прямо в
промпт из user_notes, а не надеяться, что модель
«помнит».
Понизить температуру для фактических ответов.
Не задавать вопросы, ответ на которые модель не может
знать. «Сколько у меня было сообщений на этой неделе?» —
модель не знает, у тебя в SQLite есть SELECT COUNT(*).
Считай в коде, передавай число в промпт.
Lost-in-the-middle — где «лежит» инструкция, важно
Внутри окна контекста информация извлекается неравномерно. В
исследованиях 2023–2024 годов (Liu et al., «Lost in the Middle»)
обнаружили: если положить нужный факт в самое начало или самый
конец длинного контекста — модель его находит почти всегда. Если
положить в середину — точность падает.
Хорошая новость: с тех пор модели сильно подтянулись. У современных
Opus, Sonnet и GPT-5 на тесте «иголка в стоге сена» (needle in a
haystack) точность близка к 100% при заполнении окна на 100–200
тысяч токенов. То есть «середину уже не теряют» — почти.
Плохая новость: на сложных задачах (не «найти факт», а «применить
правило, которое лежит в середине, к ситуации в конце») эффект
ослабел, но не исчез. Поэтому эвристика жива: важное
кладём в начало и в конец, не закапываем в середину.
Где это применяется к твоему боту:
Системный промпт бота. Кризисный протокол,
жёсткие запреты («никогда не давай медицинских рекомендаций»,
«при упоминании суицида — переключайся на safe-режим») —
в начале и в конце. Few-shot примеры — в середине.
Подробнее в адаптации «Роли
и system prompt».
CLAUDE.md. Главные инварианты —
сверху и снизу. Длинные пояснения — в середине.
Длинные диалоги. Если перед последним
сообщением пользователя положить короткую сводку «вот что важное
из прошлой сессии» — она будет работать как «конец» контекста и
возьмётся в фокус.
Памятка
Токен — единица текста для модели. Русское слово ≈
2–3 токена. Цена API и окно контекста меряются в них.
Окно контекста — оперативная память. У современных
моделей ≈ 200 000 токенов. Между запросами — амнезия.
Переполнение в боте лечится комбинацией: срез
последних сообщений + краткая сводка + структурированные факты в
БД.
Температура — разброс ответа. 0 для строгих задач,
0.3–0.7 — рабочая зона для эмпатичного бота.
Галлюцинации — модель выдаёт правдоподобное, не
обязательно правдивое. Лечится: «разрешить не знать», опора на
внешний источник, низкая температура.
Lost-in-the-middle — критичное в начало и в
конец, не закапывать в середину. Работает как для системного
промпта бота, так и для CLAUDE.md.
Что почитать дальше
Тонкости Claude — модели
Anthropic, extended/adaptive thinking, prompt caching, tool use.
После «фундамента» специфика Claude становится интуитивной.