Отладка AI-кодированиÑ: что проверÑть,…

Изображение-заполнитель — ожидающее ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð½Ð¾Ðµ изображение.

ФункциÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð»Ð° нормально в течение неÑкольких недель, внезапно переÑтает работать, и нет очевидной причины, почему — никто не трогал Ñту чаÑть приложениÑ. Это один из наиболее дезориентирующих моментов при запуÑке продукта, Ñозданного иÑкуÑÑтвенным интеллектом, потому что инÑтинкт ÑпроÑить: «Что Ñ Ñломал?» не подходит Ð´Ð»Ñ Ñитуации, когда ничего намеренно не менÑлоÑÑŒ. Отладка ИИ-кода в Ñтом Ñценарии требует проверки определенного упорÑдоченного набора вещей, и работать Ñ Ð½Ð¸Ð¼Ð¸ по порÑдку быÑтрее, чем гадать.

Ðачните Ñ Ñ‚Ð¾Ð³Ð¾, что на Ñамом деле изменилоÑÑŒ

Прежде чем прикаÑатьÑÑ Ðº Ñамому коду, определите, что на Ñамом деле изменилоÑÑŒ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° поÑледней работы Ñтой функции. РаÑпроÑтраненные ответы: завиÑимоÑть была обновлена ​​(даже автоматичеÑки), превышен порог объема данных, внешний API, который вызывает код, изменил Ñвое поведение или ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð±Ñ‹Ð»Ð° изменена таким образом, что неожиданно затрагивает одни и те же данные. Код, Ñгенерированный ИИ, оÑобенно чувÑтвителен к поÑледнему, поÑкольку функции, вÑтроенные в отдельные подÑказки, не вÑегда Ñвно указывают Ñвои общие завиÑимоÑти — изменение в одном меÑте может незаметно повлиÑть на другое.

Проверка 1. ИзменилиÑÑŒ ли завиÑимоÑти в коде

ЕÑли в проекте иÑпользуютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкие или Ñлабо закрепленные верÑии завиÑимоÑтей, обновление пакета может изменить поведение, не Ð·Ð°Ñ‚Ñ€Ð°Ð³Ð¸Ð²Ð°Ñ Ð½Ð¸ Ñтрочки кода приложениÑ. Проверьте иÑторию файла блокировки завиÑимоÑтей по времени, когда Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑломалаÑÑŒ — Ñто быÑÑ‚Ñ€Ð°Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ°, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸Ñключает целую категорию Ñлучаев «ничего не изменилоÑÑŒ, но Ñто ÑломалоÑь».

Проверка 2. ПереÑекли ли данные пороговое значение?

Код, который предполагал, что ÑпиÑок оÑтанетÑÑ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¸Ð¼, чиÑло оÑтанетÑÑ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ или Ñтрока оÑтанетÑÑ Ð¼ÐµÐ½ÑŒÑˆÐµ определенной длины, может работать правильно в течение длительного времени, а затем давать Ñбой именно тогда, когда реальное иÑпользование переÑекает порог, который никто не думал теÑтировать. Это обычное Ñвление в коде, Ñгенерированном ИИ, поÑкольку Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾ маÑштабе редко указываютÑÑ Ñвно в иÑходном приглашении, поÑтому у ИИ нет причин защищатьÑÑ Ð¾Ñ‚ них.

Проверка 3. Изменила ли внешнÑÑ Ñлужба Ñвое поведение?

ЕÑли Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð°Ð²Ð¸Ñит от Ñтороннего API, проверьте Ñтраницу ÑоÑтоÑÐ½Ð¸Ñ Ñтой Ñлужбы или журнал изменений. Код интеграции, Ñозданный иÑкуÑÑтвенным интеллектом, иногда опираетÑÑ Ð½Ð° недокументированное поведение внешней Ñлужбы или поведение по умолчанию, а не на Ñвно гарантированный контракт — вполне Ñ€Ð°Ð·ÑƒÐ¼Ð½Ð°Ñ Ð²ÐµÑ‰ÑŒ Ð´Ð»Ñ Ñлужбы, которую нужно изменить Ñо Ñвоей Ñтороны, но Ñто приводит к необъÑÑнимой поломке.

Проверка 4. ИзменилаÑÑŒ ли ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¾Ð±Ñ‰ÐµÐ¹ логикой каÑаниÑ?

ЕÑли недавно была изменена Ð´Ñ€ÑƒÐ³Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ, проверьте, имеет ли она общую функцию, модель данных или правило проверки Ñ Ñ‚Ð¾Ð¹, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑломалаÑÑŒ. Это риÑк неÑоглаÑованноÑти, возникающий из-за того, что ÐºÐ¾Ð´Ð¾Ð²Ð°Ñ Ð±Ð°Ð·Ð° поÑтроена на оÑнове множеÑтва отдельных подÑказок ИИ: изменение, предназначенное Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¹ функции, может повлиÑть на другую, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½ÐµÐ·Ð°Ð¼ÐµÑ‚Ð½Ð¾ опиралаÑÑŒ на ту же базовую логику.

