20 промтов для генерации Python кода: от скриптов до FastAPI — экспертная подборка

Введение

Генерация кода с помощью AI — это не просто тренд, а реальный инструмент, который экономит часы разработки. Python, как один из самых популярных языков, идеально подходит для такой автоматизации: от простых скриптов до полноценных веб-приложений на FastAPI. Однако качество результата напрямую зависит от того, как вы формулируете запрос (промт). В этой статье я собрал 20 промтов, разбитых по уровням сложности: базовые, продвинутые и экспертные. Каждый промт сопровождается задачей, текстом запроса и примером вывода. Эта подборка основана на моём опыте работы с AI-ассистентами (GPT-4, Claude 3.5, Gemini Pro) и проверенных паттернах из документации Python и FastAPI.

Базовые промты (уровень 1)

Эти промты подходят для задач, которые решаются одним скриптом: работа с файлами, парсинг данных, простые алгоритмы.

1. Чтение CSV и фильтрация данных

Задача: Создать скрипт, который читает CSV-файл, фильтрует строки по условию и выводит результат.

Промт:

Напиши скрипт на Python, который читает файл 'data.csv' с колонками 'name', 'age', 'city'. Фильтруй строки, где age > 30 и city == 'Москва'. Выведи отфильтрованные данные в консоль в формате: 'name: age, city'. Обработай возможные ошибки (файл не найден, пустые значения). Используй модуль csv.

Пример результата (вывод):

Иван: 35, Москва
Мария: 42, Москва

2. Генератор паролей

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

Промт:

Создай функцию generate_password(length=12, use_digits=True, use_special=True), которая возвращает строку случайных символов. Используй random.choice и string.ascii_letters, string.digits, string.punctuation. Добавь проверку: длина должна быть не менее 4.

Пример результата (вызов):

print(generate_password(8, use_digits=True, use_special=False))
# 'AeR3tY7k'

3. Калькулятор с CLI-интерфейсом

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

Промт:

Напиши скрипт на Python, который принимает три аргумента командной строки: число1, оператор (+, -, *, /), число2. Выведи результат. Обработай деление на ноль и неверный оператор. Используй sys.argv.

Пример использования:

python calc.py 10 + 5
# 15

4. Скачивание изображения по URL

Задача: Скрипт для скачивания файла из интернета.

Промт:

Напиши функцию download_image(url, save_path), которая скачивает изображение по URL и сохраняет его локально. Используй модули requests и os. Добавь обработку ошибок (неверный URL, нет доступа).

Пример кода (сокращённо):

import requests
def download_image(url, save_path):
    response = requests.get(url, stream=True)
    if response.status_code == 200:
        with open(save_path, 'wb') as f:
            f.write(response.content)

5. Поиск дубликатов в списке

Задача: Написать функцию, которая находит все дубликаты в списке.

Промт:

Напиши функцию find_duplicates(lst), которая возвращает список элементов, встречающихся более одного раза. Порядок сохрани. Используй Counter из collections.

Пример:

print(find_duplicates([1, 2, 2, 3, 4, 4, 5]))
# [2, 4]

Продвинутые промты (уровень 2)

Здесь задачи требуют понимания архитектуры: многопоточность, асинхронность, работа с API.

6. Асинхронный парсер с aiohttp

Задача: Собрать данные с нескольких URL параллельно.

Промт:

Создай асинхронный скрипт на Python, который принимает список URL и параллельно загружает их содержимое, используя aiohttp. Выведи статус-коды и длину контента для каждого. Используй asyncio.gather. Обработай таймауты (5 секунд).

Пример вывода:

https://example.com: 200, 1234 bytes
https://httpbin.org/delay/2: 200, 456 bytes

7. Веб-скрапинг с BeautifulSoup

Задача: Извлечь заголовки новостей с сайта.

Промт:

Напиши скрипт, который получает HTML-страницу по URL (например, 'https://news.ycombinator.com/'), находит все заголовки в тегах <a> с классом 'storylink', и выводит их тексты. Используй requests и BeautifulSoup. Обработай ошибки подключения.

Пример вывода (сокращённо):

- Show HN: A new open-source database
- Ask HN: Best practices for microservices

8. Работа с SQLite через ORM

Задача: Создать базу данных и выполнить CRUD-операции.

Промт:

Создай скрипт на Python, который использует SQLAlchemy для работы с SQLite. Определи модель User (id, name, email). Напиши функции add_user, get_user_by_email, update_user_email, delete_user. Используй session.add, session.commit. Добавь обработку дубликатов email.

Пример кода:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker

Base = declarative_base()
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String, unique=True)

9. Telegram-бот для отправки сообщений

Задача: Создать простого бота, который отвечает на команду /start.

Промт:

Напиши скрипт для Telegram-бота на Python, используя библиотеку python-telegram-bot (версия 20.x). Бот должен отвечать на команду /start приветствием и на команду /help списком команд. Используй Application и CommandHandler. Токен бери из переменной окружения 'BOT_TOKEN'.

Пример кода (фрагмент):

from telegram.ext import Application, CommandHandler
async def start(update, context):
    await update.message.reply_text('Привет! Я бот.')

10. Генерация PDF-отчёта

