Python-бэкенд — это не только код, но и рутина: миграции, тесты, оптимизация запросов, деплой. По данным опроса Stack Overflow Developer Survey 2025, Python остаётся одним из самых востребованных языков для веб-разработки, а Django и FastAPI входят в топ-10 веб-фреймворков. Но даже с таким инструментарием разработчики тратят до 30% времени на повторяющиеся задачи. AI-ассистенты (ChatGPT, Claude, GitHub Copilot) способны автоматизировать значительную часть этой работы — если правильно формулировать промты. В этой подборке — 12 проверенных сценариев, которые я сам использую в ежедневной работе с Django, FastAPI и Flask. Каждый промт сопровождается примером и кодом.
1. Генерация CRUD-эндпоинтов для FastAPI
Промт:
"Сгенерируй FastAPI-роутер для модели Book (id, title, author, year, isbn). Используй Pydantic v2 для схем, SQLAlchemy 2.0 для ORM. Добавь пагинацию, фильтрацию по автору и году, обработку ошибок 404. Код должен быть готов к запуску."
Пример результата:
from fastapi import APIRouter, Depends, HTTPException, Query
from sqlalchemy.orm import Session
from . import models, schemas
from .database import get_db
router = APIRouter()
@router.get("/books/", response_model=list[schemas.BookOut])
def read_books(
author: str | None = None,
year: int | None = None,
skip: int = 0,
limit: int = Query(default=10, le=100),
db: Session = Depends(get_db),
):
query = db.query(models.Book)
if author:
query = query.filter(models.Book.author == author)
if year:
query = query.filter(models.Book.year == year)
return query.offset(skip).limit(limit).all()
Польза: экономит 20-30 минут рутинного кодинга, сразу включает best practices.
2. Миграции Django с автоматической проверкой
Промт:
"Напиши миграцию Django для добавления поля slug в модель Post с уникальным индексом и значением по умолчанию на основе title. Используй SlugField и prepopulated_fields в админке. Предложи команду для отката."
Пример:
from django.db import migrations, models
from django.utils.text import slugify
def generate_slug(apps, schema_editor):
Post = apps.get_model('blog', 'Post')
for post in Post.objects.all():
post.slug = slugify(post.title)
post.save()
class Migration(migrations.Migration):
dependencies = [('blog', '0002_auto_20250901_1200')]
operations = [
migrations.AddField(
model_name='post',
name='slug',
field=models.SlugField(default='', unique=True),
preserve_default=False,
),
migrations.RunPython(generate_slug, migrations.RunPython.noop),
]
Польза: избегает ошибок при ручном написании миграций, особенно с данными.
3. Тесты для API на pytest
Промт:
"Сгенерируй pytest-тесты для FastAPI-эндпоинта /books/ с использованием TestClient. Проверь успешный ответ, пагинацию, фильтрацию и ошибку 404. Используй фикстуры для тестовой БД."
Пример:
import pytest
from fastapi.testclient import TestClient
from app.main import app
client = TestClient(app)
def test_read_books():
response = client.get("/books/?skip=0&limit=5")
assert response.status_code == 200
assert len(response.json()) <= 5
def test_read_book_not_found():
response = client.get("/books/9999")
assert response.status_code == 404
Польза: покрытие тестами с первого раза, меньше багов в продакшене.
4. Оптимизация ORM-запросов в Django
Промт:
"Проанализируй этот Django ORM-запрос и предложи оптимизацию: Post.objects.filter(author__name='John').select_related('author'). Укажи, какие индексы добавить, и как избежать N+1."
Пример ответа AI:
- Использовать select_related для ForeignKey.
- Добавить db_index=True на author__name.
- Для ManyToMany — prefetch_related.
Польза: ускорение запросов в разы, особенно на больших данных.
5. Генерация Dockerfile и docker-compose для Flask
Промт:
"Напиши Dockerfile для Flask-приложения с Gunicorn и docker-compose с PostgreSQL и Redis. Учти кэширование слоёв и переменные окружения."
Пример Dockerfile:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["gunicorn", "-b", "0.0.0.0:8000", "app:app"]
Польза: быстрый старт контейнеризации без гугления.
6. Валидация Pydantic-схем
Промт:
"Создай Pydantic-схему для регистрации пользователя: email (EmailStr), пароль (мин. 8 символов, хотя бы одна цифра), возраст (>=18). Добавь кастомный валидатор для пароля."
Пример:
from pydantic import BaseModel, EmailStr, validator
class UserCreate(BaseModel):
email: EmailStr
password: str
age: int
@validator('password')
def password_strength(cls, v):
if len(v) < 8 or not any(c.isdigit() for c in v):
raise ValueError('Пароль слишком простой')
return v
Польза: надёжная валидация без ручного кода.
7. Настройка логирования и мониторинга
Промт:
"Настрой логирование в Django с выводом в файл и консоль, уровня INFO. Добавь middleware для логирования времени запроса. Подключи Sentry для отслеживания ошибок."
Пример:
LOGGING = {
'version': 1,
'handlers': {
'file': {'class': 'logging.FileHandler', 'filename': 'debug.log'},
'console': {'class': 'logging.StreamHandler'},
},
'loggers': {
'django': {'handlers': ['file', 'console'], 'level': 'INFO'},
},
}
Польза: быстрая диагностика проблем в продакшене.
8. Асинхронные задачи с Celery
Промт:
"Настрой Celery для FastAPI с Redis в качестве брокера. Создай задачу для отправки email и эндпоинт для её запуска."
Пример:
from celery import Celery
celery = Celery('tasks', broker='redis://localhost:6379/0')
@celery.task
def send_email(to: str):
# логика отправки
return f"Email sent to {to}"
Польза: разгрузка основного потока, масштабирование.
9. Аутентификация JWT в FastAPI
Промт:
"Реализуй JWT-аутентификацию в FastAPI: регистрация, логин, защищённый эндпоинт. Используй python-jose и passlib."
Пример:
from fastapi import Depends, HTTPException
from fastapi.security import OAuth2PasswordBearer
from jose import JWTError, jwt
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
async def get_current_user(token: str = Depends(oauth2_scheme)):
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
username: str = payload.get("sub")
if username is None:
raise HTTPException(status_code=401)
except JWTError:
raise HTTPException(status_code=401)
return username
Польза: безопасность из коробки, меньше уязвимостей.
10. Рефакторинг legacy-кода
Промт:
"Отрефактори этот Flask-роут: вынеси бизнес-логику в отдельный сервис, добавь типизацию, обработку исключений. Следуй принципам SOLID."
Пример: до и после — AI предлагает разделение на слои.
Польза: улучшение поддерживаемости и тестируемости.
11. Генерация OpenAPI-документации
Промт:
"Сгенерируй OpenAPI-спецификацию для FastAPI-приложения с эндпоинтами /books/ и /users/. Добавь описания, примеры запросов и ответов."
Пример: AI выдаёт YAML-файл, который можно сразу использовать в Swagger UI.
Польза: документация всегда актуальна, экономия времени.
12. Деплой на сервер с Ansible
Промт:
"Напиши Ansible-playbook для деплоя Django-приложения на Ubuntu: установка зависимостей, настройка Gunicorn, Nginx, systemd. Учти миграции и сбор статики."
Пример:
- hosts: webservers
tasks:
- name: Install packages
apt: name={{ item }} state=present
loop: [python3-pip, nginx, git]
- name: Clone repo
git: repo=https://github.com/user/repo.git dest=/var/www/app
Польза: автоматизация деплоя, повторяемость.
Сравнение фреймворков для промтов
| Критерий | Django | FastAPI | Flask |
|---|---|---|---|
| Скорость разработки | Высокая (батарейки) | Средняя (нужны библиотеки) | Низкая (много ручного) |
| Поддержка async | Частичная (Django 4+) | Полная | Через расширения |
| ORM | Django ORM | SQLAlchemy | SQLAlchemy |
| Аутентификация | Встроенная | JWT через библиотеки | Через расширения |
Как внедрять промты в рабочий процесс
- Начните с малого. Выберите 2-3 промта из подборки и примените на текущем проекте.
- Адаптируйте под свой стек. AI не знает ваших конвенций — добавьте в промт контекст: версии, стиль кода, требования.
- Проверяйте код. AI может генерировать устаревшие конструкции. Всегда тестируйте и ревьюйте.
- Комбинируйте. Например, сгенерируйте модель, затем миграцию, затем тесты — цепочка промтов ускоряет цикл разработки.
Промты — это не замена разработчику, а усилитель. Они берут на себя рутину, оставляя вам архитектуру и творчество. Попробуйте эти 12 сценариев — и вы заметите, как бэкенд от идеи до продакшена становится быстрее и предсказуемее. Делитесь своими находками в комментариях!
Комментарии