Введение
Когда в 2020 году OpenAI представила GPT-3, многие разработчики восприняли это как забавную игрушку: генерация стихов, шуток и текстов для соцсетей. Но с выходом GPT-4 в марте 2023 года ситуация кардинально изменилась. Модель научилась не только писать код, но и отлаживать его, предлагать архитектурные решения и объяснять сложные концепции. По данным исследования OpenAI (GPT-4 Technical Report, 2023), модель показала результаты на уровне 90-го перцентиля на экзамене Uniform Bar Exam и 88-го перцентиля на экзамене GRE Verbal. Для разработчиков это означало одно: наступила эра, когда AI может стать полноценным помощником в программировании.
В этой статье я собрал 10 промтов, которые помогут вам использовать GPT-4 для написания кода, отладки и рефакторинга. Каждый промт — это проверенный шаблон, который можно адаптировать под свой проект. Мы разберём не только формулировки, но и примеры результатов, чтобы вы могли сразу применить их в работе.
1. Базовые промты: написание кода с нуля
Промт 1: Генерация функции по описанию
Задача: Создать функцию на Python для обработки данных.
Промт:
Напиши функцию на Python, которая принимает список словарей с ключами 'name' и 'age', фильтрует людей старше 18 лет и возвращает отсортированный по возрасту список имён. Добавь обработку ошибок для пустого списка.
Результат:
def filter_adults_sorted(people):
if not people:
raise ValueError("Список людей пуст")
adults = [person['name'] for person in people if person.get('age', 0) > 18]
return sorted(adults)
GPT-4 корректно обрабатывает крайние случаи (пустой список) и использует get() для безопасного доступа к ключам.
Промт 2: Создание класса с методами
Задача: Разработать класс для управления задачами.
Промт:
Создай класс TaskManager на JavaScript с методами addTask, removeTask и getPendingTasks. Используй ES6 синтаксис. Каждая задача должна иметь id, title и статус.
Результат:
class TaskManager {
constructor() {
this.tasks = [];
}
addTask(title) {
const id = Date.now();
this.tasks.push({ id, title, status: 'pending' });
}
removeTask(id) {
this.tasks = this.tasks.filter(task => task.id !== id);
}
getPendingTasks() {
return this.tasks.filter(task => task.status === 'pending');
}
}
Модель использует Date.now() для генерации уникальных id и правильно реализует фильтрацию.
2. Продвинутые промты: отладка и оптимизация
Промт 3: Поиск бага в коде
Задача: Найти ошибку в функции, которая не возвращает ожидаемый результат.
Промт:
Вот код на Python, который должен суммировать числа от 1 до n, но возвращает 0 для n=5. Найди ошибку:
def sum_to_n(n):
total = 0
for i in range(n):
total += i
return total
Результат:
Ошибка в том, что range(n) генерирует числа от 0 до n-1, а не от 1 до n. Для n=5 сумма будет 0+1+2+3+4=10, а не 15. Исправленный код: range(1, n+1).
Промт 4: Оптимизация производительности
Задача: Улучшить скорость выполнения запроса к базе данных.
Промт:
У меня есть SQL-запрос, который работает медленно на таблице с 1 млн строк. Оптимизируй его, добавив индексы и изменив структуру:
SELECT * FROM orders WHERE status = 'pending' ORDER BY created_at DESC;
Результат:
-- Добавить составной индекс
CREATE INDEX idx_orders_status_created ON orders(status, created_at DESC);
-- Оптимизированный запрос (выбираем только нужные колонки)
SELECT id, user_id, total FROM orders WHERE status = 'pending' ORDER BY created_at DESC;
GPT-4 объясняет, что составной индекс ускоряет фильтрацию и сортировку, а выбор только нужных колонок уменьшает объём данных.
3. Экспертные промты: архитектура и рефакторинг
Промт 5: Рефакторинг legacy-кода
Задача: Переписать старый код на современный стандарт.
Промт:
Дан код на PHP (версия 5.6), который использует mysql_* функции. Перепиши его на PDO с подготовленными запросами:
$conn = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('db', $conn);
$result = mysql_query("SELECT * FROM users WHERE id = " . $_GET['id']);
Результат:
$pdo = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass');
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->execute(['id' => $_GET['id']]);
$result = $stmt->fetchAll();
Модель не только заменяет устаревшие функции, но и устраняет SQL-инъекцию, используя подготовленные запросы.
Промт 6: Проектирование архитектуры микросервисов
Задача: Спроектировать систему для интернет-магазина.
Промт:
Спроектируй архитектуру микросервисов для интернет-магазина. Опиши основные сервисы, их взаимодействие (синхронное/асинхронное) и протоколы (REST/gRPC). Учти требования: масштабируемость и отказоустойчивость.
Результат:
| Сервис | Функция | Взаимодействие | Протокол |
|--------|---------|----------------|----------|
| Product Service | Управление каталогом | Синхронное | REST |
| Order Service | Обработка заказов | Асинхронное (RabbitMQ) | gRPC |
| Payment Service | Платежи | Синхронное | REST |
| Notification Service | Уведомления | Асинхронное (Kafka) | gRPC |
GPT-4 предлагает использовать брокеры сообщений для асинхронных операций (например, при оформлении заказа), что повышает отказоустойчивость.
Промт 7: Генерация тестов
Задача: Написать unit-тесты для функции.
Промт:
Напиши тесты на pytest для функции validate_email, которая проверяет, что email содержит '@' и домен из списка разрешённых: ['gmail.com', 'yahoo.com'].
Результат:
import pytest
from validator import validate_email
def test_valid_gmail():
assert validate_email('test@gmail.com') == True
def test_invalid_domain():
assert validate_email('test@mail.ru') == False
def test_no_at():
assert validate_email('testgmail.com') == False
Модель покрывает позитивные и негативные сценарии.
4. Практические советы по составлению промтов
Как улучшить промт
Чтобы получить качественный результат, следуйте этим правилам:
- Указывайте контекст: язык программирования, версию, фреймворк.
- Описывайте ожидаемый результат: что должна возвращать функция, какие ошибки обрабатывать.
- Используйте примеры: покажите входные и выходные данные.
Типичные ошибки
| Ошибка | Пример | Исправление |
|---|---|---|
| Слишком общий запрос | «Напиши код для парсинга» | «Напиши функцию на Python, которая парсит HTML с помощью BeautifulSoup и извлекает заголовки h1» |
| Отсутствие ограничений | «Оптимизируй запрос» | «Оптимизируй SQL-запрос для таблицы с 10 млн строк, используя индексы» |
| Игнорирование крайних случаев | «Функция для деления» | «Добавь обработку деления на ноль и нечисловых входных данных» |
Заключение
GPT-4 — это не просто инструмент для генерации текста, а мощный помощник программиста. Правильно составленные промты позволяют сократить время на написание кода, отладку и рефакторинг в несколько раз. По данным опроса Stack Overflow (2024), более 70% разработчиков уже используют AI-инструменты в работе, и эта тенденция будет расти.
Попробуйте применить эти 10 промтов в своих проектах. Начните с простых задач — генерации функций, затем переходите к отладке и архитектуре. И помните: качество ответа напрямую зависит от того, насколько чётко вы сформулировали вопрос. Экспериментируйте, уточняйте контекст и не бойтесь задавать сложные вопросы. Удачи в кодинге!
Комментарии