Инструменты

Нейросеть для программирования на Python: как проверять правку

Для кого

Тому, кто меняет Python-бэкенд с помощью кодового агента

Что вы получите

Порядок от постановки задачи до проверенного ответа API

Время чтения

7 мин

Точка А: сейчас

Агент исправил ответ API, но соседний сценарий перестал работать

Точка Б

Правка ограничена задачей, тесты проверяют разные входы и итоговый ответ сервиса

Рабочий цикл для Python и FastAPI: окружение, ограниченная задача, тесты API и проверка перед сервером на примере проектов Алексея.

Нейросеть для программирования на Python особенно полезна, когда нужно разобраться в чужом обработчике, связать данные между API и базой либо написать проверку на ошибочный вход. Её ответ нельзя принимать по одному красивому фрагменту кода. В Python приложение часто запускается успешно даже тогда, когда редкая ветка запроса вернёт неверный статус или запишет неполные данные. Я пользуюсь коротким циклом: описать наблюдаемый результат, дать агенту доступ к нужным файлам, проверить изменённый маршрут и только затем смотреть широкий сценарий. Общее сравнение кодовых инструментов есть в статье о нейросетях для программирования; здесь рассматриваю именно Python-бэкенд.

С чего начать в существующем Python-проекте

Сначала установите, что сейчас работает. Откройте README, список зависимостей, команды тестов и расположение входной точки приложения. Проверьте статус Git и сохраните текущую версию до значимой правки. Затем сравните локальную копию с актуальным источником проекта: если рабочий сервер или основной репозиторий ушёл вперёд, задача агенту на старой версии создаст конфликт. Не нужно просить его менять код, пока не понятен настоящий исходный вариант.

Создайте отдельное окружение и установите зависимости так, как принято в проекте. Команды ниже показывают стандартный путь для проекта с requirements.txt; если у вас другой менеджер, используйте его lock-файл. Документация Python по venv и FastAPI по тестам сверена 25 октября 2026 года: venv, FastAPI Testing.

python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
python -m pip install pytest httpx pip‑audit
python -m pytest -q
uvicorn app:app --host 127.0.0.1

Если тесты уже падают до работы агента, сохраните это как исходное состояние. Иначе после правки невозможно честно сказать, какая ошибка появилась сейчас. Если проекта с тестами пока нет, начните с воспроизведения одного API‑запроса на локальном сервере. Для FastAPI запускайте приложение на 127.0.0.1; открывать порт наружу ради пробы не требуется.

Как поставить задачу без выдуманной архитектуры

Хорошее задание называет вход, ожидаемый ответ и границу изменения. Например: «При неверном формате даты API должно вернуть понятную ошибку без записи в базу; при допустимой дате сохранить объект один раз. Перед правкой покажи, где сейчас проверяется вход и какой тест это покрывает». Так агент сначала изучит фактическую схему, затем предложит изменение.

В примере из истории выше изменение ответа API проверяют и по карточке менеджера. Сверьте тезисы разговора и связь с нужной сделкой, а затем посмотрите соседний сценарий.

До запроса к агентуЧто показатьЧто получить на выходе
Ошибка воспроизводитсяОдин запрос и текущий ответПричина в существующем маршруте
Затронута схема ответаМодель и вызывающий экранСписок зависимых действий
Есть запись в БДСценарий успеха и отказаПроверка отсутствия лишней записи
Есть рабочий серверТекущая версия кодаПлан правки на свежей копии

Какие тесты нужны после ответа агента

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

Для FastAPI официальная документация показывает TestClient и pytest; для запуска этого теста установите также httpx командой выше. Ниже учебный маленький маршрут и тест отказа без записи. В рабочем проекте возьмите настоящие имена моделей и маршрутов из кода.

from datetime import date
from fastapi import FastAPI
from fastapi.testclient import TestClient
from pydantic import BaseModel

app = FastAPI()
saved = []

class Example(BaseModel):
    visit_date: date

@app.post('/example')
def create(body: Example):
    saved.append(body.visit_date)
    return {'ok': True}

client = TestClient(app)

def test_invalid_date_returns_error():
    response = client.post('/example', json={'visit_date': 'не дата'})
    assert response.status_code == 422
    assert saved == []

Список saved здесь изображает запись в учебном коде. В рабочем тесте нужно проверить состояние тестовой базы, а не глобальную переменную. Тест правильного входа должен сверять значимые поля ответа, а соседний путь гарантирует, что исправление не задело другую операцию. Я прошу агента сначала показать, какие существующие проверки запускаются, затем добавить ровно те, которые закрывают найденный риск.

Что проверить перед выкладкой Python-сервиса

После теста API откройте экран, который читает его ответ. В Radomir CRM это может быть карточка сделки с разбором звонка. Полный порядок чтения diff и проверки вызовов описан в статье о приёмке функции.

При изменении модели данных отметьте, нужна ли миграция и что произойдёт с уже сохранёнными строками. Не позволяйте агенту тихо менять тип поля, лишь бы прошёл новый тест. База на сервере хранит историю, которой нет в локальном пустом экземпляре. Проверка миграции вынесена в отдельный материал.

python -m pytest -q
python -m pip check
pip‑audit

Перед выкладкой Python-сервиса запускайте pip‑audit и разбирайте найденные уязвимости. Служба работает от отдельного пользователя, приложение за nginx слушает 127.0.0.1. Успешный тест API ещё не проверяет доступность административных маршрутов и состояние зависимостей.

Где мой собственный опыт меняет задание агенту

На клиентских проектах Python часто связан с другим интерфейсом. Поэтому я формулирую результат через действие человека: «После звонка разбор появился в нужной карточке, и менеджер видит договорённость». Эта проверка связывает API с рабочим экраном.

Если меняется публичный API, покажите агенту пример запроса и ответа до правки, а затем сохраните итоговый пример. Если данные передаются в фоновую задачу, отдельно проверьте, что повторный запуск не создаёт дубль. Для каждого проекта конкретные поля, имена таблиц и сроки берутся из его кода и согласованного задания. Подставлять их из соседнего кейса нельзя.

Признак готовностиГде смотретьЧто ещё проверить руками
Тесты прошлиВывод pytestСценарий в интерфейсе
Синтаксис и зависимости целыpip check, запуск сервисаОтвет нужного маршрута
Diff ограничен задачейgit diffНе пропали старые проверки
Данные сохраняются корректноТестовая БДПовтор и отказ без дубля

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

Достаточно ли попросить нейросеть написать тесты?

Нет. Дайте исходный сбой и ожидаемый результат, затем прочитайте сами проверки. Тест, который повторяет неверное предположение агента, закрепит ошибку.

Нужно ли знать Python, чтобы принять правку?

Полезно понимать вход и выход операции. Для сложной модели данных привлекайте разработчика; руководитель всё равно может проверить путь человека и сохранность результата.

Почему приложение запускается, а ошибка осталась?

Запуск проверяет загрузку сервиса, но редкая ветка выполняется только при определённом запросе. Воспроизведите именно его на локальной копии.

Можно ли сразу править на VPS?

Лучше работать с актуальной локальной копией, проверять diff и тесты, а затем выкладывать подготовленный результат. Так можно восстановить предыдущую версию.

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

Попросите объяснить, какую проблему она решает, проверьте текущую официальную документацию и аудит зависимостей. Лишняя зависимость увеличивает поддержку проекта.

На обучении мы разбираем такой цикл на действующем проекте: задача, локальная проверка, просмотр изменения и проверка результата человеком.