Введение
Каждый разработчик знает, как много времени уходит на поиск и исправление ошибок. Согласно отчёту Stripe (2020), разработчики тратят до 17 часов в неделю на отладку — это почти половина рабочего времени. Современные AI-модели, такие как GPT-4 и Claude, способны значительно ускорить этот процесс, если правильно формулировать запросы (промты). В этой подборке — 10 готовых промтов для разных сценариев отладки: от поиска логических ошибок до анализа логов и code review. Каждый промт сопровождается реальным примером кода, чтобы вы могли сразу скопировать и использовать.
Важно: Промты рассчитаны на работу с ChatGPT, Claude или локальными моделями (например, Ollama с llama3). Адаптируйте их под свой контекст, подставляя конкретный код или логи.
1. Универсальный поиск багов «на лету»
Когда использовать: Вы написали функцию, но она возвращает неожиданный результат. Не хотите тратить время на ручной дебаг — пусть AI найдёт ошибку.
Промт:
Проверь этот код на наличие логических ошибок, синтаксических проблем и несоответствий типов данных. Перечисли все найденные баги и предложи исправления. Если ошибок нет — подтверди это.
[вставьте код]
Пример использования:
def calculate_discount(price: float, discount_percent: float) -> float:
if discount_percent > 100:
return 0
return price - (price * discount_percent / 100) # вроде верно
Ответ модели укажет на отсутствие проверки отрицательных скидок и предложит добавить if discount_percent < 0: discount_percent = 0. Мгновенная экономия времени на ручном тестировании.
Совет: Для многофайловых проектов добавляйте в промт «учти все импорты и зависимости».
2. Объяснение ошибки по stack trace
Когда использовать: Вы получили исключение с длинным трейсом, но не понимаете, что пошло не так. AI может «перевести» техническое сообщение на человеческий язык и подсказать причину.
Промт:
Вот stack trace из моего приложения. Объясни простыми словами, почему произошла эта ошибка, и укажи, в какой строке кода проблема. Предложи три возможных исправления.
[вставьте traceback]
Пример:
Traceback (most recent call last):
File "app.py", line 23, in <module>
result = divide(10, 0)
ZeroDivisionError: division by zero
Модель объяснит, что деление на ноль недопустимо, предложит добавить проверку делителя или использовать try/except. Это быстрее, чем гуглить каждый трейс.
3. Анализ логов и поиск аномалий
Когда использовать: У вас гигабайты логов, и нужно найти повторяющиеся ошибки или необычные паттерны.
Промт:
Проанализируй следующие логи. Выдели: (1) наиболее частые типы ошибок, (2) время их возникновения, (3) возможные первопричины. Если есть явные аномалии (например, резкий рост числа ошибок в определённый час) — укажи это.
[логи, первые 100–200 строк, чтобы уложиться в контекст]
Пример:
2026-07-25 10:01:23 ERROR Timeout connecting to DB
2026-07-25 10:01:24 ERROR Timeout connecting to DB
2026-07-25 10:02:00 INFO Connection restored
Модель заметит кластер ошибок в 10:01 и предположит сбой в пуле соединений. Это помогает быстро локализовать причину без ручного чтения тысяч строк.
4. Генерация юнит-тестов для выявления багов
Когда использовать: Вы хотите проверить, что функция работает корректно во всех граничных случаях.
Промт:
Напиши юнит-тесты на [фреймворк, например pytest] для следующей функции. Покрой основные сценарии: успешное выполнение, краевые случаи (пустые входные данные, отрицательные значения, None), и ожидаемые исключения. Используй паттерн AAA (Arrange-Act-Assert).
[код функции]
Пример:
def get_user_age(user_id: int) -> int:
# возвращает возраст из БД, может выбросить ValueError если id < 0
if user_id < 0:
raise ValueError("Invalid ID")
# ...
Модель сгенерирует тесты с pytest.raises, что сразу выявит недостающую обработку user_id == 0.
5. Code review с акцентом на потенциальные баги
Когда использовать: Вы готовите PR и хотите, чтобы AI провёл предварительный ревью.
Промт:
Проведи code review этого кода. Особое внимание удели: ошибкам в бизнес-логике, race condition, утечкам ресурсов, неправильной обработке исключений и несоответствию типов. Опиши критичные проблемы первыми, затем рекомендации.
[код]
Пример:
with open("file.txt") as f:
data = f.read()
return data
Модель заметит, что файл может быть слишком большим — предложит читать построчно. Такие нюансы часто упускаются при ручном ревью.
6. Оптимизация медленного кода (с исправлением багов)
Когда использовать: Код работает, но слишком медленно. Возможно, есть скрытая ошибка, вызывающая излишние вычисления.
Промт:
Оптимизируй этот код по времени выполнения и памяти. При этом исправь любые логические ошибки, которые заметишь. После изменений объясни, что именно было улучшено.
[код]
Пример:
result = []
for i in range(len(lst)):
if lst[i] not in result:
result.append(lst[i]) # O(n^2)
Модель заменит на list(dict.fromkeys(lst)) — O(n), и заметит, что оригинальный код не сохраняет порядок? (нет, сохраняет), но предложит лучший вариант.
7. Перевод кода между языками с выявлением несоответствий
Когда использовать: Мигрируете проект с Python на JavaScript или рефакторите легаси.
Промт:
Переведи этот код на [целевой язык]. После перевода проверь, что семантика полностью совпадает: учти различия в типах данных, передаче по ссылке/значению, работе с памятью. Если есть потенциальные баги из-за разных парадигм — подсвети их.
[исходный код]
Пример:
def fetch_data(limit=None):
if limit is None:
limit = 100
return [i for i in range(limit)]
При переводе на JavaScript модель заметит, что None в JS превращается в undefined или null, и предложит явную проверку, избегая бага.
8. Обработка ошибок и добавление корректных исключений
Когда использовать: В коде нет try/except, или они написаны неправильно.
Промт:
Добавь в этот код корректную обработку исключений. Используй специфичные типы ошибок (не просто except Exception). Для каждой ошибки укажи в комментарии, почему она может возникнуть и как её логировать.
[код без обработки]
Пример:
def connect(host, port):
sock = socket.socket()
sock.connect((host, port))
Модель обернёт в try с socket.timeout и ConnectionRefusedError, добавит логирование — это предотвратит падение продакшена.
9. Поиск проблем с безопасностью, ведущих к багам
Когда использовать: Нужно убедиться, что код не уязвим для SQL-инъекций, XSS и других атак.
Промт:
Проверь этот код на уязвимости безопасности, которые могут вызывать баги или утечку данных. Особое внимание удели: SQL-инъекциям, XSS, небезопасной десериализации, использованию eval/exec. Предложи исправления с использованием безопасных практик.
[код]
Пример:
query = f"SELECT * FROM users WHERE id = {user_id}" # инъекция
Модель укажет на опасность и заменит на параметризованный запрос.
10. Рефакторинг с сохранением поведения и устранением багов
Когда использовать: Нужно переписать «спагетти-код», не сломав логику.
Промт:
Выполни рефакторинг этого кода: разбей на маленькие функции, дай осмысленные имена, убери дублирование. При этом исправь любые логические ошибки, которые заметишь. После рефакторинга напиши краткую документацию каждой функции.
[код]
Пример:
def process(data):
a = data['val'] * 2
# ... 50 строк с глобальными переменными
return a
Модель разобьёт код на 3–4 функции, заметит, что data['val'] может не существовать — добавит проверку.
Заключение
Эти 10 промтов помогут вам быстрее находить и исправлять баги, анализировать логи, проводить code review и рефакторинг. Главное — не копируйте их слепо, а адаптируйте под свой язык, фреймворк и контекст. Например, для JavaScript добавьте в промт «учитывай асинхронность», для Go — «обрати внимание на горутины и каналы».
Попробуйте прямо сегодня: возьмите самый надоевший баг и отправьте его в AI с одним из промтов. Часто оказывается, что проблема решается за минуту, а не за час. А чтобы не терять время на ручное копирование, заведите файлик с избранными промтами — это превратит отладку из рутины в удовольствие.
Использованные источники: документация Python (docs.python.org), MDN Web Docs, практические руководства OpenAI по prompt engineering (platform.openai.com/docs/guides/prompt-engineering).
Комментарии