Предпосылки и входная диагностика
Курс рассчитан на человека, который уже пишет программы, но может впервые работать с вероятностными моделями. Здесь не требуется заранее знать все фреймворки, две экосистемы языков и устройство GPU. Требуется уметь отличать предположение от проверенного результата.
Результат главы
После диагностики вы сможете выбрать точку входа, назвать пробелы в своей подготовке и проверить их маленькими задачами. Артефакт — таблица «навык → моя проверка → результат → следующий шаг». Не ставьте себе оценку только по знакомым терминам.
Место курса в AI Engineering
AI Engineering охватывает приложения с моделями: классификацию, extraction, поиск, генерацию и системы с инструментами. Агентский runtime нужен там, где следующий шаг зависит от решения модели. Для фиксированного маршрута часто достаточно обычного workflow.
В этом учебнике три трека: архитектура agentic-систем, Applied ML и отдельная практика оператора. Названия профессий не задают жёстких границ: разработчик может заниматься и API, и обучением classifier, и эксплуатацией. Маршрут ниже — учебная эвристика, а не универсальный стандарт найма.
Наивное начало и причина провала
Разработчик подключает модель, получает убедительный ответ и добавляет инструмент возврата денег. При timeout он повторяет запрос. Клиент получает два возврата, а тест «ответ содержит слово выполнено» остаётся зелёным.
Проблема возникла раньше сложной агентности: не определены результат операции, поведение при неопределённом исходе и способ проверки. Эти навыки нужны независимо от выбранной модели.
Что проверить до runtime
| Область | Маленькая задача | Критерий достаточной базы | Если пока трудно |
|---|---|---|---|
| Язык и типы | Представить результат чтения заказа: найден, отсутствует, ошибка | Ветки различаются явно; ошибка не маскируется пустым заказом | Разобрать Model I/O и discriminated union |
| Асинхронность | Нарисовать timeline: запрос отправлен, сервер записал результат, клиент получил timeout | Timeout не доказывает отсутствие эффекта; повтор требует operation ID и сверки | Пройти Tools and effects до параллельных агентов |
| HTTP и доверие | Указать источник tenant ID при вызове инструмента | Identity берётся из доверенного execution context, не из аргумента модели | Начать с Guardrails и схемы границ доверия |
| SQL и состояние | Спроектировать запись операции с уникальным ID и атомарным изменением баланса | Понятны транзакция, уникальность, конкуренция и ограниченность локальной транзакции при внешнем API | Разобрать транзакции PostgreSQL, затем durability |
| Тестирование | Опровергнуть сообщение «возврат выполнен», когда инструмент не вызывался | Проверка падает по отсутствию outcome, а не по формулировке ответа | Запустить лабораторию ниже и прочитать grader |
| Git | В учебной копии сделать маленькое изменение, прочитать diff и отменить именно его | Понимаете состав изменения и способ восстановления; чужие изменения сохранены | Повторить цикл на одном Markdown-файле до работы с лабораториями |
| Окружение и Linux/shell | Запустить команду из нужного каталога, проверить exit code и версии | Отличаете исходники, зависимости и артефакты; секреты не попадают в Git/logs | Начать с команд ниже и README лабораторий |
SQL/асинхронность можно подтягивать по ходу чтения. Если пока не удаётся самостоятельно запустить программу и изменить маленький тест, сначала укрепите базу программирования: главы runtime предполагают этот навык.
Первый запуск и доказательство
Для TypeScript capstone нужен Node.js 24+. Команды из корня репозитория:
node --version
npm ci
npm run demo:course
npm run test:course:pattern -- "persuasive final answer"
Первичная установка зависимостей может обращаться в сеть. Сам demo и тест не требуют model API: ScriptedModel выдаёт фиксированные решения. Это проверка механики runtime, а не качества LLM.
Последний тест должен пройти, потому что grader отвергает ложное сообщение об успешном возврате. Найдите проверку нулевого grade.score и объясните, почему зелёный тест в данном случае означает корректный отказ доверять ответу.
Для Python-лабораторий нужны Python 3.12 и uv 0.12.7. Они понадобятся в упражнениях с метриками и retrieval:
uv --version
uv sync --directory examples/helios_ml --frozen
npm run test:ml
Первые метрики на четырёх случаях
Пусть classifier определяет, нужно ли передать обращение специалисту. Positive означает «передача нужна». Разметка и предсказание:
| Обращение | Передача нужна | Модель направила | Результат |
|---|---|---|---|
| A | Да | Да | TP: верная передача |
| B | Нет | Да | FP: лишняя передача |
| C | Да | Нет | FN: пропущенная передача |
| D | Нет | Нет | TN: верная самостоятельная обработка |
Precision отвечает «какая доля передач была нужна»: TP / (TP + FP) = 1/2. Recall отвечает «какую долю нужных передач нашли»: TP / (TP + FN) = 1/2. F1 — гармоническое среднее precision и recall; здесь тоже 1/2. Это стандартные определения, а выбор positive-класса принадлежит вашей задаче. scikit-learn: classification metrics.
Проверьте вручную, затем исполните из корня:
uv run --directory examples/helios_ml --frozen python - <<'PY'
from helios_ml.metrics import threshold_metrics
for threshold in (0.5, 0.3):
report = threshold_metrics([1, 0, 1, 0], [0.9, 0.8, 0.4, 0.1], threshold=threshold)
print(threshold, report.precision, report.recall, report.f1)
PY
Ожидание: при 0.5 получаем 0.5, 0.5, 0.5; при 0.3 — примерно 0.667, 1.0, 0.8. Низкий threshold уменьшил пропуски, но увеличил число передач. Решение зависит от цены пропуска и доступности специалистов, а не только от F1. Четыре числа — учебный пример, не оценка production-качества.
Выбор маршрута
| Маршрут | Что получаем | Чем платим | Когда не подходит |
|---|---|---|---|
| Уже уверенный backend-разработчик | Быстрый переход к model/runtime contracts | Самостоятельно закрываем пробелы ML | Не удаётся объяснить timeout и повтор операции |
| Вводные главы и диагностика | Меньше непонятных терминов в дальнейшем | Более медленный старт | Вся диагностика уже воспроизводится без подсказок |
| Сразу Applied ML | Практика данных и метрик на небольших моделях | Агентский lifecycle изучается отдельно | Цель — безопасные внешние действия и recovery |
Не требуется одинаково глубоко знать Python и TypeScript. Для основного runtime достаточно читать TypeScript; для ML — освоить functions, dataclasses, массивы и pytest в Python. Градиенты и обучение transformer не являются входным экзаменом.
В Helios эта база нужна для статуса заказа, возврата и cargo policy. Реальный аналог — support-система marketplace: транспорт и названия сущностей меняются, а проверка исхода операции остаётся.
Self-check и следующий шаг
- Можете ли вы объяснить различие timeout и отказа операции?
- Чем подтверждается результат независимо от final text?
- Что означают positive, FP и FN именно в вашем продукте?
- Почему больше recall может потребовать больше ручной работы?
- Какие два пробела вы закрываете сейчас, а какие не мешают следующей главе?
Сохраните результаты диагностики и переходите к инженерному минимуму LLM, затем к ментальным моделям. Вернитесь к своей таблице после первого самостоятельного изменения Helios.
Источники и границы
Проверено 2026-09-07: PostgreSQL: Transactions, scikit-learn: model evaluation. Это источники механики транзакций и метрик. Порядок обучения и критерии диагностики — эвристики курса, а не требования этих проектов.