Этот материал основан на текущей реализации ИИ-мок-собеседования IT-X. Примеры реплик ниже подготовлены для статьи. Они показывают принцип работы диалога; данные участников здесь не используются.
Задача: получить полезную обратную связь
Нам нужен был тренажёр, в котором кандидат объясняет решение и получает уточняющие вопросы. После сессии он должен понимать, какие темы повторить и что улучшить в аргументации.
Для этого разделили работу на два шага:
- Диалог. Интервьюер задаёт очередной вопрос с учётом настроек и предыдущих ответов.
- Разбор. Отдельный запрос оценивает весь разговор и формирует отчёт по темам.
В настройках кандидат выбирает трек и грейд. Дополнительно указывает стек и текст вакансии. При наличии подходящих вопросов в банке они используются как ориентиры для сессии.
Как ответ меняет следующий вопрос
Представим тренировку middle backend-разработчика:
Интервьюер: Как избежать повторного списания, если клиент повторяет запрос к платёжному API?
Кандидат: Передам ключ идемпотентности и сохраню результат. На повторный запрос верну прежний ответ.
Уточнение: Что произойдёт, если два запроса с одним ключом придут одновременно, пока результата ещё нет?
Уточнение проверяет конкретный пробел в объяснении: кандидат назвал повторное использование результата, но ещё не описал конкуренцию запросов. Для такой реакции следующий вызов модели получает историю разговора.
Само слово «адаптивный» ещё не доказывает качество интервью. Проверять нужно содержание уточнений: относятся ли они к ответу, раскрывают ли тему и соответствуют ли выбранному уровню. В гайде по подготовке с LLM есть сценарии для самостоятельной практики.
Практическая проблема: формат истории
В нашей реализации очередная реплика возвращается в небольшом JSON-объекте:
{
"message": "Что произойдёт при двух одновременных запросах?",
"done": false
}
Для интерфейса сохраняем человекочитаемый текст. Перед следующим обращением к модели предыдущие реплики интервьюера снова собираем в такой же JSON-формат. Это поддерживает единый формат примеров в истории.
Такой шаг появился после проблемы с продолжением диалога: текстовая история не совпадала с форматом, который ожидали от следующего ответа. Сериализацию истории закрепили отдельной проверкой в тестах.
В документации JSON Output провайдер рекомендует явно описать JSON-формат и предупреждает о возможном пустом содержимом. Описание Chat Completions также указывает на риск обрезанного ответа при достижении лимита токенов. Поэтому между ответом модели и отображением есть проверка формата и содержимого.
Что проверяем перед показом результата
В текущей реализации:
- разбираем JSON и проверяем, что реплика интервьюера непустая;
- ограничиваем длину текста и число ответов кандидата;
- проверяем и нормализуем структуру итогового отчёта;
- сохраняем завершённый разбор для повторного открытия;
- при повторном запросе завершения возвращаем сохранённый результат.
Разбор JSON в Go выполняется через encoding/json. Документация Unmarshal описывает проверку синтаксиса и типов. Содержательные проверки — например, пригодность текста отчёта — остаются задачей приложения.
Как выглядит полезный разбор
Итоговый отчёт содержит общую оценку готовности к выбранному грейду и отдельные темы. Для каждой темы есть удачные части ответа, недостающие детали и пример более полного объяснения. Затем — сильные стороны, пробелы и следующие шаги.
Для учебного ответа про идемпотентность следующий шаг может быть таким: разобрать атомарное создание операции и проверить повторный запрос во время её выполнения. Так кандидат получает конкретную задачу для практики.
Оценки в IT-X качественные: сильный, средний или слабый уровень. Они помогают выбрать темы подготовки. Для проверки готовности к реальному разговору полезно дополнить практику мок-собеседованием с инженером.
Что можно перенести в свой продукт
- Передавайте модели историю, необходимую для следующего шага.
- Разделяйте ведение разговора и оценку результата.
- Проверяйте формат и содержимое ответа до показа пользователю.
- Сохраняйте полезный результат, чтобы его можно было открыть снова.
- Превращайте обратную связь в конкретный следующий шаг.
Пример интерфейса и условия доступа — на странице ИИ-мок-собеседования. Перед тренировкой можно проверить описание своего опыта через ИИ-разбор резюме, а сложные вопросы обсудить с ментором.