Введение
Генерация кода с помощью 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
Комментарии