Проверка 5. ЯвлÑетÑÑ Ð»Ð¸ неиÑправноÑть новой или недавно видимой?

Иногда ошибка приÑутÑтвовала вÑегда — тихий Ñбой, который не приводил к видимой ошибке — и она ÑтановилаÑÑŒ заметной только поÑле того, как возникала доÑÑ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð°Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ñть или Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°. Прежде чем предположить, что ошибка новаÑ, проверьте журналы (еÑли они ÑущеÑтвуют) на предмет фактичеÑкой ошибки, а не только Ñимптома, о котором Ñообщил пользователь.

Проверка 6. ИзменилоÑÑŒ ли значение конфигурации или Ñреды

Переменные Ñреды, флаги функций и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ легко не заметить, поÑкольку они находÑÑ‚ÑÑ Ð²Ð½Ðµ Ñамого кода. Значение, которое было уÑтановлено вручную во Ð²Ñ€ÐµÐ¼Ñ Ñ‚ÐµÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ никогда не ÑохранÑлоÑÑŒ, или флаг, который незаметно вернулÑÑ Ðº значению по умолчанию поÑле повторного развертываниÑ, могут привеÑти к тому, что Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑтанет работать вообще без Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°. Эта проверка выполнÑетÑÑ Ð±Ñ‹Ñтро и чаÑто иÑключаетÑÑ Ð² поÑледнюю очередь, тогда как обычно ее Ñледует иÑключать раньше.

Документируйте причину, а не только иÑправление

Как только вы найдете наÑтоÑщую причину, запишите, что Ñто было и почему Ñто произошло, Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ кратко, а не только то, какой код был изменен, чтобы иÑправить Ñто. Это оÑобенно важно Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ кода ИИ, поÑкольку одна и та же ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ (обновление завиÑимоÑтей, порог данных, изменение общей логики) имеет тенденцию повторÑтьÑÑ Ð² разных функциÑÑ… в одной и той же базе кода. ÐšÐ¾Ñ€Ð¾Ñ‚ÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ о том, что «Ñтот клаÑÑ Ð²ÐµÑ‰ÐµÐ¹ укуÑил Ð½Ð°Ñ Ñ€Ð°Ð½ÑŒÑˆÐµÂ», чаÑто более полезна Ð´Ð»Ñ Ñледующего инцидента, чем ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð°Ñ Ñтрока кода, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±Ñ‹Ð»Ð° изменена на Ñтот раз.

ПорÑдок уÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¿Ð¾Ð»Ð°Ð´Ð¾Ðº при отладке кода AI

Заказать Что проверить Зачем проверÑть Ñто на Ñтом Ñтапе
1 Что изменилоÑÑŒ за поÑледнее Ð²Ñ€ÐµÐ¼Ñ (развертывание, подÑказки, завиÑимоÑти) Самый быÑтрый ÑпоÑоб Ñузить проÑтранÑтво поиÑка
2 ВерÑии завиÑимоÑтей и иÑÑ‚Ð¾Ñ€Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² блокировки Может нарушить поведение без изменений кода приложениÑ
3 Пороги объема или Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… РаÑпроÑтраненное Ñлепое пÑтно в логике, генерируемой ИИ
4 Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² поведении внешних Ñлужб Ð’Ñ‹ находитеÑÑŒ вне вашего контролÑ, но вÑе равно оÑтаетÑÑ Ð²Ð°ÑˆÐµÐ¹ ошибкой
5 ÐžÐ±Ñ‰Ð°Ñ Ð»Ð¾Ð³Ð¸ÐºÐ°, Ð·Ð°Ñ‚Ñ€Ð¾Ð½ÑƒÑ‚Ð°Ñ ÐµÑ‰Ðµ одной функцией Признак неÑоответÑÑ‚Ð²Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹
6 Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ и Ñреды Легко не заметить, не требует Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°, чтобы что-то Ñломать
7 ЯвлÑетÑÑ Ð»Ð¸ Ñбой новым или недавно видимым Отличает регреÑÑию от давней тихой ошибки

Когда прекратить отладку в одиночку

ЕÑли вы проработали Ñтот ÑпиÑок и иÑправление не работает — тот же Ñимптом возвращаетÑÑ Ð¿Ð¾Ñле «иÑправлениÑ» — обычно Ñто признак того, что базовый шаблон ÑущеÑтвует более чем в одном меÑте кодовой базы, а не то, что иÑправление было неправильным. Почему код, Ñгенерированный ИИ, работает, и почему он продолжает ломатьÑÑ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð¾ раÑÑматривает именно Ñтот шаблон повторÑющихÑÑ Ð¿Ð¾Ð»Ð¾Ð¼Ð¾Ðº. РеÑли проблема каÑаетÑÑ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸, платежей или пользовательÑких данных, проведите незавиÑимую проверку, а не продолжайте иÑправлÑть ее в одиночку — Ñм. почему отладка кода, Ñгенерированного ИИ, по-прежнему требует опыта разработки программного обеÑпечениÑ, чтобы узнать, почему Ñтот шаг важен, даже еÑли вы умеете программировать.

