Как ассистент отвечает вашим опытом, а не учебником

Спросите любую большую модель «чем Task отличается от Thread в .NET», и получите правильный, полный и совершенно бесполезный для собеседования ответ. Правильный, потому что модель знает документацию. Бесполезный, потому что интервьюер услышит пересказ документации и спросит: «А вы сами с этим работали?». На этот вопрос модель за вас не ответит. Если только не знает, с чем вы работали.
Что ассистент знает о вас
Перед сессией вы добавляете резюме и описание вакансии. Резюме говорит, что вы делали: проекты, стек, масштаб. Вакансия говорит, что от вас хотят услышать: если в ней три раза упомянут Kubernetes, ответ про деплой стоит вести именно к нему. Обе части попадают в контекст модели, но не целиком и не всегда, и вот здесь начинается самое интересное.
Меньше контекста, лучше ответ
Первая версия ассистента отправляла модели всё: полное резюме, полную вакансию, шесть последних вопросов с ответами и кусок стенограммы. Казалось, чем больше она знает, тем лучше ответит. На деле ответы стали расплывчатыми: модель пыталась упомянуть всё, что ей дали, и теряла сам вопрос.
Поэтому теперь перед основной моделью работает короткий быстрый запрос, который мы между собой называем интерпретатором. Он не отвечает на вопрос. Он определяет, что спросили, и решает, что для ответа нужно.
- Восстанавливает вопрос после ошибок распознавания и нормализует названия технологий.
- Определяет тип: «что такое X», «X против Y», «почему X», «когда использовать X», «как работает X». У каждого типа свой шаблон ответа.
- Понимает, что это уточнение к предыдущему ответу, а не новая тема.
- Оценивает сложность и то, нужен ли для ответа код.
- Решает, нужно ли резюме, нужна ли вакансия, или вопрос чисто теоретический.
Основная модель получает нормализованный вопрос и только те куски контекста, которые интерпретатор счёл нужными. На вопрос про Task и Thread резюме не нужно вовсе, зато на вопрос «расскажите про самый сложный проект» без резюме делать нечего.
Ответ, который можно произнести
Главный критерий качества у нас формулируется просто: за полторы секунды понять главную мысль и начать говорить. Из него следует формат.
- Кратко. Одно предложение, которое можно сказать сразу. Оно должно быть полезно, даже если вы больше ничего не прочитаете.
- Тезисы. Три-четыре пункта, из которых складывается развёрнутый ответ. Это опора для разговора, а не текст для зачитывания.
- Пояснение. Когда уместно, где подводные камни, чем закончить. Читается, пока вы произносите тезисы.
Ни один из блоков не пишется как статья. Никаких вступлений «это отличный вопрос» и выводов «таким образом». Интервьюер слушает вас, а не модель.
Тот же вопрос, два ответа
Возьмём «чем Task отличается от Thread». Без контекста ассистент даёт учебное определение: Task как абстракция над работой, Thread как поток операционной системы, разница в планировании и стоимости. Верно и безлико.
С резюме, в котором есть сервис обработки платежей на .NET, интерпретатор отмечает, что вопрос теоретический, но пометка «есть релевантный опыт» остаётся. И в блоке пояснения появляется одна фраза: «в платёжном сервисе мы держали отдельный поток только под фоновую сверку с приоритетом, всё остальное шло через Task и async/await». Одно предложение, и ответ звучит как ваш.
Когда резюме нет
Соблазн для модели очевиден: придумать проект, который звучит убедительно. Мы это запретили. Если резюме не добавлено, а вопрос требует личного примера, ассистент оставляет в ответе место: «здесь ваш пример из практики». Пусть лучше подсказка будет неполной, чем вы расскажете о проекте, которого не было, и провалите первый же уточняющий вопрос.
Уточнения
«А как это масштабируется?» само по себе бессмысленно. Интерпретатор видит, что это продолжение, и основная модель получает предыдущий вопрос с ответом. Так ответ на уточнение продолжает мысль, а не начинает новую тему с нуля.
Что дальше
Следующий шаг: учиться на ваших правках. Если вы отредактировали резюме или несколько раз перезапрашивали ответ на один тип вопроса, это сигнал, какие шаблоны работают хуже. Пока мы собираем эти сигналы вручную, через раздел поддержки в кабинете, и будем рады примерам, где ответ прозвучал не по-вашему.


