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