Чтобы получить более полный ÑпиÑок категорий ошибок, Ñтот порÑдок уÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¿Ð¾Ð»Ð°Ð´Ð¾Ðº взÑÑ‚ из Ñтатьи Ошибки в кодировании ИИ: почему программное обеÑпечение, Ñозданное ИИ, может работать в демо-верÑии, но не работать в рабочей Ñреде, где ÐºÐ°Ð¶Ð´Ð°Ñ Ð¸Ð· них разбиваетÑÑ Ð¿Ð¾ отдельноÑти.

Вывод

Когда код, Ñгенерированный ИИ, который раньше работал, внезапно переÑтает работать, не поддавайтеÑÑŒ желанию начать перепиÑывать код, прежде чем выÑÑнить, что на Ñамом деле изменилоÑÑŒ. ПоÑÐ»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð° над изменениÑми завиÑимоÑтей, пороговыми значениÑми данных, внешними Ñлужбами и общей логикой позволит выÑвить реальную причину быÑтрее, чем гадать — и еÑли тот же Ñимптом продолжает возвращатьÑÑ, Ñто Ñигнал к привлечению второй пары глаз, а не к пÑтой попытке того же иÑправлениÑ.

Что-то, что раньше работало, проÑто ÑломалоÑÑŒ?

MVPHUB помогает оÑнователÑм уÑтранÑть неполадки в кодовых базах, Ñозданных ИИ, когда функции переÑтают работать без предупреждениÑ. ЗапишитеÑÑŒ на беÑплатную конÑультацию к MVPHUB, чтобы получить профеÑÑиональный взглÑд на то, что проиÑходит на Ñамом деле.

Закажите беÑплатную конÑультацию у MVPHUB

Часто Задаваемые Вопросы

Что мне Ñледует проверить в первую очередь, еÑли функциÑ, ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ Ð˜Ð˜, внезапно переÑтает работать?

Ðачните Ñ Ñ‚Ð¾Ð³Ð¾, что дейÑтвительно изменилоÑÑŒ — недавнее приглашение, обновление завиÑимоÑтей или новое ÑоÑтоÑние данных. Отладка ИИ-кода идет быÑтрее, еÑли перед поиÑком по вÑей базе кода иÑключить «что изменилоÑÑŒ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° поÑледней работы».

Я виноват в том, что код, Ñгенерированный ИИ, ломаетÑÑ Ð¿Ð¾Ñле неÑкольких недель нормальной работы?

Ðе обÑзательно — чаÑто Ñто уÑловие, которого раньше проÑто не ÑущеÑтвовало, например пороговое значение объема данных, необычное входное значение или завиÑимоÑть, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð°ÑÑŒ под кодом. ОтноÑитеÑÑŒ к Ñтому как к отладочному вопроÑу, а не как к вопроÑу об обвинении.

Должен ли Ñ Ð¿Ð¾Ð¿Ñ€Ð¾Ñить ИИ иÑправить его ÑобÑтвенный Ñломанный код?

Это Ñтоит попробовать в качеÑтве первого шага, но ИИ, отлаживающий Ñвои ÑобÑтвенные выходные данные, имеет те же «Ñлепые зоны», которые Ñоздали первоначальный пробел. ЕÑли первое иÑправление не работает, проведите незавиÑимую проверку, а не повторÑйте одно и то же предложение Ñ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ¸Ð¼Ð¸ изменениÑми.

Как узнать, ÑвлÑетÑÑ Ð»Ð¸ ошибка изолированной или Ñто Ñимптом более широкой закономерноÑти?

Ðайдите в оÑтальной чаÑти кодовой базы такую ​​же логику — тот же обрабатываемый тип данных, тот же шаг проверки, тот же внешний вызов. ЕÑли вы обнаружите ту же закономерноÑть где-то еще, Ñчитайте подозрительными вÑе Ñлучаи, а не только тот, который вÑплыл.

Когда мне Ñледует прекратить ÑамоÑтоÑтельную отладку и получить профеÑÑиональную оценку?

ЕÑли ошибка каÑаетÑÑ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸, платежей или пользовательÑких данных, или еÑли вы иÑправили один и тот же Ñимптом неÑколько раз, но он не оÑталÑÑ Ð¸Ñправленным, имеет ÑмыÑл привлечь незавиÑимого, профеÑÑионально опытного рецензента, а не продолжать иÑправлÑть его в одиночку.

Есть Отличная Идея?

Не позволяйте ей остаться просто идеей. Проверьте её и создайте свой MVP вместе с нашей опытной командой разработки.

Проверить Мою Идею