Задача: Создать PDF-файл с таблицей и заголовком.

Промт:

Используя библиотеку reportlab, напиши функцию generate_report(data, filename), где data  список словарей (например, [{'name': 'Alice', 'score': 95}]). Создай PDF с заголовком 'Отчёт' и таблицей. Используй SimpleDocTemplate и Table.

Экспертные промты (уровень 3)

Эти промты ориентированы на создание API, микросервисов и сложных систем.

11. FastAPI с CRUD и SQLAlchemy

Задача: Полноценный REST API для управления пользователями.

Промт:

Создай приложение на FastAPI с эндпоинтами: GET /users (список), POST /users (создание), GET /users/{id} (получение), PUT /users/{id} (обновление), DELETE /users/{id} (удаление). Используй SQLAlchemy с SQLite, Pydantic для валидации (схемы UserCreate, UserUpdate). Добавь обработку ошибок (404, 422). Используй async сессии (AsyncSession).

Пример кода (сокращённо):

from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession

app = FastAPI()

@app.post('/users', response_model=UserOut)
async def create_user(user: UserCreate, db: AsyncSession = Depends(get_db)):
    # логика создания

12. Аутентификация с JWT

Задача: Добавить авторизацию в FastAPI.

Промт:

Реализуй аутентификацию в FastAPI с помощью JWT. Используй библиотеку python-jose. Создай эндпоинт POST /login, который принимает username и password, проверяет их (хардкод: admin/admin), и возвращает access_token (срок действия 30 минут). Добавь зависимость get_current_user для защиты эндпоинтов. Используй OAuth2PasswordBearer.

13. Асинхронная очередь задач с Celery

Задача: Отправка email в фоне.

Промт:

Напиши приложение на FastAPI, которое при POST /send-email ставит задачу в очередь Celery (брокер Redis). Задача send_email имитирует отправку (time.sleep(5)). Верни task_id. Добавь эндпоинт GET /task/{task_id} для проверки статуса.

14. WebSocket чат с FastAPI

Задача: Реалтайм чат.

Промт:

Создай приложение FastAPI с WebSocket эндпоинтом /ws/{username}. Сервер принимает сообщения и рассылает их всем подключённым клиентам. Используй ConnectionManager (словарь с username: WebSocket). Добавь обработку отключения.

15. Микросервис с gRPC

Задача: Определить gRPC сервис и клиент.

Промт:

Создай gRPC сервис на Python с помощью grpcio. Определи в .proto файле сервис Greeter с RPC SayHello (принимает HelloRequest, возвращает HelloReply). Реализуй сервер и клиент. Используй протокол buffer.

16. Кэширование с Redis

Задача: Кэшировать результаты запросов.

Промт:

В FastAPI приложении добавь кэширование для GET /users с помощью Redis. Используй aioredis. Кэш храни 60 секунд. При первом запросе — читай из БД, записывай в кэш; при повторных — отдавай из кэша.

17. Пагинация и фильтрация

Задача: Реализовать эндпоинт с пагинацией.

Промт:

В FastAPI создай эндпоинт GET /items с параметрами page (int, default=1), per_page (int, default=10), search (str, optional). Верни список items и метаданные: total, page, pages. Используй SQLAlchemy offset/limit.

18. Загрузка файлов с валидацией

Задача: Эндпоинт для загрузки изображений.

Промт:

Создай POST /upload, который принимает файл (тип image/jpeg или image/png, не более 5 MB). Сохрани в папку uploads с уникальным именем (uuid). Верни URL файла. Используй UploadFile из FastAPI.

19. Тестирование pytest

Задача: Написать тесты для FastAPI.

Промт:

Напиши тесты для приложения FastAPI с использованием pytest и httpx. Протестируй GET /users (статус 200, тип данных list), POST /users (создание, статус 201), GET /users/{id} (404 для несуществующего). Используй TestClient.

20. Docker Compose для развёртывания

Задача: Упаковать FastAPI + PostgreSQL + Redis.

Промт:

Создай docker-compose.yml для приложения FastAPI, которое использует PostgreSQL (база данных) и Redis (кэш). Включи сервисы: web (сборка из Dockerfile), db (image: postgres:15), redis (image: redis:7). Настрой переменные окружения: DATABASE_URL, REDIS_URL. Добавь healthcheck для db.

Заключение

Эти 20 промтов покрывают широкий спектр задач — от базовых скриптов до микросервисной архитектуры. Ключ к успеху — точность формулировки: указывайте библиотеки, версии, ожидаемый формат вывода. AI-ассистенты вроде GPT-4 отлично справляются с шаблонным кодом, но всегда проверяйте результат: тестируйте на граничных случаях и следите за безопасностью (инъекции, экранирование). Помните, что генерация кода — это инструмент, а не замена мышлению. Используйте промты как стартовую точку, адаптируйте под свои нужды и углубляйтесь в документацию. Например, FastAPI активно развивается, и лучшие практики описаны в официальном руководстве (fastapi.tiangolo.com). Удачи в кодинге!

Для интеграции AI-генерации кода в ваши проекты изучите возможности платформы ASI Biont — подробнее на asibiont.com/courses

← Все статьи

Комментарии