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

План: как стать AI-инженером

📖 Учебник по главам: book/README.md

Для кого: разработчик, который уже программирует на каком-то языке и знает основы git, SQL и командной строки. Python, опыт с моделями и ML не нужны. Нагрузка: ~8–10 часов в неделю → ~4–5 месяцев. Интенсивный вариант: 4 часа в день → ~2,5 месяца (см. ниже). Принцип: 20% теории, 80% проектов. Каждый этап заканчивается проектом, который можно показать.

Курс проходится на дешёвых и бесплатных моделях; Claude и OpenAI остаются в главах «для сравнения».

Что Где Для чего
DeepSeek API (deepseek-flash, deepseek-v4-pro) облако, копейки основная облачная модель; судья в evals — deepseek-v4-pro. Серверы в Китае: только публичные тексты, база знаний магазина и демо-база
Ollama (qwen3:4b по умолчанию, эмбеддинги bge-m3) локально, бесплатно персональные данные клиентов, рабочий код и всё приватное (в том числе снимок базы магазина); эмбеддинги и реранкер. Запуск с OLLAMA_NO_CLOUD=1
OpenRouter (глава 2.4) облако, один ключ ко многим моделям сравнение моделей, бесплатные :free модели, фолбэки
Claude / OpenAI облако по желанию, для сравнения

Железо (локальные модели по объёму памяти): 8 ГБ → модели 3–4B; 16 ГБ → 7–8B; 32 ГБ и больше → 14B и крупнее. Курс рассчитан на минимум: qwen3:4b для чата, bge-m3 для эмбеддингов.

Приватность: персональные данные клиентов, рабочий код и всё, что нельзя показывать посторонним, никогда не уходят в облачные модели — их обрабатывает локальная модель. Облаку достаются публичные тексты, база знаний магазина и демо-база. Правило касается любого облачного провайдера, не только DeepSeek.

Нумерация: главы пронумерованы «неделя.порядок» (1.1, 1.2, 2.1 …) — как в оглавлении учебника.

Что важно знать про DeepSeek и Ollama с первого дня

Заголовок раздела «Что важно знать про DeepSeek и Ollama с первого дня»
  • DeepSeek совместим с OpenAI SDK: меняются только base_url, ключ и имя модели. У Ollama то же самое через http://localhost:11434/v1.
  • У DeepSeek нет API эмбеддингов → эмбеддинги и реранкер всегда локально (Ollama / sentence-transformers).
  • Кэш у DeepSeek автоматический и без наценки; у Claude — явный cache_control.
  • Structured output: у DeepSeek только JSON mode (json_object), у Ollama — строгая схема через format.
  • Режим размышления DeepSeek включён по умолчанию: temperature в нём игнорируется, с инструментами нужно возвращать reasoning_content, принудительный tool_choice даёт 400.
  • Цена DeepSeek зависит от часа: вне пика (вечер и выходные по UTC) вдвое дешевле — длинные прогоны evals удобно запускать тогда.
  • У Ollama контекст по умолчанию 4096 токенов и молча обрезается — для RAG и агентов нужно увеличивать num_ctx.
  • Факты на ноябрь 2026 — актуальное стоит проверять в документации DeepSeek и Ollama.

Интенсивный график: 4 часа в день, 5 дней в неделю

Заголовок раздела «Интенсивный график: 4 часа в день, 5 дней в неделю»

~20 часов в неделю, ~200 часов всего, 11 недель (включая неделю запаса на праздники, болезни и отставание).

Время Что делать
1 час Теория: глава учебника, документация, видео
2,5 часа Практика: упражнение или проект (AI генерирует — мы читаем, правим, спрашиваем «почему так»)
0,5 часа Заметки: что поняли, что не получилось, вопросы на завтра (папка notes/ в репозитории для учёбы)

Пятница — последний час на ревью недели: что сделано, что переносится, коммит на GitHub. Выходные — отдых. Без них через месяц выгорание. Долгие прогоны на DeepSeek удобно ставить на выходные — это вне пика, дешевле.

Неделя Главы Задачи недели Результат
1 1.1–1.7 Пн–Ср: Python на уровне уверенного чтения (отличия от привычного языка, uv, Pydantic, async), видео Карпатого, ключ DeepSeek, установка Ollama (с проверкой подписи). Чт–Пт: сырой API DeepSeek и Ollama, токены, режим размышления, стоимость Скрипт сравнения ответов и цены запроса
2 2.1–2.7 Промптинг, structured output (JSON mode DeepSeek vs format Ollama), обзор моделей, OpenRouter, tool calling, ретраи и кэш Извлечение JSON из 20 текстов; модель вызывает 3 функции
3 3.1–3.4 Проект 1: Telegram-бот «аналитик магазина» для владельца на Ollama (только чтение, снимок базы); DeepSeek — только на демо-базе; логирование токенов и стоимости Проект 1 на GitHub
4 4.1–4.4 Эмбеддинги руками (numpy) на локальной модели bge-m3, chunking, sqlite-vec, загрузка базы знаний магазина kb/ Поиск по базе знаний работает
5 5.1–5.5 Переформулировка запроса, гибридный поиск + BM25, локальный реранкер, ассистент поддержки с ответами со ссылками на раздел базы знаний (генерация — DeepSeek); версия на LlamaIndex Проект 2 на GitHub
6 6.1–6.5 Статьи про evals, синтетические вопросы, набор из 50–100 вопросов, скрипт оценки (судья — deepseek-v4-pro), Langfuse Cloud / promptfoo Evals выдают первую цифру
7 7.1 Запас / праздники. Догнать хвосты или отдыхать —
8 8.1–8.5 Статистика evals, эксперименты: chunking A/B, qwen3:4b vs deepseek-flash, с реранкером и без; ручной разбор ошибок Проект 3 (таблица экспериментов)
9 9.1–9.5 «Building effective agents», workflow-паттерны, цикл агента руками, prompt injection, свой MCP-сервер (только чтение, хост — Ollama) MCP-сервер к базе магазина (только чтение)
10 10.1–10.4 Память агента, агент-разборщик заказов (Ollama на снимке базы с данными клиентов, DeepSeek — только на демо-базе), фреймворки, evals на 20 случаях Проект 4 на GitHub
11 11.1–11.5 Docker, кэш DeepSeek vs Claude, бюджеты (баланс DeepSeek), фолбэк DeepSeek → OpenRouter → Ollama, трейсинг и стоимость ответа, свои evals на локальной модели, LoRA-пример Сравнение облачной и локальной модели в цифрах
  • Конец недели 3 — первый проект работает и лежит на GitHub. Если нет — сократить теорию, но не пропускать проект.
  • Конец недели 8 — есть цифры из evals. Это главный артефакт для собеседований.
  • Конец недели 11 — 4 проекта и сравнение облачной и локальной модели в цифрах.
  • DeepSeek: весь курс — порядка нескольких долларов (оценка; прогон 60 вопросов evals ≈ $0,30–0,60). Баланс стоит пополнять маленькими суммами — при нуле API отвечает 402, это и есть потолок расходов.
  • Ollama, sentence-transformers, sqlite-vec, promptfoo: бесплатно.
  • Claude / OpenAI: по желанию, $5–10 на сравнения в конце курса.

Разработчик, который строит продукты поверх готовых моделей (GPT, Claude, Gemini, DeepSeek, Qwen, Llama): интегрирует LLM в приложения, делает RAG, агентов, измеряет качество (evals) и доводит всё до продакшена — с контролем стоимости, латентности, приватности и безопасности. Это в первую очередь софтверная инженерия, а не математика. Умение работать с разными провайдерами и сравнивать их на своих evals — отдельный плюс.


  • Подтянуть Python до уверенного чтения: типы, async/await, виртуальные окружения, uv, pydantic.
  • Завести ключ DeepSeek, пополнить на $2–5.
  • Установить Ollama только с официального сайта (на macOS перед первым запуском проверить подпись: codesign -dv и spctl -a -vv; для других систем — официальная инструкция). Скачать qwen3:4b и bge-m3.
  • (Для сравнения, по желанию) ключи Anthropic Console и OpenAI Platform.
  • Посмотреть Intro to Large Language Models — Андрей Карпатый (1 час).
  • (Опционально) Neural Networks — 3Blue1Brown — визуальная интуиция, как работают нейросети и трансформеры.

  • Токены, контекстное окно, temperature, top_p, системный промпт; режим размышления (reasoning) и как он меняет параметры.
  • Промптинг: роли, few-shot примеры, XML/Markdown-структура, chain-of-thought.
  • Structured output — модель возвращает валидный JSON по схеме (DeepSeek: JSON mode; Ollama: format со схемой; Claude/OpenAI: строгие схемы).
  • Tool calling — модель вызывает наши функции.
  • Стриминг ответов, ретраи, rate limits (у DeepSeek — лимит одновременных запросов), расчёт стоимости запроса с учётом кэша и часа пик.
  • Кэширование промптов — автоматическое у DeepSeek, явное у Claude.
  • OpenRouter — один API ко многим моделям, сравнение моделей.
Неделя Тема Упражнение
1 Сырой API DeepSeek и Ollama, параметры, стоимость Скрипт: один вопрос с разными настройками, посчитать токены и цену (с кэшем и без)
2 Промптинг, structured output, OpenRouter Извлечь из 20 неструктурированных текстов JSON по Pydantic-схеме; одна задача через 4–5 моделей OpenRouter
3 Tool calling Модель вызывает 2–3 функции (курс валют, калькулятор, время)
4 Проект этапа См. ниже
  • Бот для владельца интернет-магазина «Полка» отвечает на вопросы о заказах и продажах («какая выручка за неделю», «какие заказы ещё не отправлены», «как смотрят лампу „Свет“»).
  • Модель через tool calling вызывает только читающие функции: get_open_orders, get_sales, get_product_interest, get_recent_orders.
  • ⚠️ Никаких функций, которые меняют заказ, оформляют возврат или выдают промокод. Работать со снимком базы (VACUUM INTO).
  • 🔒 В снимке базы есть персональные данные клиентов — только локальная модель Ollama (qwen3:4b). DeepSeek и другие облачные модели — только на демо-базе без персональных данных. Проверка политики данных — прямо в коде.
  • Логировать каждый запрос: токены, стоимость, время ответа.

  • Эмбеддинги, косинусное сходство. Эмбеддинги — локально (Ollama bge-m3 или sentence-transformers): у DeepSeek их нет.
  • Chunking: по размеру, по структуре документа, с перекрытием.
  • Векторные БД: начать с sqlite-vec (знакомый SQLite) или pgvector; посмотреть Qdrant.
  • Переформулировка запроса, гибридный поиск (вектор + BM25), реранкинг (локальный cross-encoder — rerank-эндпоинта нет ни у DeepSeek, ни у Ollama).
  • Генерация ответа — DeepSeek (база знаний магазина публичная, её можно отправлять; сообщения реальных клиентов — только локально).
  • Типичные причины, почему RAG ошибается, и как их чинить.
Неделя Тема Упражнение
1 Эмбеддинги Посчитать эмбеддинги 100 фраз локальной моделью, найти ближайшие руками (numpy)
2 Chunking + векторная БД Загрузить базу знаний магазина, сравнить 3 стратегии chunking
3 Гибридный поиск, реранкинг Добавить BM25 и локальный реранкер, сравнить выдачу
4 Проект этапа См. ниже

Проект 2: ассистент поддержки по базе знаний магазина

Заголовок раздела «Проект 2: ассистент поддержки по базе знаний магазина»
  • Собрать базу знаний магазина kb/ (доставка, оплата, возвраты, гарантия, промокоды, товары) — Markdown-страницы, источник правды.
  • Ассистент отвечает на вопросы клиентов («можно ли вернуть вскрытый чай?», «какая гарантия на LAMP-LIGHT-MINI?») со ссылкой на раздел базы знаний; если ответа в базе нет — честно говорит об этом и передаёт вопрос человеку.
  • Эмбеддинги и реранкер — локально, генерация — DeepSeek; работает и полностью офлайн на Ollama.
  • Версия 1 — без фреймворков, руками. Версия 2 — на LlamaIndex. Сравнить.

Этап 3. Evals — оценка качества (2–3 недели) ⭐ самый важный

Заголовок раздела «Этап 3. Evals — оценка качества (2–3 недели) ⭐ самый важный»
  • Как собрать тестовый набор: вопрос → эталонный ответ / критерии.
  • Метрики RAG: retrieval (нашёлся ли нужный кусок), faithfulness (не выдумал ли), answer relevance.
  • LLM-as-judge и его ограничения (bias, нестабильность, предпочтение «своих»). Судья — модель сильнее проверяемой: deepseek-v4-pro без режима размышления; локальная 4B-модель судьёй не годится.
  • Статистика: шум, размер выборки, когда улучшение настоящее.
  • Регрессионное тестирование: поменяли промпт/модель → прогнали → сравнили.
  • Анализ ошибок вручную: читать реальные ответы, а не только смотреть на цифры.
  • Hamel Husain: Your AI Product Needs Evals — обязательно
  • Hamel Husain — блог — много практики по evals
  • Eugene Yan — блог — паттерны LLM-систем, evals
  • Langfuse — трейсинг и evals; при 8 ГБ памяти проще Langfuse Cloud (только для публичных данных: база знаний и набор вопросов), self-hosted требует больше ресурсов
  • promptfoo — тестирование промптов из командной строки, есть провайдеры deepseek: и ollama:

Проект 3: evals и эксперименты для ассистента поддержки

Заголовок раздела «Проект 3: evals и эксперименты для ассистента поддержки»
  • Набор из 50–100 вопросов клиентов с эталонами (включая ловушки: архивные правила возврата, похожие товары, вопросы без ответа в базе).
  • Скрипт, который выдаёт оценку (retrieval + качество ответа) и стоимость прогона.
  • Таблица экспериментов: «chunking A vs B», «qwen3:4b vs deepseek-flash», «с реранкером / без» — с цифрами качества, стоимости и латентности.
  • Это главный материал для портфолио и собеседований.

  • Цикл агента: думает → вызывает инструмент → смотрит результат → повторяет.
  • Workflow vs агент: когда хватает простого пайплайна (чаще всего).
  • MCP (Model Context Protocol) — написать свой MCP-сервер; хост для снимка базы с данными клиентов — мост к Ollama.
  • Фреймворки: LangGraph, OpenAI Agents SDK, Claude Agent SDK — и как они работают с DeepSeek и Ollama.
  • Слабые места маленьких локальных моделей в агентах: 3–5 простых инструментов, плоские схемы, лимит шагов, проверки в коде.
  • Безопасность: prompt injection, минимальные права инструментов, подтверждение человеком опасных действий; облачный провайдер — тоже канал утечки данных.
  • MCP-сервер к базе магазина: только чтение (заказы, оплаты, доставки, товары, журнал событий заказа).
  • Агент по запросу «что случилось с заказом 1042?» сам смотрит оплаты, доставку и журнал событий и пишет разбор с доказательствами: двойное списание, застрявшая доставка, не применённый промокод, не дошедший возврат.
  • 🔒 Снимок базы с данными клиентов — только Ollama; DeepSeek — только на сгенерированной демо-базе.
  • Evals для агента: 20 случаев с известной причиной (судья — код + ручная проверка + локальная модель: облачный судья увидел бы персональные данные клиентов).

  • Кэширование: автоматический кэш DeepSeek (поля prompt_cache_hit_tokens / prompt_cache_miss_tokens) vs явный cache_control у Claude; контроль стоимости, бюджеты (баланс DeepSeek, 402 при нуле).
  • Observability: трейсинг каждого вызова, дашборд качества и затрат.
  • Фолбэки: DeepSeek → OpenRouter → Ollama (приватные запросы — никогда в облако), через свою обёртку, LiteLLM или OpenRouter; таймауты, деградация.
  • Локальные модели: Ollama, vLLM, квантизация; Ollama на macOS — нативно, контейнеры ходят к ней через host.docker.internal.
  • Файнтюнинг и LoRA — понимать, когда он нужен (редко), уметь запустить базовый пример. У DeepSeek файнтюнинга нет.
  • Прогнать свои evals на локальной модели и на DeepSeek, сравнить качество, скорость и цену.
  • Фолбэк DeepSeek → OpenRouter → Ollama с флагом приватности.
  • Добавить трейсинг (Langfuse) и посчитать стоимость одного ответа с учётом кэша и часа пик.

  • Latent Space — главный подкаст про AI Engineering

  1. Строить, а не только смотреть курсы. 20% теории, 80% проектов.
  2. Сначала без фреймворков. Сырой API → потом LangChain/LlamaIndex.
  3. Всегда измерять. Проект с evals ценится намного выше, чем «работает, я проверил руками».
  4. Опираться на свою предметную область. Знание области + AI — сильная ниша.
  5. Безопасность по умолчанию. Агентам — только чтение, пока нет подтверждения человеком. Никаких изменений заказов, возвратов и промокодов без человека.
  6. Приватность по умолчанию. Персональные данные клиентов, рабочий код и всё приватное — только локально (Ollama). В облако (DeepSeek и любые бесплатные тарифы) — только публичные тексты, база знаний и демо-база.
  7. Не привязываться к провайдеру. Один OpenAI-совместимый клиент, модель и base_url — в настройках; модели сравнивать на своих evals.

Этап Начал Закончил Проект на GitHub
0. Подготовка —
1. Основы LLM
2. RAG
3. Evals
4. Агенты
5. Продакшен

  • Текст курса — главы в book/, этот план, тесты и задания — распространяется по лицензии CC BY-NC-SA 4.0: материалы можно читать, копировать, переводить и переделывать с указанием источника и ссылкой на лицензию, переделки — под той же лицензией, коммерческое использование (платные курсы, продажа материалов) — только с разрешения авторов. Полный текст условий — в файле LICENSE-CONTENT репозитория.
  • Код — сайт в site/ и примеры кода в главах — по лицензии MIT (файл LICENSE): примеры можно свободно переносить в свои и рабочие проекты, в том числе коммерческие, сохранив уведомление об авторских правах.