Нейросеть для исправления кода: как правильно дать ошибку и получить фикс

Качество исправления зависит от того, что вы показали модели. Разбираем набор данных об ошибке, шаблон промпта, запрос минимального диффа и проверку тестом.

5 мин · · разработка · API-ключи

Нейросеть для исправления кода хорошо справляется там, где ей показали ошибку целиком, а не фразу «не работает». Разница между «модель угадала» и «модель нашла причину» почти всегда сводится к контексту: полный стектрейс, нужный кусок кода, версии, ожидаемое и фактическое поведение. Ниже набор данных, который стоит приложить к запросу, шаблон промпта, способ получить минимальный дифф и порядок проверки фикса тестом.

Нейросеть для исправления кода: что показать модели

Минимальный набор, без которого ответ превращается в гадание:

  1. Текст ошибки и стектрейс целиком. Не пересказ, а копия. Верхние строки трейса часто указывают на библиотеку, а причина лежит в вашем вызове ниже.
  2. Код, на который указывает трейс. Функция, где упало, и то, что её вызывает. Не весь репозиторий, а 30-100 строк вокруг.
  3. Версии. Язык, фреймворк, ключевые библиотеки, ОС. Одна и та же ошибка по-разному лечится в разных мажорных версиях.
  4. Ожидаемое и фактическое поведение. Одной фразой: «должен вернуться список из 3 элементов, а возвращается пустой».
  5. Что уже пробовали. Это экономит круг «попробуйте перезапустить».
  6. Входные данные, на которых воспроизводится. Минимальный пример лучше, чем описание.

Чего прикладывать не надо: ключи, пароли, токены, персональные данные из логов. Перед отправкой пройдитесь по трейсу и замените значения на заглушки. О том, как не утекают данные при логировании, подробно в статье про логирование LLM без утечки.

Шаблон промпта

Структура важнее красивых слов. Работающий вариант:

bash
Роль: ты помогаешь исправить ошибку в проекте на Python 3.12 (Django 5.1).

Ошибка (стектрейс целиком):
<вставьте трейс>

Код, где она возникает (app/orders.py, строки 40-95):
<вставьте код>

Ожидалось: <что должно происходить>
Получилось: <что происходит>
Уже пробовал: <что не помогло>

Задача:
1. Объясни причину в 2-3 предложениях.
2. Предложи минимальное исправление в формате unified diff.
3. Не переписывай функцию целиком и не меняй код, не связанный с ошибкой.
4. Если данных не хватает, сначала задай уточняющие вопросы.
5. Предложи тест, который падает до исправления и проходит после.

Три пункта здесь работают сильнее остальных. «Минимальный дифф» защищает от переписывания всего файла. «Если данных не хватает, спроси» снижает вероятность уверенной выдумки. «Тест, который падает до исправления» превращает гипотезу в проверяемый факт.

Скрипт: отправить трейс и файл одним вызовом

Если вы не пользуетесь агентом, а вставляете ошибки вручную, удобно завернуть шаблон в небольшой скрипт. Он работает через OpenAI-совместимый формат Zukko (chat completions):

bash
import sys
from pathlib import Path
from openai import OpenAI

client = OpenAI(base_url="https://api.zukko.pro/v1", api_key="fetch_ваш_ключ")

trace = Path(sys.argv[1]).read_text()   # файл с трейсом
source = Path(sys.argv[2]).read_text()  # файл с кодом
versions = sys.argv[3] if len(sys.argv) > 3 else "версии не указаны"

