Контекст¶
Контекст — это вся дополнительная информация, которую AI-модель получает вместе с вашим запросом. Именно контекст помогает модели понять, о чём вы говорите, что уже известно и какой ответ будет уместен.
Если говорить совсем просто, запрос — это ваш вопрос. А контекст — всё, что помогает ответить на него точнее.
Например, если вы пишете только «объясни эту ошибку», модели может не хватить данных. Но если добавить текст ошибки, кусок кода и краткое описание задачи, ответ обычно становится намного полезнее.
Зачем нужен контекст¶
AI-модель не знает, что именно вы имеете в виду, если вы это не передали. Она не видит ваш экран, не читает мысли и не понимает проект «сама по себе».
Контекст нужен, чтобы модель:
- понимала тему разговора;
- учитывала предыдущие сообщения;
- видела код, текст, документацию или ошибку;
- не угадывала лишнее;
- давала более точный и полезный ответ.
Чем лучше подобран контекст, тем выше шанс получить результат, близкий к реальной задаче.
Из чего может состоять контекст¶
Контекст бывает разным. В зависимости от сценария в него могут входить:
- ваше текущее сообщение;
- предыдущие сообщения в диалоге;
- прикреплённые файлы;
- выделенный фрагмент кода;
- ошибки компиляции или логи;
- документация;
- структура проекта;
- изменения Git;
- системные инструкции и правила.
Для пользователя всё это выглядит как «дополнительные данные, которые модель учитывает перед ответом».
Простой пример¶
Рассмотрим один и тот же вопрос.
Без контекста¶
Запрос:
Такой вопрос слишком общий. Модель может только гадать.
С контекстом¶
Запрос:
Почему функция не работает?
Вот код:
function divide(a, b) {
return a / b
}
Ошибка возникает, когда b = 0.
Объясни простыми словами для новичка.
Теперь модель уже понимает:
- о какой функции идёт речь;
- в каком месте проблема;
- какой стиль ответа нужен.
Именно это и делает контекст полезным.
Какие бывают виды контекста¶
Контекст удобно делить на несколько типов.
1. Контекст диалога¶
Это история переписки. Модель учитывает ваши прошлые сообщения и свои предыдущие ответы.
Благодаря этому можно:
- задавать уточняющие вопросы;
- продолжать тему без повторения всего с нуля;
- вести длинный разговор шаг за шагом.
Но у этого есть и обратная сторона. Если в чате накопилось слишком много несвязанных тем, модель может начать путаться.
2. Контекст задачи¶
Это информация, относящаяся к текущему вопросу. Например:
- цель задачи;
- ограничения;
- желаемый формат ответа;
- язык программирования;
- уровень объяснения: для новичка или для опытного разработчика.
Такой контекст особенно важен, когда вы хотите не просто ответ, а конкретный результат.
3. Контекст проекта¶
Если речь идёт о разработке, важен контекст самого проекта. Сюда могут входить:
- структура папок;
- соседние файлы;
- конфигурация;
- стиль кода;
- используемые библиотеки;
- тесты и документация.
Без такого контекста модель видит только маленький фрагмент и чаще предлагает решения, которые не подходят проекту.
4. Контекст из внешних источников¶
Иногда модели нужно опираться не только на чат, но и на другие данные. Например:
- документацию;
- статьи;
- базу знаний;
- Git-историю;
- данные из внешних сервисов;
- результаты поиска по кодовой базе.
Это особенно полезно, когда ответ должен опираться на реальные материалы, а не только на общие знания модели.
Контекст в работе с Koda¶
В Koda контекст может собираться из разных источников. Например:
- из истории текущей сессии;
- из файлов и папок, добавленных через
@; - из кода, открытого в редакторе;
- из выделенного фрагмента;
- из документации;
- из индекса проекта;
- из навыков и правил;
- из инструментов и внешних интеграций.
Поэтому один и тот же запрос может дать разный результат в зависимости от того, какой контекст был добавлен.
Что такое контекстное окно¶
У любой модели есть ограничение на объём текста, который она может обработать за один раз. Этот предел называют контекстным окном.
В контекстное окно входит не только ваш текущий запрос, но и всё остальное:
- история диалога;
- прикреплённые материалы;
- системные инструкции;
- найденные фрагменты кода и документации;
- иногда и промежуточные результаты работы.
Если контекста становится слишком много, модель может:
- перестать учитывать ранние сообщения;
- отвечать хуже;
- упустить важные детали;
- столкнуться с ограничением по длине.
Что такое токены и почему они связаны с контекстом¶
Объём контекста обычно измеряется в токенах. Токен — это небольшая часть текста. Это не всегда целое слово: иногда токеном может быть часть слова, знак препинания или короткий фрагмент.
Чем длиннее ваш запрос и чем больше дополнительных материалов вы передаёте, тем больше токенов занимает контекст.
Поэтому важно не только «дать побольше информации», но и передать именно то, что действительно помогает решить задачу.
Почему слишком большой контекст — это тоже проблема¶
Кажется логичным дать модели как можно больше данных. Но на практике слишком большой контекст может мешать.
Основные проблемы такие:
- важная информация теряется среди лишней;
- модель начинает цепляться за старые и уже неактуальные детали;
- растёт стоимость и время обработки;
- ответы становятся менее сфокусированными.
Хороший контекст — не самый большой, а самый релевантный.
Хорошее правило
Лучше передать 3 действительно полезных фрагмента, чем 30 случайных файлов. Точность часто растёт не от объёма, а от уместности.
Признаки хорошего контекста¶
Хороший контекст обычно:
- относится к текущей задаче;
- достаточно конкретный;
- не перегружен лишними деталями;
- содержит нужные примеры, ошибки или ограничения;
- помогает модели не гадать, а опираться на факты.
Признаки плохого контекста¶
Плохой контекст часто выглядит так:
- информации слишком мало;
- информации слишком много;
- данные противоречат друг другу;
- в контекст попали старые или нерелевантные файлы;
- запрос расплывчатый и не объясняет цель.
Из-за этого модель может отвечать уверенно, но не по делу.
Как начинающему пользователю собирать контекст¶
Вот несколько простых правил:
- Начните с короткого и ясного описания задачи.
- Добавьте только те материалы, которые действительно относятся к вопросу.
- Если есть ошибка — вставьте её текст целиком.
- Если вопрос про код — покажите минимальный нужный фрагмент.
- Если нужен конкретный формат ответа — скажите об этом прямо.
- Если тема сменилась, иногда лучше начать новый диалог.
Что лучше добавить в запрос на практике¶
Если нужен разбор ошибки¶
Добавьте:
- текст ошибки;
- кусок кода, где она возникает;
- что вы ожидали получить;
- что произошло на самом деле.
Если нужен совет по коду¶
Добавьте:
- язык программирования;
- текущую реализацию;
- ограничения;
- желаемый результат.
Если нужно объяснение темы¶
Добавьте:
- уровень: новичок или продвинутый;
- контекст задачи;
- просьбу привести пример.
Контекст и безопасность¶
С контекстом важно быть осторожным. Если вы передаёте модели файлы, логи или документы, в них могут оказаться:
- пароли;
- токены;
- персональные данные;
- внутренние документы;
- коммерчески чувствительная информация.
Перед добавлением контекста полезно убедиться, что в нём нет лишних секретов или приватных данных.
Осторожно с чувствительными данными
Не добавляйте в контекст секреты, ключи доступа, приватные токены и данные, которые нельзя передавать внешним сервисам.
Контекст и суммаризация¶
Когда диалог становится длинным, часть старой информации может сжиматься в краткий конспект. Это называется суммаризацией.
Смысл в том, чтобы сохранить важные решения и освободить место в контекстном окне для новых запросов. Это помогает продолжать работу без полного переполнения контекста.
Контекст не равен истине¶
Даже хороший контекст не делает ответ автоматически правильным. Модель всё равно может ошибиться в выводах, перепутать детали или сделать неверное предположение.
Контекст повышает вероятность хорошего ответа. Но не заменяет проверку, особенно если речь идёт о коде, финансах, праве, безопасности или медицине.
Коротко¶
Контекст — это всё, что помогает модели понять вашу задачу точнее. Он может включать историю диалога, файлы, код, документацию, ошибки, правила и данные из внешних источников.
Чем релевантнее контекст, тем полезнее обычно получается ответ. Но слишком большой или нерелевантный контекст, наоборот, может ухудшить результат.
Для начинающего пользователя главное правило простое: передавайте не всё подряд, а только то, что действительно нужно для ответа.
См. также: