Коротко
Контекст делится на две части, и они устроены принципиально по-разному. Инструкция, легенда и резюме подставляются в каждый запрос целиком — они всегда перед моделью. Конспекты хранятся отдельно, и на каждый вопрос из них достаётся только то, что к этому вопросу относится.
Практический вывод один: лишний абзац в резюме стоит вам места в каждом ответе до конца собеседования, а лишняя страница в конспекте не стоит почти ничего.
Четыре поля и чем они отличаются
Поля не взаимозаменяемы: каждое подписывается в запросе своим заголовком, и модель обращается с ними по-разному.
| Поле | Что туда писать | Как используется |
|---|---|---|
| Инструкция | Указания, которым нужно следовать: формат ответа, длина, чего избегать | Целиком, в каждом ответе |
| Легенда | Версия биографии, от лица которой вы идёте на собеседование | Целиком, в каждом ответе |
| Резюме | Фактический бэкграунд: проекты, стек, зона ответственности | Целиком, в каждом ответе |
| Конспекты | Материал, из которого нужно доставать факты: заметки по темам, разборы, документация | По кускам, только подходящие под вопрос |
Блок контекста ставится в запрос выше системного промпта. Это значит, что он задаёт фон, а не перебивает инструкции о формате ответа — мешать эти два уровня в одном поле не стоит.
Конспекты: не читаются целиком
Загруженный файл не хранится как файл. При сохранении он режется на куски примерно по тысяче символов, соседние куски частично перекрываются, и каждый кусок индексируется по смыслу.
Перекрытие нужно ровно для одного: мысль, разорванная границей куска, иначе пропадала бы целиком. С перекрытием она целиком попадает хотя бы в один из двух соседних кусков.
Когда приходит вопрос, по индексу ищутся три самых близких к нему куска. Близость считается по смыслу, а не по совпадению слов: вопрос «как объяснить, почему выбрал очередь» найдёт фрагмент про брокеры сообщений, даже если слова «очередь» в нём нет. Найденное подставляется в запрос с пометкой, что это фрагменты, а не весь конспект, и общий объём подстановки ограничен четырьмя тысячами символов.
Дальше — то самое поведение, которое стоит знать заранее. Если ни один фрагмент не оказался достаточно близок к вопросу, в ответ всё равно уйдёт самый близкий из найденных. Пустым поиск не возвращается, пока в базе есть хоть что-то. Отсюда правило: конспект не на тему хуже отсутствующего конспекта — он будет подмешиваться в ответы на вопросы, к которым не имеет отношения.
Лимиты
| Поле | Лимит |
|---|---|
| Инструкция | 3 000 символов |
| Резюме | 5 000 символов |
| Легенда | 5 000 символов |
| Конспекты | 5 файлов, .txt или .md |
| Объём конспектов | 100 000 символов суммарно по всем файлам |
Лимиты проверяются и в приложении, и на сервере одними и теми же числами. Если счётчик в окне показывает, что вы уложились, сохранение не отвалится на стороне сервера.
Лицо ответа и язык
Два переключателя рядом с полями меняют не содержание ответа, а его подачу.
Лицо. В обычном режиме приложение отвечает как ассистент: «стоит сказать, что…». В режиме первого лица — как вы сами: готовая устная реплика, которую можно произнести без переделки. На собеседовании нужен второй, и разница здесь больше, чем кажется по описанию: меняется не местоимение, а структура фразы.
Язык. По умолчанию стоит «автоматически» — ответ на языке вопроса. Явный выбор нужен в одном частом случае: собеседование идёт на английском, а думать и читать подсказку вы хотите на русском. Выбранный язык перебивает и язык вопроса, и язык конспектов.
Что происходит, если выключить базу знаний
Тумблер базы знаний отключает только поиск по конспектам. Инструкция, легенда и резюме продолжают уходить в каждый ответ — выключить их можно, только очистив поля.
Выигрыш от отключения — доля секунды на поиске. Потеря — все ваши факты: модель отвечает из общих знаний, и ответ становится глаже и беспредметнее. Если гонитесь за скоростью, дешевле сменить модель на более быструю, чем отключать поиск: у быстрой группы моделей выигрыш по времени больше, а платить за него приходится меньшим.
Как заполнить, чтобы это работало
Из устройства, описанного выше, следуют четыре довольно механических правила.
Режьте конспект на озаглавленные блоки по одной теме. Кусок нарезается по длине, а не по смыслу, поэтому запись, зажатая между двумя другими темами, найдётся хуже, чем та же запись отдельным блоком.
Не грузите то, о чём вас не спросят. Поиск не возвращается пустым, и лишний материал будет всплывать в чужих ответах.
Резюме держите коротким и конкретным. Оно занимает место в каждом ответе, поэтому «ответственный и целеустремлённый» стоит вам тех же символов, что и название системы, которую вы проектировали.
Инструкцию пишите про форму, а не про факты. Факты — это резюме и конспекты. Инструкция — это «коротко», «сначала вывод, потом обоснование», «без списков». Чем она конкретнее, тем меньше придётся править ответ на ходу.
Заполненный контекст особенно заметен на секции про опыт и на культурном интервью, где вопросы задаются про вас, а не про алгоритмы: разбор этих форматов — в статьях про финал с командой и скрининг.
Частые вопросы
Чем легенда отличается от резюме?
Это два отдельных поля с разными ролями в промпте. Резюме — ваш фактический бэкграунд. Легенда — рабочая версия биографии, от лица которой вы идёте на собеседование: другая компания, другой стек, другой срок работы. Оба уходят в ответ, но подписаны по-разному, поэтому модель понимает, что из этого реальная история, а что версия для разговора.
Сколько конспектов можно загрузить?
До пяти файлов в формате .txt или .md. Ограничение по объёму общее на все файлы сразу — сто тысяч символов, — а не на каждый. Это примерно пятьдесят страниц текста, и один большой конспект может занять весь лимит.
Конспект целиком уходит в каждый вопрос?
Нет, и в этом весь смысл. Файл режется на куски примерно по тысяче символов с перекрытием, каждый кусок индексируется, и на каждый вопрос подбираются три самых близких по смыслу. В ответ уходит не больше четырёх тысяч символов найденного — остальное отбрасывается.
Почему приложение отвечает не тем, что написано в конспекте?
Чаще всего потому, что нужный кусок не попал в тройку найденных. Поиск идёт по смыслу целого фрагмента, поэтому короткая запись, окружённая другой темой, проигрывает более длинному и цельному куску. Помогает разбивка конспекта на озаглавленные блоки по одной теме в каждом.
Что будет, если ничего подходящего в конспектах нет?
В ответ всё равно уйдёт самый близкий найденный фрагмент, даже если он далёк от вопроса. Поиск устроен так, что не возвращается пустым, пока в базе есть хоть что-то. Поэтому мусорный конспект хуже отсутствующего: он будет подмешиваться в ответы на темы, к которым не относится.
Где хранятся конспекты?
На сервере: там они индексируются и там же по ним идёт поиск. Приложение хранит локальную копию настроек, но источником правды считается сервер — при запуске поля подтягиваются оттуда. Удалить конспект можно по кнопке рядом с ним, и удаляется он вместе со своим индексом.
Индексация конспекта тратит кредиты?
Да, один раз при сохранении. Объём списания зависит от размера файла и он небольшой по сравнению с обычными ответами. Повторно за тот же конспект не списывается — переиндексация происходит, только если вы загрузили файл заново.
