Перейти к основному содержимому

Предпосылки и входная диагностика

Курс рассчитан на человека, который уже пишет программы, но может впервые работать с вероятностными моделями. Здесь не требуется заранее знать все фреймворки, две экосистемы языков и устройство GPU. Требуется уметь отличать предположение от проверенного результата.

Результат главы

После диагностики вы сможете выбрать точку входа, назвать пробелы в своей подготовке и проверить их маленькими задачами. Артефакт — таблица «навык → моя проверка → результат → следующий шаг». Не ставьте себе оценку только по знакомым терминам.

Место курса в AI Engineering

AI Engineering охватывает приложения с моделями: классификацию, extraction, поиск, генерацию и системы с инструментами. Агентский runtime нужен там, где следующий шаг зависит от решения модели. Для фиксированного маршрута часто достаточно обычного workflow.

В этом учебнике три трека: архитектура agentic-систем, Applied ML и отдельная практика оператора. Названия профессий не задают жёстких границ: разработчик может заниматься и API, и обучением classifier, и эксплуатацией. Маршрут ниже — учебная эвристика, а не универсальный стандарт найма.

Наивное начало и причина провала

Разработчик подключает модель, получает убедительный ответ и добавляет инструмент возврата денег. При timeout он повторяет запрос. Клиент получает два возврата, а тест «ответ содержит слово выполнено» остаётся зелёным.

Проблема возникла раньше сложной агентности: не определены результат операции, поведение при неопределённом исходе и способ проверки. Эти навыки нужны независимо от выбранной модели.

Что проверить до runtime

ОбластьМаленькая задачаКритерий достаточной базыЕсли пока трудно
Язык и типыПредставить результат чтения заказа: найден, отсутствует, ошибкаВетки различаются явно; ошибка не маскируется пустым заказомРазобрать Model I/O и discriminated union
АсинхронностьНарисовать timeline: запрос отправлен, сервер записал результат, клиент получил timeoutTimeout не доказывает отсутствие эффекта; повтор требует 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. Это источники механики транзакций и метрик. Порядок обучения и критерии диагностики — эвристики курса, а не требования этих проектов.