
Какому программисту не захочется прокачать свои навыки с ИИ и десятикратно умножить эффективность разработки? Когда мы получили оригинал книги «Modern Python Programming using ChatGPT» (Шивакумар Гопалакришнан), то увидели как плюсы, так и минусы.
Плюсы. Автор предлагает не просто набор промптов, а реально стройную методологию: использовать ИИ на всех этапах разработки — от сбора OKR до мониторинга в Grafana. Да еще подкрепляет это сквозным примером.
Минусы. Оригинальный текст явно был написан с активной помощью самого ChatGPT. Местами «уши» LLM торчали так сильно, что текст было трудно читать из-за воды и повторов.
Возникла главная задача: как сделать так, чтобы русскоязычный читатель получил максимум пользы от применения ИИ в своих разработках, и при этом не забросал нас камнями, обнаружив примитивный перевод текста, сгенерированного тем же самым ИИ?
И тут начинается история о том, как мы перевели и отредактировали книгу, которая сама была частично «сгенерирована», и почему в итоге она стала (по нашему скромному мнению) реальным практическим руководством по работе с ИИ для Python-разработчиков, особенно в условиях современной России.
Мы решили пойти по жесткому пути. Да, автор не скрывал, что для написания книги по ChatGPT он намеренно использовал сам ChatGPT, и это было нормально для 2025 года. Но сегодня, когда первое восхищение от способности ИИ генерировать текст или находить ошибки в коде прошло и сменилось на прагматизм и разумный консерватизм, перед нами встала задача «очеловечить» книгу, сохранив всю ее техническую глубину.
Мы не просто переводили. Мы перерабатывали структуру предложений, убирали «воду», свойственную генерациям ранних версий GPT, и унифицировали терминологию. По сути, мы сделали за ИИ его же работу, но с пониманием контекста. Результат представляем на суд широкой публики.
Почему эта книга — must read (особенно в России)?
Главная фишка книги, которая подчеркивается в предисловии к русскому изданию — она не про ChatGPT. Она про методологию. Автор использует ChatGPT как пример, как популярную модель, но все принципы, все промпты и подходы, описанные в книге, применимы к любому ИИ-ассистенту, доступному в России. А девиз «Прокачайте навыки с ИИ — десятикратно умножьте эффективность разработки» - не маркетинг. Шивакумар Гопалакришнан, инженер с 25-летним стажем и экс-архитектор в Fortune 100, проводит читателя через полный жизненный цикл разработки (SDLC) на примере сквозного проекта — USB T-Shirt Launcher.
Внутри книги нет примеров, как написать того или иного бота. Путешествие по главам выглядит как путь по этапам разработки продукта в тесном и непосредственном симбиозе программиста и ИИ:
Сбор требований. Забудьте про «напиши ТЗ». Книга учит формулировать OKR и цели по SMART, вместе с ИИ создавать персонажей, пользователей и карты эмпатии.
Проектирование. Как ИИ помогает не нарушать SOLID еще на этапе архитектуры? Здесь об этом рассказывают.
Разработка (Core). Генерация кода, рефакторинг, отладка. Показано на реальных примерах с конкретными промптами. Вы увидите, как ChatGPT помогал писать логику движения для камеры того самого T-Shirt Launcher.
Качество кода. Отдельный блок про принципы SOLID (целая глава 8) и написание тестов. Это важно: автор учит не просто просить код, а просить хороший код.
DevOps-культура. Настройка CI/CD, описание коммитов, управление PR (Pull Requests) и мониторинг с помощью Grafana Cloud.
Да, купив книгу, местами вы можете почувствовать некоторую «академичность» изложения, но мы постарались вырезать те самые моменты, когда ИИ «льет воду» или ходит по кругу. Особенно ценной с нашей точки зрения получилась глава про ограничения и подводные камни (глава 13) — её автор явно писал сам, потому что она очень честная. Там рассказывается о том, как не стать рабом галлюцинаций нейросети и всегда критически оценивать результат.
Мы проделали большую работу, чтобы этот текст стал эталонным руководством именно для российского разработчика. Если вы хотите перестать бояться, что ИИ заменит вас, и начать использовать его, чтобы работать в 10 раз эффективнее — эта книга ваш инструмент.
Отдельное спасибо автору за то, что он выбрал такой «прикольный», но показательный проект, как USB-пусковая установка для футболок. Это доказывает: ИИ поможет управиться даже с «железом», если правильно его попросить.
Как ChatGPT помог спроектировать и реализовать USB-пусковую установку для футболок
Практический материал проекта оказался на удивление крепким. USB T-Shirt Launcher - это реальная «пушка», которая с помощью камеры и распознавания лиц автоматически наводится на цель и стреляет… футболками! Звучит как игрушка, но с инженерной точки зрения здесь есть всё: работа с «железом», компьютерное зрение, реальное время, ограниченные ресурсы (Raspberry Pi) и, конечно, активное использование ChatGPT на всех этапах.
Читатель проходит этот путь вместе с автором и ИИ: от первых требований до кода, который заставляет турель следить за лицом. И видит, как ИИ помог справиться с подводными камнями, о которые разбился бы не один новичок.
1. Что хочет заказчик? (Глава 5)
Представьте: вы должны написать софт для пусковой установки, которая подключается по USB и умеет поворачиваться влево-вправо и наклоняться вверх-вниз. На неё же установлена камера на Raspberry Pi. Задача: автоматически наводить устройство на лицо человека и, если хочется, стрелять в него футболкой. А для разработки и тестирования неплохо бы иметь возможность запускать код без реального железа — в симуляторе.
Все по требованиям (REQ):
REQ-4. Интеграция распознавания лиц с движением камеры — система должна идентифицировать лица и удерживать их в центре кадра.
REQ-5. Логика движения камеры на основе положения лица — камера двигается в реальном времени.
REQ-6. Интеграция движения камеры с наведением пусковой установки — куда смотрит камера, туда целится и пушка.
REQ-7. Функции безопасности — защита от случайного выстрела.
REQ-8/9. Обработка ошибок — стабильность при сбоях.
Кроме того, есть нефункциональные требования: код должен работать на Raspberry Pi (слабый процессор), быть тестируемым, а также позволять делать отладку без реального USB-устройства.
2. Проектируем архитектуру с ChatGPT
Скармливаем этот список ChatGPT и просим предложить архитектуру, используя принципы SOLID и шаблоны проектирования. Чат-бот предлагает использовать фабричный метод (Factory Method), чтобы во время разработки и тестирования подменять реальное USB-устройство симулятором.
Вот как выглядит диаграмма классов, сгенерированная ботом на языке Mermaid (рис. 5.6 из книги):

Суть решения: есть абстрактный класс Launcher с методом launch_tshirt(). От него наследуются USBLauncher (работа с реальным железом) и SimulatedLauncher (имитация для отладки). А LauncherFactory создаёт экземпляр нужного типа в зависимости от режима. LauncherController получает этот экземпляр через внедрение зависимости и работает с ним, не задумываясь, реальное это устройство или нет.
Фрагмент кода, сгенерированного ChatGPT (сильно сокращён):
class Launcher: def launch_tshirt(self): pass class USBLauncher(Launcher): def launch_tshirt(self): # ... код отправки команды по USB print("Fire in the hole!") class SimulatedLauncher(Launcher): def launch_tshirt(self): print("Boom! (simulated)") class LauncherFactory: @staticmethod def get_launcher(launcher_type): if launcher_type == "USB": return USBLauncher() elif launcher_type == "Simulated": return SimulatedLauncher() # ...
Такая архитектура одновременно решает проблему тестирования и делает код гибким.
3. Переходим к реализации: подводные камни (Глава 6)
Итак, архитектура готова. Внешний вид «пушки» впечатляет.

Но дьявол, как всегда, в деталях. Когда мы начинаем писать код для реального устройства, всплывают неучтённые проблемы. Вот лишь некоторые из них:
Шаткое крепление. Raspberry Pi с камерой просто прикручен к подвижной части турели. При каждом движении конструкция вибрирует, и координаты лица «пляшут».
Неизвестное начальное положение. У дешёвых USB-сервоприводов нет энкодеров. При включении мы не знаем, куда направлена турель — она может смотреть в потолок или в пол.
Ограниченная вычислительная мощность. Raspberry Pi 3 еле тянет OpenCV. Сложные алгоритмы с предсказанием движения лица приведут к тормозам.
Цель движется. Пока турель поворачивается, человек может сместиться. Нужно постоянно корректировать траекторию.
Механические ограничения. Нельзя крутить моторы бесконечно — есть упоры.

4. Придумываем алгоритм (советуемся с ИИ!)
Прежде чем лезть в код, полезно набросать алгоритм на пальцах. Мы решили действовать просто:
Получить от OpenCV координаты ограничивающей рамки лица.
Вычислить центр лица.
Сравнить с центром кадра.
Если смещение по горизонтали больше допустимого порога — подать команду поворота в нужную сторону на небольшую фиксированную величину.
То же для вертикали.
Повторять цикл, пока лицо не окажется в центре (с допуском).
Это классический пропорциональный регулятор, но без обратной связи по положению. Такой подход не требует знания абсолютного угла, нечувствителен к вибрациям и легко реализуется на слабом процессоре.

5. Промпт для ChatGPT и полученный код
Теперь формулируем задачу для ChatGPT максимально подробно, с учётом всех ограничений:
«Как главный штатный инженер по Python, дайте мне код на Python для функции, которая будет выдавать команды для запуска на основе идентифицированных координат лица. У меня есть маломощное устройство, такое как Raspberry PI. На нем установлен модуль камеры Raspberry PI. Вся камера и RPI довольно шатко закреплены на панели запуска. Устройство запуска — это устройство, управляемое через USB, которое может выполнять повороты и наклоны. Используя OpenCV, я могу распознавать лица и получать их координаты... У пусковой установки нет команды «определить положение». Её текущее положение невозможно определить при запуске программы. Лица могут перемещаться во время движения пусковой установки...»
ChatGPT выдал код, который оказался очень близок к нашему алгоритму, но добавил важные детали: многопоточность (чтобы распознавание лиц не блокировало отправку команд) и временные интервалы (чтобы не дёргать сервомоторы слишком часто). Ниже — ключевые фрагменты (полный код занимает пару страниц, мы покажем только суть).
import cv2, numpy as np, threading, time def move_launcher_pan(direction, amount): # здесь будет отправка USB-команды pass def move_launcher_tilt(direction, amount): pass cap = cv2.VideoCapture(0) face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') frame_center = np.array([cap.get(3)/2, cap.get(4)/2]) pan_threshold = frame_center[0] * 0.25 tilt_threshold = frame_center[1] * 0.25 last_command_time = time.time() command_interval = 0.5 def launcher_control_loop(): global last_command_time while True: ret, frame = cap.read() if not ret: continue gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.1, 4) if len(faces) > 0: (x, y, w, h) = faces[0] face_center = np.array([x + w/2, y + h/2]) displacement = face_center - frame_center now = time.time() if now - last_command_time > command_interval: if abs(displacement[0]) > pan_threshold: move_launcher_pan('left' if displacement[0] < 0 else 'right', abs(displacement[0])) if abs(displacement[1]) > tilt_threshold: move_launcher_tilt('down' if displacement[1] < 0 else 'up', abs(displacement[1])) last_command_time = now threading.Thread(target=launcher_control_loop, daemon=True).start() while True: ret, frame = cap.read() if ret: cv2.imshow('Frame', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
Обратите внимание: ChatGPT не просто скопировал наш алгоритм, но и профессионально организовал асинхронную отправку команд, защиту от слишком частых движений и корректное завершение потоков. Всё это позволяет коду работать на Raspberry Pi без подвисаний.
6. Итоги и выводы
За несколько итераций диалога с ChatGPT мы получили:
Чёткую архитектуру, отделяющую логику от железа.
Рабочий прототип алгоритма слежения, учитывающий реальные ограничения слабого железа.
Возможность тестирования без физического устройства благодаря фабрике и симулятору.
Готовую документацию (промпты, диаграммы, комментарии) — её сгенерировал ИИ по ходу дела.
Конечно, финальный код потребовал доработки: пришлось добавить обработку нескольких лиц, более плавное движение (через PID-регулятор) и механизмы безопасности. Но начальный каркас, созданный ChatGPT, позволил сэкономить дни, если не недели.
Проект USB T-Shirt Launcher — отличная песочница для отработки навыков программирования с ИИ. Мы убедились, что ChatGPT способен не только писать отдельные функции, но и предлагать архитектурные решения, учитывающие аппаратные ограничения. Главное — правильно ставить задачу и критически оценивать результат, как это делали авторы при подготовке русского издания книги.
Хотите попробовать сами? Весь код и документация доступны в репозитории. А если захочется больше примеров и разбора каждого этапа — добро пожаловать в книгу.
Мы полагаем, что книга получилась интересной как для начинающих программистов, которые хотят научиться правильно ставить задачи ИИ, чтобы он не генерировал ерунду, так и для продвинутых, которые хотят прокачать навыки рефакторинга и написания чистой архитектуры с минимальными затратами времени.
Если при покупке книги на сайте издательства "БХВ" использовать промокод HABRBHV, вы получите скидку 36%.
