Python + LLM: 12 промтов, которые превращают рутину в автоматизацию (проверено на реальных проектах)

Python + LLM: 12 промтов, которые превращают рутину в автоматизацию

За последние два года я перепробовал десятки подходов к использованию больших языковых моделей в разработке на Python. И знаете что? Большинство «волшебных» промтов из интернета не работают в реальных проектах — они либо слишком общие, либо выдают код, который приходится переписывать с нуля. Но есть и те, что экономят часы работы ежедневно. В этой подборке — 12 проверенных промтов, которые я использую сам и рекомендую коллегам: от генерации кода до рефакторинга, тестирования и оптимизации. Каждый промт сопровождается примером и пояснением, для каких задач он подходит.

Важно: все примеры предполагают, что вы используете LLM с доступом к контексту проекта (например, через API или в IDE). Если модель не видит ваш код, добавьте в промт соответствующие фрагменты. И помните: AI — это инструмент, а не замена инженерному мышлению. Всегда проверяйте сгенерированный код, особенно если он касается безопасности или работы с данными.

1. Генерация кода по описанию

Задача: быстро создать функцию или класс по текстовому описанию, когда лень писать шаблонный код.

Промт:

Ты — опытный Python-разработчик. Напиши функцию на Python, которая принимает список словарей и возвращает новый список, где каждый словарь содержит только ключи из заданного набора. Используй аннотации типов и docstring в стиле Google. Добавь обработку исключений для неверных типов.

Пример результата:

from typing import List, Dict, Any, Set

def filter_keys(data: List[Dict[str, Any]], allowed_keys: Set[str]) -> List[Dict[str, Any]]:
    """Фильтрует список словарей, оставляя только указанные ключи.

    Args:
        data: Исходный список словарей.
        allowed_keys: Множество ключей, которые нужно оставить.

    Returns:
        Новый список словарей с отфильтрованными ключами.

    Raises:
        TypeError: Если data не список или allowed_keys не множество.
    """
    if not isinstance(data, list):
        raise TypeError("data должен быть списком")
    if not isinstance(allowed_keys, set):
        raise TypeError("allowed_keys должен быть множеством")

    return [{k: v for k, v in item.items() if k in allowed_keys} for item in data]

Когда использовать: для быстрого прототипирования, создания утилитарных функций, boilerplate-кода. Экономит время на написание рутинных операций.

2. Рефакторинг с сохранением поведения

Задача: улучшить читаемость или производительность кода, не меняя его логику.

Промт:

Проведи рефакторинг следующего кода. Цель: улучшить читаемость и убрать дублирование, но сохранить поведение. Используй list comprehensions и встроенные функции, где это уместно. Не меняй сигнатуру функции.

```python
# исходный код

**Пример результата:**
Исходный код:
```python
def process(items):
    result = []
    for i in items:
        if i > 0:
            result.append(i * 2)
    return result

После рефакторинга:

def process(items: list[int]) -> list[int]:
    return [i * 2 for i in items if i > 0]

Когда использовать: для улучшения legacy-кода, при code review, для приведения кода к стандартам PEP 8.

3. Написание тестов (pytest)

Задача: сгенерировать unit-тесты для существующей функции.

Промт:

Напиши тесты на pytest для следующей функции. Покрой крайние случаи: пустой список, отрицательные числа, None. Используй параметризацию. Добавь проверку исключений.

```python
# функция

**Пример результата:**
```python
import pytest
from mymodule import process

@pytest.mark.parametrize("input_data, expected", [
    ([1, 2, 3], [2, 4, 6]),
    ([-1, 0, 1], [2]),
    ([], []),
])
def test_process_positive(input_data, expected):
    assert process(input_data) == expected

def test_process_invalid_type():
    with pytest.raises(TypeError):
        process(None)

Когда использовать: для быстрого создания тестового покрытия, особенно при рефакторинге или добавлении новой функциональности.

4. Отладка и анализ ошибок

Задача: понять причину ошибки и получить建议 по исправлению.

Промт:

Я получил следующую ошибку при выполнении Python-кода:

Traceback (most recent call last):
File "example.py", line 10, in
main()
File "example.py", line 7, in main
result = 10 / 0
ZeroDivisionError: division by zero