prompt = f"""Версии: {versions}

Стектрейс:
{trace}

Запуск: python fix.py trace.txt app/orders.py "Python 3.12, Django 5.1". Для сравнения подставьте в model другую модель из каталога, например gpt-6.1-sol, deepseek-v4.1-flash или claude-opus-5-5. Список и цены: GET https://api.zukko.pro/v1/models.

Агент вместо ручной вставки

Если проект большой, вставлять куски вручную неудобно. Агент, например Claude Code, сам открывает файлы по трейсу, запускает тесты и показывает дифф. Настройка описана в документации по Claude Code: переменные ANTHROPIC_BASE_URL=https://api.zukko.pro (без /v1) и ANTHROPIC_AUTH_TOKEN=fetch_....

Типичный запрос агенту: «тест test_order_total падает с этим трейсом, найди причину и исправь минимально, затем запусти тест». Ключевое условие: у агента должна быть команда, которой он проверит результат. Без неё агент остановится на «выглядит правильно».

Проверка фикса

Принять предложенный дифф вслепую нельзя, даже если объяснение звучит убедительно. Порядок:

  1. Воспроизведите ошибку до исправления. Запустите тест или команду и убедитесь, что она падает ровно так, как описано. Если воспроизвести нельзя, модель чинит гипотетическую проблему.
  2. Примените дифф и прочитайте его целиком. Лишние правки в соседних местах повод отклонить.
  3. Запустите упавший тест, затем весь набор. Фикс одного теста, ломающий два других, не фикс.
  4. Проверьте незнакомые вызовы. Модель может предложить функцию или параметр, которых нет в вашей версии библиотеки. Сверьте с документацией библиотеки.
  5. Закоммитьте отдельно. Исправление и тест одним коммитом, чтобы откатить было просто.

Если первая попытка не помогла, не просите «попробуй ещё раз». Отправьте новый результат: что изменилось в трейсе после применения диффа. Это новый факт, и модель работает с ним лучше, чем с повтором задачи.

Сколько стоит исправление

Типичная ошибка с контекстом 6 000 входных токенов (трейс, код, версии, промпт) и ответом 1 500 токенов (объяснение, дифф, тест). Вход 0,006 млн, выход 0,0015 млн. Цены Zukko на 18 октября 2026, $ за 1M токенов.

МодельРасчётИтого
claude-sonnet-5-5 (0,4 / 2)0,006 × 0,4 + 0,0015 × 2 = 0,0024 + 0,003$0.0054
gpt-6.1-sol (0,27 / 1,32)0,006 × 0,27 + 0,0015 × 1,32 = 0,00162 + 0,00198$0.0036
deepseek-v4.1-flash (0,013 / 0,038)0,006 × 0,013 + 0,0015 × 0,038 = 0,000078 + 0,000057$0.000135

Стоимость одной попытки несопоставима с временем разработчика, поэтому экономить на модели имеет смысл только в массовых сценариях. Для сложных багов с гонками и многофайловыми зависимостями разумно попробовать модель посильнее, например claude-opus-5-5 (индекс силы 58 против 48 у claude-sonnet-5-5), и проверить на своём случае. Для автоматической проверки кода в CI см. статью про код-ревью через API.

Частые вопросы

Какая нейросеть для проверки кода и исправления ошибок лучше?

Мы не утверждаем, что одна модель пишет лучше другой. Ориентируйтесь на цену, контекст и индекс силы из каталога и прогоните 5-10 своих реальных багов через две-три модели.

Можно ли просто вставить весь проект в запрос?

Окно у моделей большое (1M токенов у Claude, GPT и DeepSeek), но лишний код шумит и стоит денег. Лучше дать трейс, функцию и её вызывающих, а остальное агент доберёт сам.

Что делать, если модель предлагает несуществующую функцию?

Сообщите ей версию библиотеки и попросите опираться только на документированный API этой версии. Затем проверьте результат запуском: код, который не запускается, ответ не принимается.

Как платить за API из России?

Баланс Zukko пополняется в долларах от $1: через СБП в рублях, картой MasterCard или криптой. Одной исправленной ошибки по расчёту выше хватит на доли цента, так что для проб достаточно минимального пополнения.

Чтобы попробовать описанный подход, создайте ключ в кабинете и запустите скрипт выше на своей ошибке.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.