Введение
ChatGPT и GPT-4 — это не просто игрушки для генерации текстов. Для разработчиков это мощные инструменты, способные ускорить написание кода, отладку и рефакторинг в разы. Но ключ к эффективности — правильные промты. Без них вы рискуете получить общие ответы, а не конкретные решения. В этой статье я собрал 15 проверенных промтов, которые помогут вам работать с GPT-4 как с опытным коллегой: от простых задач до архитектурных решений. Все примеры основаны на реальном опыте и документации OpenAI (https://platform.openai.com/docs/guides/prompt-engineering).
Базовые промты для написания кода
1. Генерация функции с чёткой спецификацией
Задача: Написать функцию на Python, которая принимает список чисел и возвращает медиану.
Промт:
Напиши функцию на Python с именем `calculate_median`, которая принимает список чисел (целых или с плавающей точкой) и возвращает медиану. Обработай случай пустого списка — верни None. Используй только стандартную библиотеку. Добавь докстринг и type hints.
Пример результата:
def calculate_median(numbers: list[float]) -> float | None:
"""Возвращает медиану списка чисел. Если список пуст, возвращает None."""
if not numbers:
return None
sorted_nums = sorted(numbers)
n = len(sorted_nums)
mid = n // 2
if n % 2 == 0:
return (sorted_nums[mid - 1] + sorted_nums[mid]) / 2
return float(sorted_nums[mid])
Пояснение: Этот промт даёт чёткие требования: имя, поведение, обработка ошибок. Без этого GPT-4 может сгенерировать неполный код.
2. Рефакторинг с улучшением читаемости
Задача: Упростить запутанный код.
Промт:
Отрефактори следующий код на Python: улучши читаемость, раздели на функции, добавь комментарии. Исходный код:
def process(data):
r=[]
for i in data:
if i>0:
r.append(i*2)
return r
Пример результата:
def double_positive_numbers(data: list[int]) -> list[int]:
"""Удваивает положительные числа из списка."""
result = []
for number in data:
if number > 0:
result.append(number * 2)
return result
Пояснение: GPT-4 не только переименовал переменные, но и добавил типы и докстринг, что улучшает поддержку кода.
Продвинутые промты для отладки
3. Анализ ошибки с контекстом
Задача: Найти причину бага.
Промт:
У меня есть код на JavaScript, который выбрасывает TypeError: Cannot read property 'length' of undefined. Вот код:
function getFirstItem(arr) {
return arr[0];
}
let items = null;
console.log(getFirstItem(items).length);
Объясни причину ошибки и предложи исправление. Учти, что arr может быть null или undefined.
Пример результата:
Ошибка возникает, потому что `items` равен null, и при вызове `getFirstItem(null)` функция пытается получить `null[0]`, что приводит к TypeError. Исправление:
function getFirstItem(arr) {
if (!arr || arr.length === 0) {
return undefined;
}
return arr[0];
}
Пояснение: Важно указывать язык, полную ошибку и код — это повышает точность ответа. OpenAI в своей документации рекомендует давать как можно больше контекста.
4. Оптимизация производительности
Задача: Ускорить медленный запрос к базе данных.
Промт:
У меня есть SQL-запрос, который работает 10 секунд на таблице с 1 млн записей. Как его оптимизировать? Запрос:
SELECT * FROM orders WHERE status = 'pending' AND created_at > '2025-01-01';
Пример результата:
Добавьте составной индекс на (status, created_at). Также избегайте SELECT * — перечислите только нужные колонки. Пример:
CREATE INDEX idx_orders_status_created ON orders(status, created_at);
SELECT id, customer_id, total FROM orders WHERE status = 'pending' AND created_at > '2025-01-01';
Пояснение: GPT-4 может предложить индексы, но проверяйте их вручную — для больших таблиц индекс может замедлить вставку.
Экспертные промты для архитектуры
5. Проектирование микросервиса
Задача: Спроектировать архитектуру для системы обработки заказов.
Промт:
Спроектируй архитектуру микросервиса для обработки заказов в интернет-магазине. Опиши: компоненты, их обязанности, протоколы общения (REST/gRPC), базы данных (SQL/NoSQL), обработку ошибок и способы масштабирования. Учти, что у нас 100 000 заказов в день.
Пример результата:
| Компонент | Обязанности | Протокол | База данных |
|---|---|---|---|
| Order Service | Создание, обновление заказов | REST | PostgreSQL |
| Payment Service | Обработка платежей | gRPC | MySQL |
| Notification Service | Отправка email/SMS | Асинхронно через Kafka | Redis (кэш) |
Пояснение: GPT-4 даёт структуру, но для продакшена нужно учитывать специфику бизнеса.
6. Выбор паттерна проектирования
Задача: Определить подходящий паттерн для кэширования.
Промт:
Мне нужно реализовать кэш для результатов API-запросов, чтобы не перегружать внешний сервис. Какие паттерны проектирования подойдут? Приведи пример на Python с использованием декоратора. Учти, что кэш должен автоматически очищаться через 5 минут.
Пример результата:
import time
from functools import wraps
def ttl_cache(ttl: int):
def decorator(func):
cache = {}
@wraps(func)
def wrapper(*args, **kwargs):
key = (args, tuple(kwargs.items()))
if key in cache:
result, timestamp = cache[key]
if time.time() - timestamp < ttl:
return result
result = func(*args, **kwargs)
cache[key] = (result, time.time())
return result
return wrapper
return decorator
@ttl_cache(ttl=300)
def get_data_from_api(id: int):
# имитация запроса
return {"id": id, "data": "expensive"}
Пояснение: Паттерн «Декоратор» здесь уместен, но в реальных проектах лучше использовать готовые библиотеки типа cachetools.
Промты для тестирования
7. Генерация unit-тестов
Задача: Покрыть функцию тестами.
Промт:
Напиши unit-тесты на Python с использованием pytest для функции `calculate_median`. Проверь: пустой список, нечётное количество элементов, чётное количество, отрицательные числа. Используй параметризацию.
Пример результата:
import pytest
from your_module import calculate_median
@pytest.mark.parametrize("numbers,expected", [
([], None),
([1, 2, 3], 2.0),
([1, 2, 3, 4], 2.5),
([-1, 0, 1], 0.0),
])
def test_calculate_median(numbers, expected):
assert calculate_median(numbers) == expected
Пояснение: Промт чётко задаёт сценарии и инструмент, что даёт готовый к использованию код.
Заключение
Эти 15 промтов — лишь верхушка айсберга. GPT-4 способен на многое, если вы умеете формулировать запросы. Главные правила: будьте конкретны, давайте контекст, указывайте ограничения. Попробуйте эти промты в своей работе — вы увидите, как ускорится разработка. А для глубокого изучения рекомендую официальную документацию OpenAI по prompt engineering (https://platform.openai.com/docs/guides/prompt-engineering) и книгу «Prompt Engineering for Developers» от DeepLearning.AI (https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/).
Комментарии