Вот соответствующий код:
```python
def main():
    x = 0
    return 10 / x

Объясни причину и предложи исправление. Учти, что x может быть равен нулю.


**Пример результата:**
Причина: деление на ноль. Исправление: добавить проверку или использовать обработку исключений.
```python
def main():
    x = 0
    if x == 0:
        return None  # или raise ValueError("x не может быть нулём")
    return 10 / x

Когда использовать: при отладке сложных ошибок, особенно если traceback большой.

5. Оптимизация производительности

Задача: ускорить медленный участок кода.

Промт:

Проанализируй следующий код на Python и предложи оптимизации для повышения производительности. Особое внимание удели циклам и работе с памятью. Предложи альтернативные реализации с использованием numpy или встроенных функций.

```python
# код

**Пример результата:**
Исходный код:
```python
def sum_squares(n):
    total = 0
    for i in range(n):
        total += i * i
    return total

Оптимизированный вариант:

def sum_squares(n: int) -> int:
    return sum(i * i for i in range(n))
# или с numpy:
import numpy as np
def sum_squares_np(n: int) -> int:
    return np.sum(np.arange(n) ** 2)

Когда использовать: при работе с большими данными, в циклах, в задачах машинного обучения.

6. Работа с FastAPI: создание эндпоинта

Задача: сгенерировать код эндпоинта с валидацией и документацией.

Промт:

Создай эндпоинт FastAPI для получения списка пользователей с пагинацией. Используй Pydantic-модели для валидации. Добавь обработку ошибок и автоматическую документацию.

Пример результата:

from fastapi import FastAPI, HTTPException, Query
from pydantic import BaseModel
from typing import List

app = FastAPI()

class User(BaseModel):
    id: int
    name: str
    email: str

users_db = [{"id": i, "name": f"User{i}", "email": f"user{i}@example.com"} for i in range(100)]

@app.get("/users/", response_model=List[User])
def get_users(skip: int = Query(0, ge=0), limit: int = Query(10, le=100)):
    return users_db[skip: skip + limit]

Когда использовать: при разработке REST API на FastAPI, для быстрого создания CRUD-операций.

7. SQL-запросы через ORM (SQLAlchemy)

Задача: сгенерировать сложный запрос с джойнами и фильтрацией.

Промт:

Напиши SQLAlchemy запрос для получения списка заказов с информацией о пользователе, отфильтрованных по статусу 'completed' и дате за последний месяц. Используй join и order_by.

Пример результата:

from sqlalchemy import select
from datetime import datetime, timedelta

one_month_ago = datetime.now() - timedelta(days=30)
stmt = (
    select(Order, User)
    .join(User, Order.user_id == User.id)
    .where(Order.status == 'completed', Order.created_at >= one_month_ago)
    .order_by(Order.created_at.desc())
)
results = session.execute(stmt).all()

Когда использовать: при работе с базами данных через SQLAlchemy, для генерации сложных запросов.

8. Документирование кода

Задача: автоматически сгенерировать docstring и комментарии.

Промт:

Добавь docstring в стиле Google к следующей функции, а также inline-комментарии для сложных участков. Объясни, что делает каждый параметр и что возвращает функция.

```python
# код

**Пример результата:**
```python
def calculate_discount(price: float, discount_percent: float) -> float:
    """Вычисляет цену со скидкой.

    Args:
        price: Исходная цена товара.
        discount_percent: Размер скидки в процентах (0-100).

    Returns:
        Цена после применения скидки.

    Raises:
        ValueError: Если discount_percent вне диапазона [0, 100].
    """
    if not 0 <= discount_percent <= 100:
        raise ValueError("Скидка должна быть от 0 до 100")
    return price * (1 - discount_percent / 100)

Когда использовать: при написании библиотек, API, для улучшения читаемости кода.

9. Конвертация кода между версиями Python

Задача: обновить код с Python 2 на Python 3 или с 3.8 на 3.12.

Промт:

Перепиши следующий код с Python 2 на Python 3. Учти изменения в синтаксисе print, делении, работе со строками и исключениями.

