Собеседование на англоязычном рынке · Interviewing for the English-speaking market · урок 2 · 14 мин
System design для LLM-приложения
System design for an LLM application
Зачем
После урока ты проведёшь system design раунд для LLM-приложения по семи шагам: requirements → architecture → data → eval → safety → cost → rollout. Этот раунд — 45–60 минут у доски или в общем документе — есть почти в каждом цикле собеседований на AI engineer в US и UK; оценивают не «правильную» схему, а то, как ты собираешь требования и объясняешь компромиссы.
Задача и план на 45 минут
Возьмём типичное условие: «Design an AI support assistant for a software company: it answers customer questions from the documentation and can check order status and open a support ticket». Время делим так: 5 минут requirements, 10 минут общая архитектура, 15 минут углубление в одну-две части по выбору собеседующего, 10 минут eval, safety и cost, 5 минут rollout и вопросы. Вслух объяви план в начале — это показывает, что ты ведёшь разговор.
Requirements и architecture
1. Requirements: сначала цифры и границы. Functional requirements (что система делает): отвечать по базе из 20 000 документов, смотреть статус заказа, открывать ticket, передавать разговор человеку. Non-functional (с какими свойствами): нагрузка, задержка, языки, приватность, бюджет. Задай вопросы и запиши допущения:
- 5 000 разговоров в день по 4 реплики — около 20 000 вызовов модели в день;
- TTFT (time to first token, время до первого token ответа) по p95 (95-му перцентилю) — не больше 2 с;
- два языка, английский и испанский;
- в разговорах есть PII (персональные данные), их нельзя хранить в logs открытым текстом;
- что считается провалом: неверный ответ о возврате денег, ticket не на того клиента.
Последний пункт важнее остальных: от него зависят eval и safety.
2. Architecture: простое, потом сложное. Начни с самого простого, что может работать, и добавляй части только с причиной. Anthropic в «Building effective agents» советует «finding the simplest solution possible»: workflow (заранее заданный путь в коде) там, где путь известен, и agent (модель сама выбирает шаги) только там, где шаги нельзя предсказать.
Путь запроса: клиент → API gateway (аутентификация, rate limits — ограничения частоты запросов) → router (классификатор намерения: вопрос по документации, действие, передача человеку) → для вопросов RAG: hybrid search (поиск по словам плюс по embeddings — векторам смысла) → reranker → top-5 фрагментов → LLM → output guardrails (проверки ответа) → клиент. Для действий — tools: get_order_status (только чтение, заказ берётся из сессии клиента) и create_ticket (запись, с подтверждением и idempotency key — ключом, который не даёт создать ticket дважды при повторе запроса). Рядом — LLM gateway (единая точка доступа к моделям с fallback — запасной моделью — и учётом расходов), cache и traces для каждого шага.
Data и eval
3. Data: откуда знания и как они обновляются. Ingestion pipeline (конвейер загрузки): документы режутся на chunks (фрагменты) по структуре, с metadata — источник, версия, дата действия, кому доступно. Обновление — по change feed (потоку изменений): новые, изменённые и удалённые документы; удаление так же важно, как добавление. Второй источник данных — история tickets: из неё берут реальные вопросы для eval, предварительно обезличив.
4. Eval: как поймёшь, что работает. Offline: golden set (размеченный набор) из 200 реальных вопросов по двум языкам и 50 задач с действиями. Метрики по слоям: retrieval — recall@5 (нашёлся ли нужный документ в первых пяти); generation — groundedness (подтверждён ли ответ источником), его оценивает LLM-as-judge, проверенный на 100 ответах, размеченных людьми; действия — конечное состояние (создан ли ticket нужному клиенту), детерминированно. Для действий считай pass^k (доля задач, решённых во всех k прогонах): клиенту нужна стабильность, а не удача. Online: доля разговоров без передачи человеку, повторные обращения, оценки клиентов и еженедельная выборка разговоров, которую читают люди.
Safety и cost
5. Safety: что может пойти не так.
- Prompt injection: инструкция в документе или в тексте ticket. Защита — tools с минимальными правами, данные отделены от инструкций, действие с последствиями — только с подтверждением.
- Excessive agency (лишние полномочия агента): у ассистента нет tool для возврата денег — значит, он не может его сделать при любом prompt.
- PII: redaction в logs, срок хранения, доступ к traces по ролям.
- Output guardrails: формат, запрещённые темы, обещания вне политики → передача человеку.
6. Cost: арифметика на доске. Цены меняются; возьми условные для арифметики и скажи об этом: $1 за 1 млн input tokens и $5 за 1 млн output tokens. На вызов — 3 000 tokens входа (system prompt, история, 5 фрагментов) и 300 tokens ответа.
- Input: 20 000 × 3 000 = 60 млн tokens в день → $60.
- Output: 20 000 × 300 = 6 млн tokens в день → $30.
- Итого около $90 в день, около $2 700 в месяц, около $0,018 за разговор.
Рычаги: prompt caching (повторное использование общего начала prompt), маленькая модель для простых вопросов через router, меньше фрагментов в context, exact cache для частых одинаковых вопросов. Каждый рычаг проверяют на eval: дешевле, но не хуже.
Rollout и компромиссы
7. Rollout: как выпустить без вреда. Eval gate в CI блокирует merge → внутреннее тестирование сотрудниками → shadow (новая версия отвечает параллельно, клиент видит старую) → canary на 5% трафика с автоматическим rollback при падении метрик → полный выпуск за feature flag (переключателем). Мониторинг: TTFT и TPOT (time per output token), доля ошибок, стоимость разговора, доля передач человеку, по каждому языку отдельно.
Компромиссы, которые стоит назвать вслух. Собеседующий ждёт не одной правильной схемы, а осознанного выбора. Workflow или agent: workflow предсказуем и дешевле, agent гибче, но дороже и труднее в оценке. RAG или длинный context: длинный context проще, но дороже на каждый вызов и тонет в лишнем тексте, а RAG требует индекса и его обновления. Reranker повышает точность и добавляет задержку. Judge масштабируется, люди точнее, поэтому judge проверяют по человеческой разметке. Назови выбор, причину и что заставит его пересмотреть: «If retrieval recall stays below target, I'd revisit chunking before changing the model».
Схема
Термины · Key terms
- functional requirements
- что система должна делать
- non-functional requirements
- нагрузка, задержка, приватность, бюджет
- TTFT
- время до первого token ответа
- p95
- значение, которое не превышают 95% запросов
- router
- классификатор, который выбирает путь или модель для запроса
- idempotency key
- ключ, который не даёт выполнить действие дважды
- golden set
- размеченный набор вопросов с правильными ответами
- groundedness
- подтверждён ли ответ найденными источниками
- excessive agency
- у агента больше прав, чем нужно задаче
- prompt caching
- повторное использование общего начала prompt со скидкой
- canary
- выпуск на малую долю трафика с автоматическим откатом
Сделай сам
За 5 минут на бумаге: требования и cost для другой задачи — «internal assistant that answers HR policy questions for 3,000 employees». Запиши три вопроса, которые задашь собеседующему, одно допущение о нагрузке и расчёт стоимости в день по условным ценам урока.
Обсуди с тьютором: покажи расчёт и попроси тьютора сыграть собеседующего, который спрашивает: «Now traffic grows 10×. What breaks first?»
Проверь себя · ответ под вопросом
1Почему system design начинают с requirements, а не со схемы?
2Зачем в примере router перед RAG и tools?
3Как посчитать стоимость в день на доске?
Interview questions · US / UK
1Design an AI support assistant that answers questions from our docs and can open tickets. Where do you start?
2How would you evaluate this system before and after launch?
3Follow-up: the CFO says the bill is too high. What do you change first?
Ключевые фразы · Say it aloud
- Let me start with requirements and what counts as failure.Начну с требований и того, что считается провалом.
- I'll write down my assumptions.Запишу свои допущения.
- I'd start with the simplest thing that could work.Начну с самого простого, что может работать.
- The tool only reads the order from the customer's session.Tool берёт заказ только из сессии клиента.
- Back-of-the-envelope: about ninety dollars a day.Прикидка на салфетке: около девяноста долларов в день.
- Every cost cut has to pass the same eval.Каждое удешевление проходит тот же eval.
- Shadow first, then a canary with automatic rollback.Сначала shadow, потом canary с автоматическим откатом.
Материалы
- Chip Huyen — Building a Generative AI Platform — компоненты по порядку: context, guardrails, router, cache, observability (30 минут)
- Anthropic — Building effective agents — workflow или agent и почему начинать с простого (20 минут)
- What We've Learned From A Year of Building with LLMs — практика evals, RAG, demo против продукта (40 минут, можно по разделам)
- OWASP LLM06:2025 Excessive Agency — права tools в коде (8 минут)