Slide 1

Slide 1 text

Как вайбкодить на Python по- сениорски Гладких Кирилл 1

Slide 2

Slide 2 text

Гладких Кирилл 1 6 лет разработки на Python 🐍 2 Работаю в «Shtab.tech» 👨🏼💻 3 Помогаю оцифровывать стройку 👷♂️ 4 Счастливый обладатель жигулей 🥰 2

Slide 3

Slide 3 text

1. Ещё не начали использовать ИИ в своей работе 2. Разочаровались в том, что ИИ не работает из коробки так хорошо, как хотелось бы. 3. Активно используют языковые модели для написания кода и хотели бы улучшить его качество Кому может быть интересен доклад? Н а й т и в и н т е р н е т е | Python разработчики любого уровня, которые: 3

Slide 4

Slide 4 text

За рамками доклада Метрики количества решенных задач Они про «голую корректность» и межъязыковость. Например, SWEBench, LiveCodeBench MCP серверы Для VSCode Copilot и Claude Code легко подключаются по инструкции Локальные языковые модели Рассматриваем проприетарные инструменты, но озвученные далее подходы можно применять и к self-hosted решениям. Встраивание дополнительного знания Не рассматриваем методы RAG и Fine- tuning 4 Галлюцинации Редко встречал на практике Решение сложных задач Проще реализовать самому используя лишь механизм автодополнения (Tab, tab)

Slide 5

Slide 5 text

Почему теряется качество? Низкое качество кода Потеря внимания «Торопливость» модели Отсутствие информации о проекте 5

Slide 6

Slide 6 text

Что делать с низким качеством генерируемого кода? 6

Slide 7

Slide 7 text

Использование кастомных python инструкций Неправильная аннотация типов Вместо List, Tuple, Dict использовать list, tuple, dict Названия переменных Вместо exc, i, value Называть exception, index, business_value Использование for Где возможно, использовать list comprehension вместо простого for Наиболее частые проблемы: Злоупотребление if Следовать fail-fast. Проверять условие и прекращать цикл. Пренебрежение with Использовать with для любых операций с ресурсами и файлами Использование промптов • Общие инструкции, вдохновлено: https://github.com/DenisSergeevitch/chat gpt-custom-instructions • Саморефлексия • Правила ответа • Инструкции специфичные для типизированного питона 7

Slide 8

Slide 8 text

Эксперимент 1 Дано: Шаблон фуллстэк FastAPI приложения Уже есть пользователи и аутентификация; Код имеет минимальное количество ошибок линтеров Линтеры с строгими правилами Mypy, ruff, wemake-python-styleguide, vulture, radon, bandit VSCode Copilot (с и без инструкции) Используемые модели: GPT 5, Claude Sonnet 4 Claude Code (с и без инструкции) Задача с бизнес логикой Реализация эндпоинтов для кошельков и переводов 8

Slide 9

Slide 9 text

Результаты Общее количество ошибок (меньше-лучше) Ошибки в разрезе инструмента и линтера Время работы в среднем ~8 минут 9

Slide 10

Slide 10 text

Эксперимент 2 Дано: Пустой проект Папка с данными и метаданные Линтеры с строгими правилами Mypy, ruff, wemake-python-styleguide, vulture, radon, bandit Задача на ML Реализация ML приложения для прогноза выживаемости на титанике (Kaggle) 10 VSCode Copilot (с и без инструкции) Используемые модели: GPT 5, Claude Sonnet 4 Claude Code (с и без инструкции)

Slide 11

Slide 11 text

Результаты Общее количество ошибок (меньше-лучше) Ошибки в разрезе инструмента и линтера Время работы в среднем ~14 минут 11

Slide 12

Slide 12 text

Потеря внимания «Торопливость» модели 12

Slide 13

Slide 13 text

Потеря внимания «Торопливость» модели Формулировка задачи + ревью + тесты Тесты Общее Код-ревью Разработчик 13

Slide 14

Slide 14 text

Решение: Subagents Формулировка задачи + ревью + тесты Разработчик Как настроить: https://docs.claude.com/en/docs/claude-code/sub- agents 14 Общее Main Тесты Subagent Код-ревью Subagent Фокус на задаче Контекстное окно у каждого сабагента своё и не заполнено процессом имплементации Делегирование Каждый сабагент может иметь свой набор инструкций под конкретные цели Метод перекрёстной проверки Одна модель судит другую, являясь экспертом в её области

Slide 15

Slide 15 text

Пример Код ревью Написание тестов 15

Slide 16

Slide 16 text

Отсутствие информации о проекте Сброс контекста 16

Slide 17

Slide 17 text

Сброс информации о проекте и контекста Изучение проекта Изучение структуры проекта при каждом запуске, что увеличивает время перед началом работы 1. Последние изменения Отсутствие информации об активно разрабатываемых частях приложения 2. Повторение плохих практик Повторение устаревшего стиля участков кода, и “мы вообще-то уже так не делаем” 3. Изобретение велосипеда Добавление (дублирование) функционала, который уже есть 4. 17

Slide 18

Slide 18 text

Memory bank Сохраняет информацию о проекте для языковой модели. Полное описание проекта по нескольким пунктам: Пишем вручную краткое описание проекта Запускаем генерацию документации Описание продукта Контекст последних изменений Архитектура приложения Используемые технологии Взято с: https://kilocode.ai/docs/advanced-usage/memory-bank 18 Автоматизация рутинных задач

Slide 19

Slide 19 text

Пример Архитектура Продукт Контекст Tech-stack 19

Slide 20

Slide 20 text

Спасибо за внимание! Мой телеграм https://t.me/ dev_stvennica Репозиторий с python промптами github.com/ vodkar/ vscode-copilot-prompts 20 Kilo Code: Memory Bank