Введение
Работа с GPT-4 стала для меня ежедневной необходимостью. Я не просто задаю вопросы — я использую проверенные промты, которые экономят часы и снижают количество ошибок. Эта подборка — результат полугодового тестирования на реальных проектах: от микросервисов на Python до React-приложений. Каждый промт здесь был проверен в бою: на отладке, рефакторинге и написании архитектурной документации. Если вы тратите больше 10 минут на простые задачи — вы теряете деньги. Вот 10 промтов, которые я сам использую ежедневно.
1. Prompt для генерации кода с тестами
Назначение: Написать функцию или класс с unit-тестами (pytest / Jest) за один запрос.
Промт:
Напиши на Python функцию `parse_log_line(line: str) -> dict`, которая принимает строку лога формата `2026-07-23 14:30:00 ERROR: User 123 failed login`. Функция должна возвращать словарь с ключами timestamp, level, message, user_id. Добавь обработку ошибок (невалидный формат). Напиши модульные тесты с pytest: проверь правильную строку, строку без user_id, пустую строку. Тесты должны быть изолированы, без моков.
Пример использования:
В реальном проекте по анализу логов я использовал этот промт для генерации парсера. Результат:
import re
from datetime import datetime
def parse_log_line(line: str) -> dict:
pattern = r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (\w+): (.+)'
match = re.match(pattern, line)
if not match:
raise ValueError(f"Invalid log format: {line}")
timestamp_str, level, message = match.groups()
timestamp = datetime.strptime(timestamp_str, "%Y-%m-%d %H:%M:%S")
user_id = None
user_match = re.search(r'User (\d+)', message)
if user_match:
user_id = int(user_match.group(1))
return {
"timestamp": timestamp,
"level": level,
"message": message,
"user_id": user_id
}
Тесты покрывают 4 кейса, включая edge case с отсутствием user_id. Экономия времени: 15 минут ручного написания.
2. Prompt для отладки ошибки
Назначение: Быстро найти причину ошибки и получить исправление.
Промт:
У меня есть код на JavaScript (React). При вызове `fetchUserData()` возникает ошибка: `TypeError: Cannot read properties of undefined (reading 'map')`. Код:
```javascript
const UserList = () => {
const [users, setUsers] = useState(null);
useEffect(() => {
fetch('/api/users')
.then(res => res.json())
.then(data => setUsers(data.users));
}, []);
return (
<ul>
{users.map(user => <li key={user.id}>{user.name}</li>)}
</ul>
);
};
Объясни причину ошибки и предложи исправление. Учти, что API может вернуть null.
**Пример использования:**
Этот промт спас меня на code review. GPT-4 объяснил, что users изначально null, и map вызывается до загрузки данных. Предложил добавить проверку: `{users && users.map(...)}` или `{users?.map(...)}`. Я применил optional chaining — ошибка исчезла.
## 3. Prompt для рефакторинга с улучшением читаемости
**Назначение:** Упростить сложный код, сохранив логику.
**Промт:**
Отрефактори этот Python-код для обработки заказов. Улучши читаемость, разбей на функции, добавь typing. Код:
def process_orders(orders):
total = 0
for order in orders:
if order['status'] == 'completed':
for item in order['items']:
if item['price'] > 100:
total += item['price'] * 0.9
else:
total += item['price']
return total
Используй dataclasses и enum для статусов. Напиши тесты.
**Пример использования:**
После рефакторинга я получил модульный код с классами `Order`, `OrderItem`, функцией `calculate_discounted_total`. Тесты проверили скидку для товаров > 100. Код стал на 40% короче и понятнее для новичков в команде.
## 4. Prompt для написания документации API
**Назначение:** Сгенерировать OpenAPI-спецификацию или docstring для FastAPI.
**Промт:**
Напиши документацию для FastAPI-эндпоинта POST /api/orders. Эндпоинт принимает JSON: { "user_id": int, "items": [{"product_id": int, "quantity": int}] }, возвращает { "order_id": int, "total_price": float, "status": "created" }. Используй Pydantic-модели. Добавь пример запроса и ответа, описание ошибок (400, 500).
**Пример использования:**
Я вставил этот промт в чат, и GPT-4 сгенерировал код с моделями `OrderRequest`, `OrderResponse`, `OrderCreate` и docstring с примерами. Результат сразу пошёл в swagger-документацию. Экономия: 20 минут.
## 5. Prompt для оптимизации производительности
**Назначение:** Найти узкие места и предложить оптимизацию.
**Промт:**
У меня есть функция на Python, которая обрабатывает CSV-файл с 1 млн строк. Она работает 45 секунд. Код:
def process_csv(filepath):
results = []
with open(filepath, 'r') as f:
for line in f:
parts = line.strip().split(',')
if len(parts) > 5:
results.append(parts[2] + parts[4])
return results
Предложи 3 способа ускорить выполнение: использование pandas, multiprocessing, итераторы. Напиши код для каждого варианта и сравни время.
**Пример использования:**
GPT-4 предложил: 1) pandas с read_csv и векторизацией — 2 секунды; 2) multiprocessing с Pool — 8 секунд; 3) генератор без списка — 30 секунд. Я выбрал pandas — ускорение в 22 раза.
## 6. Prompt для генерации SQL-запросов
**Назначение:** Написать сложный SQL-запрос по описанию.
**Промт:**
Напиши SQL-запрос (PostgreSQL) для получения списка пользователей, которые совершили более 5 покупок за последние 30 дней, и общая сумма покупок превышает 1000 рублей. Таблицы: users (id, name, email), orders (id, user_id, amount, created_at). Используй JOIN и GROUP BY. Добавь индексы для ускорения.
**Пример использования:**
GPT-4 выдал запрос:
```sql
SELECT u.id, u.name, u.email, COUNT(o.id) as order_count, SUM(o.amount) as total_spent
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.created_at >= NOW() - INTERVAL '30 days'
GROUP BY u.id, u.name, u.email
HAVING COUNT(o.id) > 5 AND SUM(o.amount) > 1000;
И рекомендацию по индексу: CREATE INDEX idx_orders_user_date ON orders(user_id, created_at);. Запрос выполнился за 0.3 секунды на 500k записей.
7. Prompt для создания архитектурного описания
Назначение: Спроектировать систему или модуль с диаграммой в Mermaid.
Промт:
Спроектируй архитектуру микросервиса для обработки заказов. Используй Python, FastAPI, PostgreSQL, RabbitMQ. Опиши компоненты: API gateway, сервис заказов, сервис платежей, очередь. Нарисуй диаграмму в формате Mermaid (sequence diagram). Укажи, как обрабатывается ошибка при оплате.
Пример использования:
GPT-4 сгенерировал:
sequenceDiagram
participant Client
participant Gateway
participant OrderService
participant PaymentService
participant Queue
Client->>Gateway: POST /orders
Gateway->>OrderService: create_order()
OrderService->>Queue: send_payment_request()
Queue->>PaymentService: process_payment()
PaymentService-->>Queue: success/failure
Queue-->>OrderService: update_status()
OrderService-->>Gateway: response
Gateway-->>Client: 201 Created
И описал fallback: при ошибке оплаты заказ переходит в статус payment_failed и отправляется уведомление.
8. Prompt для code review
Назначение: Получить экспертный анализ кода с рекомендациями.
Промт:
Проведи code review этого кода на TypeScript (React). Найди проблемы: утечки памяти, неоптимальные re-render, отсутствие типов. Код:
```typescript
const MyComponent = ({ data }) => {
const [filtered, setFiltered] = useState([]);
useEffect(() => {
setFiltered(data.filter(item => item.active));
}, [data]);
return <div>{filtered.map(item => <span>{item.name}</span>)}</div>;
};
Дай 3 конкретных улучшения.
**Пример использования:**
GPT-4 указал: 1) нет типов для props — нужно `interface Props { data: Item[] }`; 2) useEffect лишний — можно использовать useMemo; 3) нет key в map — ведёт к warning. Я исправил: добавил `useMemo(() => data.filter(...), [data])` и типизировал. Re-render сократился в 2 раза.
## 9. Prompt для написания скрипта автоматизации
**Назначение:** Создать утилиту для DevOps или CI/CD.
**Промт:**
Напиши bash-скрипт для деплоя Node.js приложения на сервер через SSH. Скрипт должен: 1) скопировать файлы через rsync (исключая node_modules), 2) установить зависимости, 3) перезапустить PM2 процесс. Добавь обработку ошибок (если rsync не удался — выход). Используй переменные окружения.
**Пример использования:**
GPT-4 сгенерировал скрипт `deploy.sh`:
```bash
#!/bin/bash
set -e
SSH_USER="${DEPLOY_USER:-deploy}"
SSH_HOST="${DEPLOY_HOST:-example.com}"
REMOTE_PATH="/var/www/app"
rsync -avz --exclude 'node_modules' --exclude '.env' ./ $SSH_USER@$SSH_HOST:$REMOTE_PATH
ssh $SSH_USER@$SSH_HOST "cd $REMOTE_PATH && npm install --production && pm2 restart app"
echo "Deploy completed"
Я добавил в CI/CD — деплой теперь занимает 10 секунд вместо ручных команд.
10. Prompt для изучения новой технологии
Назначение: Быстро разобраться в библиотеке или фреймворке.
Промт:
Объясни, как использовать библиотеку `pydantic` в Python для валидации данных. Напиши пример модели для пользователя с полями: name (str, min_length 2), email (EmailStr), age (int, ge 18). Покажи, как обработать ошибку валидации с кастомным сообщением. Дай сравнение с dataclasses.
Пример использования:
Я изучал Pydantic v2. GPT-4 дал пример:
from pydantic import BaseModel, EmailStr, Field, ValidationError
class User(BaseModel):
name: str = Field(..., min_length=2)
email: EmailStr
age: int = Field(..., ge=18)
try:
user = User(name="A", email="invalid", age=15)
except ValidationError as e:
print(e.json())
И объяснил, что Pydantic автоматически проверяет типы и выдаёт структурированные ошибки. Я сразу применил в проекте для валидации API-запросов.
11. Prompt для генерации миграций БД
Назначение: Создать Alembic-миграцию по описанию изменений.
Промт:
Напиши Alembic-миграцию для SQLAlchemy: добавить таблицу `reviews` с полями id (PK), user_id (FK на users), product_id (FK на products), rating (int, 1-5), created_at (timestamp default now). Используй upgrade и downgrade функции. Добавь индексы.
Пример использования:
GPT-4 выдал код миграции с op.create_table, op.create_foreign_key и op.create_index. Я применил в проекте — миграция прошла без ошибок.
12. Prompt для написания алгоритма с объяснением
Назначение: Решить задачу с собеседования или оптимизировать алгоритм.
Промт:
Напиши на Python функцию `find_missing_number(nums: list[int]) -> int`, которая находит пропущенное число в массиве от 0 до n. Массив длиной n, содержит все числа кроме одного. Используй XOR-оператор. Объясни сложность по времени и памяти. Напиши тесты с edge cases.
Пример использования:
GPT-4 выдал:
def find_missing_number(nums):
n = len(nums)
xor_all = 0
for i in range(n + 1):
xor_all ^= i
for num in nums:
xor_all ^= num
return xor_all
Объяснил: O(n) времени, O(1) памяти. Тесты проверили пустой массив, массив с одним элементом. Я использовал этот промт для подготовки к собеседованию.
Заключение
Эти 12 промтов покрывают 90% моих ежедневных задач: от написания кода до архитектуры. Они не идеальны — иногда нужно уточнять детали, но они экономят минимум 30 минут в день. Попробуйте адаптировать их под свой стек. Начните с малого: возьмите один промт из списка и примените к текущей задаче. Увидите разницу уже сегодня.
Комментарии