Нейросеть для исправления кода: как правильно дать ошибку и получить фикс
Качество исправления зависит от того, что вы показали модели. Разбираем набор данных об ошибке, шаблон промпта, запрос минимального диффа и проверку тестом.
5 мин · · разработка · API-ключи
Нейросеть для исправления кода хорошо справляется там, где ей показали ошибку целиком, а не фразу «не работает». Разница между «модель угадала» и «модель нашла причину» почти всегда сводится к контексту: полный стектрейс, нужный кусок кода, версии, ожидаемое и фактическое поведение. Ниже набор данных, который стоит приложить к запросу, шаблон промпта, способ получить минимальный дифф и порядок проверки фикса тестом.
Нейросеть для исправления кода: что показать модели
Минимальный набор, без которого ответ превращается в гадание:
- Текст ошибки и стектрейс целиком. Не пересказ, а копия. Верхние строки трейса часто указывают на библиотеку, а причина лежит в вашем вызове ниже.
- Код, на который указывает трейс. Функция, где упало, и то, что её вызывает. Не весь репозиторий, а 30-100 строк вокруг.
- Версии. Язык, фреймворк, ключевые библиотеки, ОС. Одна и та же ошибка по-разному лечится в разных мажорных версиях.
- Ожидаемое и фактическое поведение. Одной фразой: «должен вернуться список из 3 элементов, а возвращается пустой».
- Что уже пробовали. Это экономит круг «попробуйте перезапустить».
- Входные данные, на которых воспроизводится. Минимальный пример лучше, чем описание.
Чего прикладывать не надо: ключи, пароли, токены, персональные данные из логов. Перед отправкой пройдитесь по трейсу и замените значения на заглушки. О том, как не утекают данные при логировании, подробно в статье про логирование LLM без утечки.
Шаблон промпта
Структура важнее красивых слов. Работающий вариант:
Роль: ты помогаешь исправить ошибку в проекте на Python 3.12 (Django 5.1).
Ошибка (стектрейс целиком):
<вставьте трейс>
Код, где она возникает (app/orders.py, строки 40-95):
<вставьте код>
Ожидалось: <что должно происходить>
Получилось: <что происходит>
Уже пробовал: <что не помогло>
Задача:
1. Объясни причину в 2-3 предложениях.
2. Предложи минимальное исправление в формате unified diff.
3. Не переписывай функцию целиком и не меняй код, не связанный с ошибкой.
4. Если данных не хватает, сначала задай уточняющие вопросы.
5. Предложи тест, который падает до исправления и проходит после.Три пункта здесь работают сильнее остальных. «Минимальный дифф» защищает от переписывания всего файла. «Если данных не хватает, спроси» снижает вероятность уверенной выдумки. «Тест, который падает до исправления» превращает гипотезу в проверяемый факт.
Скрипт: отправить трейс и файл одним вызовом
Если вы не пользуетесь агентом, а вставляете ошибки вручную, удобно завернуть шаблон в небольшой скрипт. Он работает через OpenAI-совместимый формат Zukko (chat completions):
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 падает с этим трейсом, найди причину и исправь минимально, затем запусти тест». Ключевое условие: у агента должна быть команда, которой он проверит результат. Без неё агент остановится на «выглядит правильно».
Проверка фикса
Принять предложенный дифф вслепую нельзя, даже если объяснение звучит убедительно. Порядок:
- Воспроизведите ошибку до исправления. Запустите тест или команду и убедитесь, что она падает ровно так, как описано. Если воспроизвести нельзя, модель чинит гипотетическую проблему.
- Примените дифф и прочитайте его целиком. Лишние правки в соседних местах повод отклонить.
- Запустите упавший тест, затем весь набор. Фикс одного теста, ломающий два других, не фикс.
- Проверьте незнакомые вызовы. Модель может предложить функцию или параметр, которых нет в вашей версии библиотеки. Сверьте с документацией библиотеки.
- Закоммитьте отдельно. Исправление и тест одним коммитом, чтобы откатить было просто.
Если первая попытка не помогла, не просите «попробуй ещё раз». Отправьте новый результат: что изменилось в трейсе после применения диффа. Это новый факт, и модель работает с ним лучше, чем с повтором задачи.
Сколько стоит исправление
Типичная ошибка с контекстом 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.
Похожие статьи
- Свой прокси к нейросети на Node.js: не показывать API-ключ во фронтендеНебольшой сервер на Express между вашим фронтендом и API нейросети: ключ остаётся на сервере, а модели, длина запроса и частота ограничены.
- DeepSeek API на Python: запросы, стриминг, JSON и обработка ошибокГотовый код для DeepSeek V4.1 Flash и V4 Pro на OpenAI SDK: запрос, стриминг, разбор JSON и аккуратная обработка ошибок.
- Gemini API на Python: запросы через OpenAI SDK и OpenAI-форматРабочий пример Gemini API на Python без отдельной библиотеки: меняем base_url в OpenAI SDK, добавляем стриминг и JSON и сравниваем с google-genai.
- Anthropic SDK для Python: base_url, ключ и первый запрос через шлюзОфициальный пакет anthropic для Python нужно только направить на другой адрес. Разбираем base_url, ключ, стриминг, подсчёт токенов, кэш и ошибки.