Контекстное окно — это максимальный объем информации, который LLM может удерживать в рамках одного диалога. Когда LLM приближается к этому лимиту, качество ее ответов может существенно снижаться.
Контекстное окно измеряется в токенах — условных единицах текста, на которые модель разбивает входные данные. В контекст входит всё: системный промпт, история диалога, переменные, данные из базы знаний и инструментов, сгенерированные ответы.
Каждая модель имеет свой лимит. У быстрых и легких моделей небольшое контекстное окно (~100 000 токенов), а у больших моделей окно может быть более 1 000 000 токенов.
При приближении к верхней границе контекстного окна LLM начинает хуже удерживать внимание на деталях. Это проявляется следующим образом:
Чем ближе диалог к лимиту контекстного окна, тем выше вероятность галлюцинаций. Нейросеть пытается «угадать» логику завершения диалога, когда контекст перегружен. Это приводит к неточностям: модель может ссылаться на данные, которых не было в диалоге, или придумывать факты.
Перегруженный контекст может приводить к критическим сбоям при работе с инструментами, так как вызовы инструментов также генерируются через LLM, и должны соответствовать точному внутреннему формату. Если в вызове инструмента будут галлюцинации – он не сработает.
На перегрузку контекстного окна указывают следующие признаки:
MALFORMED_FUNCTION_CALL);Удаляйте лишнюю информацию, которая не влияет на качество ответов. Чем короче промпт, тем меньше токенов он занимает и тем больше пространства остается для истории диалога.
Если файлы загружаются в базу знаний без использования RAG, то их полное содержимое передается в контекст, и большая база знаний может полностью заполнить контекстное окно уже в самом начале диалога. Включенный RAG позволяет передавать из базы знаний в LLM только ту информацию, которая относится к текущему ответу, и снижает расход токенов.
Если задачи требуют длинных диалогов, выбирайте модель с большим контекстным окном. Это снизит риск перегрузки и связанных с ней ошибок.
Проверяйте поведение агента на диалогах, приближающихся к лимиту, чтобы выявить проблемы до запуска агента в работу.