Собеседование на англоязычном рынке · Interviewing for the English-speaking market · урок 4 · 13 мин

Портфолио-проект: AI-фича от идеи до production

Portfolio project: an AI feature from idea to production

ТемыСобеседование

Зачем

После урока у тебя будет бриф портфолио-проекта, который можно сделать за четыре недели и показать: RAG-приложение с одним agent tool, evals, README и демо. На собеседованиях в US и UK такой проект становится общей темой для system design и поведенческого раунда, а ссылка на репозиторий в резюме даёт hiring manager (нанимающему руководителю) доказательство, которое он может открыть сам.

Что ищет hiring manager

Сделать demo на LLM легко, сделать продукт трудно. Авторы «What We've Learned From A Year of Building with LLMs» пишут, что продукты часто застревают после demo, потому что команды недооценивают инженерную работу и оценку качества. Поэтому в портфолио смотрят не на красоту чата, а на признаки инженерного суждения:

Красные флаги: обёртка над API без единой метрики; только notebook; нет README; ключ API в истории git; огромный замысел, сделанный на треть. Маленький проект, доведённый до конца, сильнее большого незаконченного.

Бриф проекта

Задача. Ассистент, который отвечает на вопросы по документации открытого проекта (например, большого open-source framework с публичной документацией и подходящей лицензией) и умеет подготовить черновик issue (сообщения о проблеме), если ответа в документации нет.

Корпус. Бери только публичные документы с понятной лицензией: открытая документация, открытые государственные данные. Никаких документов работодателя или клиентов и никаких персональных данных: репозиторий публичный, и одна такая ошибка перечёркивает весь проект. Хороший корпус — 300–2 000 страниц с таблицами, версиями и перекрёстными ссылками: на нём видны настоящие проблемы chunking и retrieval.

Пользователь. Разработчик, который застрял и хочет ответ со ссылкой на нужный раздел, а не пересказ.

Функции. Ответ с citations (ссылками на конкретные фрагменты); честный отказ, если ответа нет; tool draft_issue, который формирует черновик и показывает его пользователю на подтверждение, но ничего не публикует сам.

Non-goals (что сознательно не делаем): авторизация пользователей, свой fine-tuning, мобильное приложение. Список non-goals показывает, что ты управляешь объёмом.

Архитектура. Ingestion документации с metadata (раздел, версия, URL) → hybrid search → reranker (модель, которая переупорядочивает найденное) → top-5 → LLM с инструкцией отвечать только по фрагментам → проверка формата и наличия citations → ответ. Отдельная ветка: router решает, отвечать или предложить черновик issue.

Evals — сердце проекта

Набор из 60 вопросов, размеченных вручную: - 40 вопросов, на которые документация отвечает, с указанием нужных фрагментов; - 10 вопросов, ответа на которые нет: правильное поведение — отказ и предложение issue; - 10 adversarial (враждебных): prompt injection в тексте вопроса и в специально подложенном документе.

Метрики: recall@5 для retrieval (нашёлся ли нужный фрагмент в первых пяти); groundedness (подтверждён ли ответ фрагментами) через LLM-as-judge, которого ты проверил на 30 ответах, размеченных вручную, и записал согласие; доля правильных отказов; для tool — конечное состояние (черновик создан, ничего не опубликовано) и pass^3 (задача решена во всех трёх прогонах); latency p50 и p95; стоимость одного ответа.

Пример строки результата в README (числа условные): «Hybrid search plus reranker raised recall@5 from 0.72 to 0.86; groundedness stayed at 0.91; cost per answer rose by 20%». Одна такая строка с методикой стоит больше десяти скриншотов.

Evals дешевле, чем кажется. Один прогон: 60 вопросов × 3 повтора = 180 вызовов по 3 500 tokens — около 630 000 tokens. По условной цене $1 за 1 млн input tokens это меньше $1 за прогон, плюс вызовы judge. Значит, прогонять набор после каждого изменения можно без оглядки на бюджет, и в README это стоит сказать.

Eval запускается в CI на каждый pull request, и результат виден в отчёте. Это та же фраза, что и на собеседовании: «the eval job blocks the merge».

README и демо

README читают 2–3 минуты, поэтому порядок важен: 1. Одна фраза: что это и для кого. 2. Ссылка на демо-видео на 2 минуты. 3. Схема архитектуры. 4. Как запустить: docker compose up и файл .env.example без настоящих ключей. 5. Таблица eval-результатов и команда, которая их воспроизводит. 6. Решения и компромиссы: 3–5 пунктов «выбрал X, потому что Y, отказался от Z». 7. Ограничения и что дальше.

Демо-видео показывает три сцены: удачный ответ со ссылкой; честный отказ с черновиком issue; провал, который поймал eval, и как ты его исправил. Третья сцена — самая сильная: она показывает процесс, а не удачу. Живая ссылка на приложение — плюс, но с лимитом расходов у провайдера модели.

