От легаси до продакшена: как я использую ИИ для чистого кода, рефакторинга и оптимизации Python

Когда я впервые попробовал использовать ИИ для написания Python-кода, я думал, что это просто автодополнение. Но за несколько месяцев я превратил нейросети в полноценного напарника: они помогают мне поддерживать чистоту кода, разбирать легаси-монолит и выжимать максимум из продакшена. В этой статье я поделюсь 15 проверенными промтами, которые использую почти ежедневно. Они не только экономят часы, но и учат писать код, который не стыдно показать коллегам.


1. Чистый код с первого раза: системный промт для AI-ревью

Промт:

Ты — эксперт по Python и принципам чистой архитектуры. Проведи ревью следующего кода. Оцени: читаемость, соблюдение PEP 8, принципы SOLID, наличие дублирования и потенциальные уязвимости. Выдай результат в формате: [Проблема][Строка] -> [Рекомендация]. В конце перечисли, что сделано хорошо.

```python
[вставь код]

**Пример использования:**
```python
def process_data(data):
    if data:
        result = []
        for i in data:
            if i > 0:
                result.append(i * 2)
        return result
    return []

Результат: нейросеть укажет, что можно использовать list comprehension, что имя i неинформативно, и что пустая проверка лишняя. Рекомендация: [positive * 2 for positive in data if positive > 0].

Почему работает: задавая чёткие критерии и формат ответа, вы получаете структурированный фидбек, а не общие слова.


2. Рефакторинг легаси: превращаем спагетти-код в понятные модули

Промт:

Передо мной унаследованный код на Python. Разбей его на логические модули, следуя принципам модульности. Предложи структуру файлов и имена функций. Если нужно, создай dataclass или используй enum. Объясни каждое решение. Код: [вставь]

Пример:

# легаси
import json
def handle(request):
    if request.method == 'POST':
        data = json.loads(request.body)
        if data.get('type') == 'user':
            # 20 строк обработки
        elif data.get('type') == 'order':
            # 30 строк обработки

Результат: AI предложит разделить на handlers/user_handler.py и handlers/order_handler.py, использовать паттерн Strategy.


3. Профилирование без боли: find bottlenecks

Промт:

Ниже код, который выполняется медленно. Определи узкие места, используя профилирование в уме. Предложи оптимизации (алгоритмические, использование стандартных библиотек, кэширование). Для каждой оптимизации дай ожидаемый прирост скорости и пример кода.

```python
[вставь]

**Пример:**
```python
def find_duplicates(items):
    duplicates = []
    for i in range(len(items)):
        for j in range(i+1, len(items)):
            if items[i] == items[j]:
                duplicates.append(items[i])
    return duplicates

Результат: AI предложит использовать set для поиска дубликатов за O(n), и пример:

def find_duplicates(items):
    seen = set()
    duplicates = set()
    for item in items:
        if item in seen:
            duplicates.add(item)
        else:
            seen.add(item)
    return list(duplicates)

4. Асинхронный Python: переходим на asyncio без страха

Промт:

Перепиши этот синхронный код на асинхронный с использованием asyncio и aiohttp. Учти тайм-ауты, обработку ошибок и отмену задач. Объясни, почему такая структура эффективнее.

```python
[вставь]

**Пример:**
```python
import requests

def fetch_pages(urls):
    results = []
    for url in urls:
        results.append(requests.get(url).text)
    return results

Результат: AI даст код с asyncio.gather, aiohttp.ClientSession, а также предупредит о необходимости await asyncio.sleep(0) для контроля.


5. Пишем юнит-тесты, которые не бесят

Промт:

Сгенерируй набор юнит-тестов для функции [описание] с использованием pytest. Покрой нормальные случаи, граничные значения и исключения. Тесты должны быть изолированы и не зависеть от внешних ресурсов. Используй monkeypatch и фикстуры.

Функция: [вставь]

Пример:

def divide(a, b):
    if b == 0:
        raise ValueError("На ноль делить нельзя")
    return a / b

Результат: AI сгенерирует тесты с pytest.raises, параметризацией для разных значений и фикстурой для настройки.


6. Безопасность: ищем дыры до хакеров

Промт:

Проведи аудит безопасности этого Python-кода. Ищи: SQL-инъекции, XSS-уязвимости, небезопасное использование pickle, незакрытые ресурсы. Для каждой найденной проблемы предложи исправление с примером кода.

```python
[вставь]

**Пример:**
```python
import sqlite3
def get_user(username):
    conn = sqlite3.connect("db.db")
    cursor = conn.execute(f"SELECT * FROM users WHERE username = '{username}'")
    return cursor.fetchone()

Результат: AI укажет на SQL-инъекцию и предложит использовать параметризованный запрос: cursor.execute("SELECT * FROM users WHERE username = ?", (username,)).


7. Генерация документации из docstring

Промт:

Создай документацию для следующего модуля/функции в формате Sphinx (reStructuredText). Включи описание параметров, возвращаемых значений, исключений и пример использования. Используй docstring в стиле Google или NumPy.

```python
[вставь]

**Пример:**
```python
def add(a, b):
    """Складывает два числа."""
    return a + b

Результат: AI сгенерирует .rst файл с автодокументацией и примером.


8. Функциональное программирование: map, filter, reduce как профи

Промт:

Перепиши следующий императивный код в функциональном стиле, используя map, filter, reduce и lambda. Объясни, как каждый шаг работает.

```python
[вставь]

**Пример:**
```python
numbers = [1, 2, 3, 4, 5]
squared = []
for n in numbers:
    if n % 2 == 0:
        squared.append(n**2)

Результат: AI предложит list(map(lambda x: x**2, filter(lambda x: x % 2 == 0, numbers))) и пояснит.


9. Работа с pandas: эффективно и без боли

Промт:

Дан DataFrame pandas. Выполни операцию [описание] наиболее эффективным способом. Избегай циклов, используй векторизацию. Если нужно, примени groupby, merge или pivot_table. Покажи код и объясни.

Данные: [описание структуры]

Пример:

name sales region
A 100 West
B 200 East

Результат: AI покажет, как сгруппировать по региону и посчитать сумму продаж.


10. Работа с датами и временем: timezone, timedelta

Промт:

Напиши функцию для расчёта разницы между двумя датами в часах с учётом часовых поясов. Используй модуль datetime и zoneinfo. Учти переход на летнее время. Добавь обработку ошибок для некорректных дат.

```python
[вставь]

**Пример:**
```python
from datetime import datetime
from zoneinfo import ZoneInfo

def hours_between(d1, tz1, d2, tz2):
    # TODO

Результат: AI создаст функцию, конвертирующую обе даты в UTC и вычисляющую разницу.


11. Работа с файлами: чтение/запись больших данных

Промт:

Прочитай большой файл (например, CSV размером 1 ГБ) без загрузки в память. Обработай каждую строку и запиши результат в новый файл. Используй генераторы и контекстный менеджер. Покажи код.

```python
[вставь]

**Пример:**
```python
with open('huge.csv') as f:
    for line in f:
        process(line)

Результат: AI предложит использовать csv.reader и csv.writer, а также буферизацию.


12. Обработка ошибок: пишем надёжный код

Промт:

Оберни следующий код в try-except, обработай все возможные исключения, включая пользовательские. В блоке except выведи информацию об ошибке в лог, но не прерывай выполнение. Предложи, как улучшить надёжность.

```python
[вставь]

**Пример:**
```python
import requests
response = requests.get('https://api.example.com')
data = response.json()

Результат: AI предложит обработать requests.RequestException, json.JSONDecodeError и добавить try-except с логированием.


13. Работа с базами данных: ORM vs SQL

Промт:

Сравни подходы SQLAlchemy ORM и сырых SQL-запросов для следующей задачи: [описание]. Дай примеры кода для обоих способов и обоснуй, когда что использовать.

```python
[вставь]

**Результат:** AI покажет, как сделать запрос через ORM и через raw SQL, и объяснит компромиссы.

---

## 14. Работа с API: создаём клиент с retry

**Промт:**
```text
Создай Python-клиент для API [описание эндпоинтов]. Добавь: повторные попытки при сетевых ошибках, экспоненциальную задержку, тайм-ауты и обработку статус-кодов. Используй библиотеку requests или httpx.

```python
[вставь]

**Результат:** AI сгенерирует класс с методом `_request`, где есть retry с помощью `tenacity` или вручную.

---

## 15. Оптимизация циклов: убираем лишнее

**Промт:**
```text
Оптимизируй этот цикл, убрав ненужные операции, используя локальные переменные, избегая повторных вызовов методов. Покажи замеры времени до и после с помощью timeit.

```python
[вставь]

**Пример:**
```python
def process(items):
    result = []
    for item in items:
        if item > 10:
            result.append(item * 2)
    return result

Результат: AI покажет, что можно использовать result.append(item * 2) напрямую, убрать if если не нужно, и т.д.


16. Пишем генераторы для потоковой обработки

Промт:

Перепиши эту функцию как генератор, чтобы она не создавала список целиком, а выдавала элементы по одному. Объясни, как это экономит память.

```python
[вставь]

**Пример:**
```python
def squares(n):
    result = []
    for i in range(n):
        result.append(i**2)
    return result

Результат: AI предложит yield.


17. Декораторы: добавляем функциональность без боли

Промт:

Напиши декоратор для замера времени выполнения функции. Он должен логировать имя функции и время в секундах. Примени его к функции [пример]. Объясни, как это работает.

```python
[вставь]

**Результат:** AI создаст декоратор с `functools.wraps` и пример использования.

---

## 18. Работа с многопоточностью и GIL

**Промт:**
```text
Объясни, почему для CPU-интенсивных задач в Python лучше использовать multiprocessing, а не threading. Покажи пример, как распараллелить вычисления с помощью concurrent.futures.ProcessPoolExecutor.

```python
[вставь]

```

Результат: AI объяснит GIL и даст пример.


Финальные мысли

Эти промты — не догма, а отправная точка. Я заметил, что чем конкретнее я описываю задачу, тем лучше результат. Не бойтесь экспериментировать: добавляйте свои контексты, примеры и ограничения. ИИ — это инструмент, который усиливает ваши навыки, но не заменяет их. Со временем вы научитесь задавать правильные вопросы и получать именно то, что нужно.

Если у вас есть свои любимые промты для Python — делитесь в комментариях, я всегда ищу новые идеи!

← Все статьи

Комментарии

Читайте также

25+ AI-инструментов для предпринимателей: лучшее программное обеспечение для управления бизнесом в 2026 году

18 июля 2026

Как AI-агент ASI Biont превращает Twitter/X в машину для роста: интеграция без кода и рутины

27 июня 2026

Курс по Data Science для бизнеса на Asibiont: A/B-тестирование, продуктовые метрики и сегментация клиентов

2 августа 2026

Как AI меняет обучение алгоритмам и структурам данных: глубокий курс от Big O до NP-задач

14 июня 2026

Как освоить UI/UX дизайн с Figma: практический курс с AI-ассистентом на Asibiont

17 июля 2026

ИИ-зависимость и лекарство от prompt injection: как защититься от атак на системный промпт в 2026 году

16 июля 2026

Интеграция Redis с AI-агентом ASI Biont: автоматизация кэширования, сессий и очередей без кода

15 июля 2026

System Design Interview: как подготовиться к FAANG в 2026 году и какие тренды учитывать

12 сентября 2026

JavaScript для веб-разработки: освойте язык, стоящий за каждым современным веб-сайтом в 2026 году

3 августа 2026