Введение
ChatGPT и GPT-4 стали незаменимыми инструментами для разработчиков, позволяя ускорить написание кода, отладку и рефакторинг. Однако чтобы получить качественный результат, важно правильно формулировать запросы. В этой подборке — 10 проверенных промтов, которые я использую ежедневно в работе. Каждый промт сопровождается примером и кодом, чтобы вы могли сразу применить его в своих проектах.
1. Написание функции с нуля
Промт: «Напиши функцию на Python, которая принимает список чисел и возвращает сумму всех четных чисел. Используй list comprehension. Добавь документацию в стиле Google Docstring.»
Пример:
def sum_even_numbers(numbers):
"""Вычисляет сумму четных чисел в списке.
Args:
numbers: Список целых чисел.
Returns:
int: Сумма четных чисел.
"""
return sum(num for num in numbers if num % 2 == 0)
Почему работает: Указывая язык, стиль кода и документацию, вы получаете готовый к использованию результат без лишних правок.
2. Отладка ошибок
Промт: «У меня есть код на JavaScript. Он выдает ошибку 'Cannot read property of undefined'. Вот код: [вставьте код]. Найди причину и предложи исправление.»
Пример:
// Код с ошибкой:
let user = {};
console.log(user.name.toUpperCase());
Ответ GPT: Ошибка возникает, потому что user.name — undefined. Исправление: проверяйте существование свойства перед вызовом метода.
console.log(user.name?.toUpperCase());
Почему работает: Контекст ошибки и код позволяют GPT точно определить проблему и предложить исправление.
3. Рефакторинг с улучшением производительности
Промт: «Отрефактори этот код на Python для улучшения производительности. Используй генераторы вместо списков, если это возможно. Объясни каждое изменение.»
Пример:
# Исходный код:
def squares(nums):
result = []
for n in nums:
result.append(n**2)
return result
Ответ GPT: Использование генератора уменьшает потребление памяти.
def squares(nums):
return (n**2 for n in nums) # генератор, а не список
Почему работает: Четкое указание на улучшение производительности и требование объяснений делает код учебным материалом.
4. Генерация тестов
Промт: «Напиши unit-тесты для следующей функции на Python с использованием pytest. Покрой краевые случаи: пустой список, отрицательные числа, большие значения.»
Пример:
def divide(a, b):
if b == 0:
raise ValueError("Деление на ноль")
return a / b
Ответ GPT:
def test_divide_normal():
assert divide(10, 2) == 5.0
def test_divide_by_zero():
with pytest.raises(ValueError):
divide(1, 0)
def test_divide_negative():
assert divide(-6, 3) == -2.0
Почему работает: Указание на краевые случаи гарантирует полноту тестов.
5. Объяснение сложного кода
Промт: «Объясни этот код на Rust построчно. Предположи, что читатель знаком с основами синтаксиса, но не с замыканиями и владением.»
Пример:
let numbers = vec![1, 2, 3];
let doubled: Vec<_> = numbers.iter().map(
|x| x * 2).collect();
Ответ GPT: numbers.iter() создает итератор, `map(
|x| x * 2)применяет замыкание к каждому элементу,collect()` собирает результат в новый вектор.
Почему работает: Уровень детализации помогает быстро разобраться в незнакомом коде.
6. Создание архитектурного описания
Промт: «Опиши архитектуру микросервиса для обработки заказов. Используй CQRS и Event Sourcing. Включи компоненты: API Gateway, Command Handler, Event Store. Напиши на русском.»
Пример ответа: API Gateway принимает запросы и направляет их в Command Handler. Command Handler проверяет валидность и сохраняет событие в Event Store. Query Handler читает из проекций. Это разделяет команды и запросы (CQRS).
Почему работает: Конкретные паттерны и компоненты дают осмысленное описание.
7. Написание документации к API
Промт: «Напиши документацию к REST API для создания пользователя. Метод POST /users. Параметры: email (string, required), password (string, min 8 chars). Формат OpenAPI 3.0.»
Пример:
openapi: 3.0.0
paths:
/users:
post:
summary: Создать пользователя
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
format: email
password:
type: string
minLength: 8
Почему работает: Спецификация формата гарантирует совместимость с инструментами.
8. Поиск уязвимостей
Промт: «Найди уязвимости в этом SQL-запросе на Python. Предложи исправление с использованием параметризованных запросов.»
Пример:
cursor.execute(f"SELECT * FROM users WHERE email = '{email}'")
Ответ GPT: Уязвимость к SQL-инъекции. Исправление:
cursor.execute("SELECT * FROM users WHERE email = %s", (email,))
Почему работает: Конкретная уязвимость и исправление повышают безопасность кода.
9. Оптимизация запросов к БД
Промт: «У меня есть медленный SQL-запрос: SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id WHERE customers.city = 'Moscow'. Предложи оптимизацию: индексы, рефакторинг.»
Пример ответа: Добавьте индекс на customers.city и orders.customer_id. Рассмотрите материализованные представления для частых фильтров.
Почему работает: Указание на медленный запрос и контекст позволяет получить конкретные советы.
10. Генерация конфигурации CI/CD
Промт: «Создай конфигурацию GitHub Actions для Python проекта. Шаги: установка зависимостей, запуск тестов с pytest, линтинг с flake8. Используй Python 3.11.»
Пример:
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install -r requirements.txt
- run: pytest
- run: flake8 .
Почему работает: Четкие шаги и версии минимизируют ошибки.
11. Рефакторинг с паттернами проектирования
Промт: «Примени паттерн Стратегия к этому коду на Java: [вставьте код с if-else]. Объясни, как это улучшает расширяемость.»
Пример: Исходный код использует цепочку if-else для выбора алгоритма. Рефакторинг выделяет каждый алгоритм в отдельный класс, реализующий общий интерфейс. Это упрощает добавление новых алгоритмов без изменения существующего кода.
Почему работает: Паттерны делают код более гибким и поддерживаемым.
12. Написание скрипта для автоматизации
Промт: «Напиши bash-скрипт, который архивирует все файлы .log из директории /var/log, добавляет дату в имя архива и удаляет файлы старше 7 дней. Добавь обработку ошибок.»
Пример:
#!/bin/bash
LOG_DIR="/var/log"
ARCHIVE_NAME="logs_$(date +%Y%m%d).tar.gz"
tar -czf $ARCHIVE_NAME $LOG_DIR/*.log && find $LOG_DIR -name "*.log" -mtime +7 -delete
Почему работает: Конкретная задача с требованиями дает готовый скрипт.
13. Миграция кода между языками
Промт: «Перепиши эту функцию на Python в эквивалент на Go. Сохрани логику обработки ошибок.»
Пример: Функция на Python для чтения файла с обработкой исключений преобразуется в Go с использованием defer и errors.Is.
Почему работает: Указание на сохранение логики предотвращает потерю функциональности.
14. Создание шаблона проекта
Промт: «Создай структуру директорий для Flask-приложения с разделением на модели, представления, контроллеры. Добавь файл requirements.txt с Flask и SQLAlchemy.»
Пример:
myapp/
├── models/
│ └── user.py
├── views/
│ └── user_view.py
├── controllers/
│ └── user_controller.py
├── app.py
├── requirements.txt
Почему работает: Готовая структура ускоряет старт проекта.
15. Анализ производительности кода
Промт: «Проанализируй этот код на C++ на предмет узких мест. Предложи оптимизацию с использованием move-семантики.»
Пример: Исходный код копирует большие объекты. Оптимизация: передача по ссылке и использование std::move.
Почему работает: Конкретный язык и техника оптимизации дают точные рекомендации.
Заключение
Эти 15 промтов покрывают основные задачи разработчика: от написания кода до архитектурных решений. Используйте их как шаблоны, адаптируя под свой контекст. Помните, что качество ответа GPT напрямую зависит от четкости вашего запроса. Экспериментируйте с формулировками и всегда проверяйте результат. Начните с первого промта прямо сейчас — и вы увидите, как ускорится ваша работа.
Комментарии