План на четыре недели

Неделя Результат
1 корпус, ingestion, базовый RAG, 60 размеченных вопросов
2 eval harness, CI, первый разбор ошибок по traces
3 одно улучшение, измеренное на eval; tool с подтверждением; тесты injection
4 README, демо, развёртывание, короткий текст о том, что узнал

Каждую неделю кончай коммитом с работающим состоянием: если время кончится, у тебя всё равно будет законченный, хоть и меньший, проект.

Последнее — как рассказывать о проекте. На system design раунде он становится твоим примером: требования, архитектура, eval, компромиссы. На поведенческом — STAR-историей о провале, найденном через eval. Подготовь обе версии заранее и ещё одну, короткую, на 60 секунд для вопроса «tell me about a recent project»: задача, одна цифра из eval-таблицы, один найденный провал, одно решение, которое ты принял бы иначе.

Шесть навыков, шесть маленьких проектов

В коротких видео популярна подача «one skill = one project»: по проекту на каждый навык. Как список тренировок она полезна; как портфолио — нет: шесть недоделанных demo слабее одного законченного проекта. Бери их упражнениями на выходные и доводи каждое до одной цифры в README.

Навык Проект Цифра, без которой он не засчитан Уроки
RAG hybrid search (BM25 + vectors, RRF) + reranker + citations recall@5 до и после reranker a3-2, a3-4
Agents граф plan → act → reflect, typed tools, подтверждение pass^3 на 10 задачах, ноль действий без подтверждения a2-3, a2-8
LLMOps semantic cache перед моделью доля попаданий и доля ложных попаданий a7-6
Evals regression set из production traces сколько регрессий поймано до выпуска a5-5
Fine-tuning QLoRA на своём dataset метрика задачи против базы, на merged-модели a6-2, a6-6
Guardrails text-to-SQL с проверкой SQL ноль записей в базу на наборе атак, точность ответов a4-2

Две поправки к исходной подаче. Обещание «semantic cache режет счёт вдвое» верно только при доле попаданий около 50 % и молчит о ложных попаданиях. А в text-to-SQL запрет опасных запросов парсером — первый слой: гарантию дают права базы и read-only replica.

Схема

Термины · Key terms

hiring manager
руководитель, который решает, кого нанять в команду
error analysis
разбор провалов по traces с группировкой по причинам
citation
ссылка на фрагмент источника, на котором основан ответ
non-goals
то, что проект сознательно не делает
recall@5
доля вопросов, где нужный фрагмент попал в первые пять
groundedness
подтверждён ли ответ найденными фрагментами
pass^3
задача решена во всех трёх прогонах
eval harness
код, который прогоняет набор задач и считает метрики
README
главная страница репозитория: что, зачем, как запустить, результаты
p95 latency
задержка, которую не превышают 95% запросов

Сделай сам

Напиши свой бриф на пять строк: задача, пользователь, корпус документов (с лицензией), один tool и три non-goals. Затем одна строка: какая метрика будет главной в таблице README и почему.

Обсуди с тьютором: покажи бриф и спроси, что в нём слишком велико для четырёх недель и что стоит вырезать.

Проверь себя · ответ под вопросом

1Почему eval-таблица в README важнее красивого интерфейса?
Интерфейс показывает, что приложение запускается, а eval — что ты умеешь измерять качество и улучшать его. Именно этого не хватает большинству demo. Воспроизводимая команда для прогона показывает ещё и инженерную аккуратность.
2Зачем в наборе вопросы без ответа и враждебные вопросы?
Они проверяют поведение, которое ломается первым: выдумывание ответа и подчинение внедрённой инструкции. Без них набор измеряет только удачные случаи. Доля правильных отказов и устойчивость к injection — отдельные строки результата.
3Почему демо должно показывать провал?
Провал, пойманный eval, и его исправление показывают процесс работы, а не удачный дубль. Hiring manager видит, что ты находишь ошибки системно. Это же готовая STAR-история для поведенческого раунда.

Interview questions · US / UK

1Walk me through a project you built end to end.
Strong answer: one-line problem and user; architecture with reasons for the key choices; how quality was measured (eval set, metrics by layer, validated judge); one failure found through error analysis and the measured fix; production habits (CI eval gate, tracing, config, cost); honest limitations and next steps.
2How did you know your RAG app was actually good?
Strong answer: a labelled set including unanswerable and adversarial questions; recall@k for retrieval separately from groundedness for generation; judge checked against hand labels with agreement reported; refusal rate; latency and cost; numbers before and after each change rather than impressions.
3Follow-up: if you had another month, what would you change first?
Strong answer: picks one item driven by the error analysis (the biggest failure category), not a new feature; says how it would be measured; mentions a real limitation (eval set size, single language, no user feedback loop) and how to address it.

Ключевые фразы · Say it aloud

Материалы