Помощники ИИ очень хорошо пишут Python, который выглядит хорошо. Напечатано, отформатировано, есть тесты. Проблема в том, что тесты обычно пишутся по одной и той же модели, на основе одних и тех же предположений, поэтому и проходят по одной и той же причине...
Помощники ИИ очень хорошо пишут Python, который выглядит хорошо. Напечатано, отформатировано, есть тесты. Проблема в том, что тесты обычно пишутся по одной и той же модели, исходя из одних и тех же предположений, поэтому они проходят по тем же причинам, по которым код может быть неправильным.
Я провел много времени с кодом Python, который обрабатывает данные датчиков и телеметрии, и в какой-то момент я перестал доверять только проверке, чтобы уловить это. Вот настройка, которую я использую сейчас. Это три слоя, и каждый из них обнаруживает разные ошибки.
Режим отказа
Типичный пример: вы просите у помощника функцию, переводящую показания мощности в ватты. Вы получаете это:
питон
# телеметрия.py
из десятичного импорта Десятичный
UNIT_FACTORS = {"Вт": десятичное ("1"), "кВт": десятичное ("1000"), "МВт": десятичное ("1000000")}
def to_watts (значение: десятичное, единица измерения: ул) -> Десятичное:
если значение < 0:
поднять ValueError("Показание мощности не может быть отрицательным")
попробуйте:
возвращаемое значение * UNIT_FACTORS[единица измерения]
кроме KeyError:
поднять ValueError(f"unknown unit: {unit}") с None
Эта версия в порядке. Версии, которые не очень хороши, выглядят почти одинаково: число с плавающей точкой вместо десятичной дроби, отсутствие отрицательной проверки, «kw» вместо «kW». Примеры тестов с тремя руками
