5 речей, у яких ШІ помиляється з Fetch API
ШІ-помічники для написання коду пишуть код, який виглядає правильним. Але вони не пишуть код, який є правильним.
Більшість моделей пропонують простий фрагмент коду з fetch. Він працює в демо-версії, але дає збій у продакшені. Fetch API — це інструмент низького рівня, а не повноцінний HTTP-клієнт. Він вимагає від вас прийняття архітектурних рішень, які ШІ прийняти не може.
Ось 5 способів, якими ШІ помиляється з fetch:
Обробка помилок ШІ припускає, що невдалий запит призводить до відхилення (reject) promise. Це помилка. Помилка 404 або 500 не активує блок catch. Ви повинні вручну перевіряти response.ok. Якщо ви цього не зробите, ваш додаток сприйматиме сторінки помилок як успішно отримані дані.
Скасування запитів ШІ часто забуває використовувати AbortController. Це призводить до витоків пам'яті та race conditions у таких фреймворках, як React. Якщо користувач швидко переходить по списку, старі запити можуть завершитися після нових. Це призводить до того, що ваш інтерфейс відображає застарілі дані. Ви також повинні фільтрувати AbortError, щоб не показувати повідомлення про помилки під час навмисного скасування запитів.
Стрімінг даних ШІ сприймає відповіді як єдині блоки. Це стає проблемою при роботі з великими файлами або відповідями LLM. Мережеві чанки можуть розривати окремий символ або рядок JSON навпіл. Ви повинні використовувати TextDecoderStream і буфер, щоб правильно обробляти байти в різних чанках.
Стійкість та повторні спроби ШІ пропонує наївні цикли повторних спроб. Такі цикли небезпечні. Вони часто повторюють POST-запити, що може призвести до подвійних списань або дублювання даних. У них також відсутні backoff та jitter. Це перетворює незначний збій сервера на масштабну аварію. Ви повинні повторювати лише ідемпотентні запити та використовувати експоненціальний backoff.
Різниця в середовищах ШІ плутає правила браузера та Node.js. Node.js не застосовує CORS. У Node.js інші тайм-аути за замовчуванням. У Node ви повинні споживати тіло (body) відповіді, щоб уникнути витоку з'єднань. ШІ не може знати ваше цільове середовище виконання, тому він часто надає код, який працює в одному, але ламається в іншому.
Стратегія:
Використовуйте ШІ для створення каркаса. Нехай він пише шаблонний код (boilerplate) та базову структуру.
Ви повинні контролювати семантику. Ви вирішуєте, чи є 404 помилкою. Ви визначаєте бюджет повторних спроб. Ви вирішуєте, як обробляти заголовки автентифікації.
ШІ оптимізує код для правдоподібності. Ви повинні оптимізувати його для правильності.
Джерело: https://dev.to/devunionx/new5-things-even-ai-cant-do-fetch-api-328e