```python
# код на Python 2

**Пример результата:**
Исходный код (Python 2):
```python
print "Hello"
result = 5 / 2
except Exception, e:
    pass

После конвертации:

print("Hello")
result = 5 / 2  # в Python 3 это 2.5
except Exception as e:
    pass

Когда использовать: при миграции legacy-проектов на новые версии Python.

10. Генерация регулярных выражений

Задача: создать regex для сложного шаблона.

Промт:

Напиши регулярное выражение на Python для поиска email-адресов в тексте. Объясни каждую часть паттерна. Приведи пример использования с re.findall.

Пример результата:

import re

pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
text = "Контакты: test@example.com, support@company.ru"
emails = re.findall(pattern, text)
print(emails)  # ['test@example.com', 'support@company.ru']

Когда использовать: для парсинга текста, валидации данных, обработки логов.

11. Асинхронный код (asyncio)

Задача: преобразовать синхронный код в асинхронный.

Промт:

Перепиши следующую функцию так, чтобы она работала асинхронно с использованием asyncio. Добавь обработку таймаутов и ошибок.

```python
# синхронный код

**Пример результата:**
Исходный код:
```python
import requests
def fetch(url):
    return requests.get(url).text

Асинхронный вариант:

import aiohttp
import asyncio

async def fetch(url: str) -> str:
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.text()

Когда использовать: при работе с сетевыми запросами, в высоконагруженных приложениях.

12. Генерация mock-данных для тестов

Задача: создать реалистичные тестовые данные.

Промт:

Сгенерируй 100 записей пользователей в формате JSON с полями: id, name, email, age, created_at. Используй библиотеку Faker для реалистичности. Напиши скрипт на Python.

Пример результата:

from faker import Faker
import json
from datetime import datetime

fake = Faker()
users = []
for i in range(100):
    users.append({
        "id": i + 1,
        "name": fake.name(),
        "email": fake.email(),
        "age": fake.random_int(min=18, max=80),
        "created_at": fake.iso8601(),
    })
with open("users.json", "w") as f:
    json.dump(users, f, indent=2)

Когда использовать: для наполнения тестовой базы, демо-стендов, нагрузочного тестирования.

Заключение

Эти 12 промтов покрывают большинство ежедневных задач Python-разработчика: от написания кода до его оптимизации и тестирования. Главное правило — не слепо копировать сгенерированное, а адаптировать под свой проект. LLM не заменяет инженера, но становится мощным ускорителем, если использовать его системно. Попробуйте внедрить хотя бы 2–3 промта в свою работу, и вы заметите, как освобождается время для более творческих задач. А если у вас есть свои любимые промты — делитесь в комментариях.

Источники для углубления:
- Документация Python: https://docs.python.org/3/
- FastAPI: https://fastapi.tiangolo.com/
- SQLAlchemy: https://docs.sqlalchemy.org/
- pytest: https://docs.pytest.org/
- asyncio: https://docs.python.org/3/library/asyncio.html

← Все статьи

Комментарии

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

Интеграция Canva с AI-агентом ASI Biont: автоматизация дизайна без кода — экономия до 65% времени и рост конверсии на 32%

2 августа 2026

JUPITER на ISC: Как выглядит экзафлопсная наука в реальном бизнесе и AI

26 июня 2026

Как внедрить ISO 27001:2022 с помощью AI-обучения: курс Lead Implementer на Asibiont

25 июля 2026

Освойте финансовую грамотность: почему наш курс «Бухгалтерский учет и отчетность» с обучением на основе ИИ — ваш самый умный карьерный шаг

16 июля 2026

Курс «Управление стрессом и устойчивость» 2026: практическое руководство по преодолению выгорания на современном рабочем месте

7 августа 2026

Django и FastAPI — Python Web: Освойте современную разработку бэкенда в 2026 году

15 июля 2026

Apple открывает новую Siri AI для всех с публичной бета-версией iOS 27

15 июля 2026

Ваши промпты и навыки нуждаются в системе учета: как Mistral AI меняет правила игры

13 июля 2026

Как подключить VGA-дисплей на ESP32 к AI-агенту: интеграция через MQTT и Hardware Bridge

16 июля 2026