Регресія промптів
Регресійне тестування промптів перевіряє, кейс за кейсом, чи не зламала зміна промпту або моделі щось, що працювало до цієї зміни. Сторінка починається з однієї правки промпту, розібраної від початку до кінця, — асистент замовлень, v7 → v8, — далі негативні перескоки, що закріплювати, три запуски на кейс і межа шуму, ворота, оновлення моделі й чотири зміни, що пішли не так.
- Порівнюйте
- Покейсно, а не середнє
- Кейс рахується, коли
- Стабільний у 3 з 3 запусків
- Блокує реліз
- Будь-який зламаний захищений кейс
Правка промпту на одному екрані — асистент замовлень, v7 → v8, після рев’ю
Ніхто не відкриває сторінку про регресію промптів заради визначення. Її відкривають, бо правка промпту чекає на рев’ю, а питання одне: чи можна її випускати. Нижче — одна така правка, розібрана від початку до кінця. Фіча — асистент замовлень зі сторінок «Тестування LLM-продуктів» і «Оцінювання AI»: чат магазину, що відповідає на «де моє замовлення», пояснює правила повернення й розпочинає повернення. Правка — одне речення. Групи йдуть у порядку роботи — зміна, що закріпили, запуск, покейсний дифф, вердикт, що було далі, — а наступні розділи посилаються на рядки за номерами.
1.Зміна
- До системного промпту додано одне речення, v7 → v8: «Завжди називай клієнтові дату, коли закривається його вікно повернення».
- Причина: найбільша група збоїв в аналізі помилок — 13 із 41 нотатки пропускали умову, що все вирішує («Оцінювання AI», рядок 7; «Тестування LLM-продуктів», рядок 12).
- Пулреквест у
prompts/order-assistant.md, рев’ю як для коду. Формулювання погоджує власник правил повернення.
2.Усе інше закріплено — однакове з обох боків
- Модель: той самий датований знімок, що й у базовій лінії v7, — ніколи не аліас.
- Семплінг: налаштування продакшну, температура 0,3, щоб запуск міряв те, що отримають клієнти.
- Індекс довідки: збірка понеділка, 5 жовтня, заморожена на час запуску.
- Інструменти:
get_order,start_returnіhandoffза схемою v3, їхні відповіді відтворюються із записів, тож обидві версії бачать ті самі замовлення. - Суддя: його модель і промпт закріплено; TPRtrue positive rate — частка спійманих справжніх збоївЧастка справжніх позитивних випадків, яку тест, класифікатор чи суддя-модель справді ловить, — та сама величина, що й повнота (recall). TPR 80% означає, що кожен пʼятий справжній збій проходить; читайте її поруч із TNR, бо суддя, що нічого не позначає, має ідеальну TNR і нульову TPR.Усі терміни 80% і TNRtrue negative rate — частка пропущених добрих випадківЧастка справжніх негативних випадків — добрих відповідей, здорових кейсів, — яку тест, класифікатор чи суддя-модель правильно пропускає. TNR 91% означає, що приблизно кожен одинадцятий добрий випадок позначено помилково; висока TNR сама по собі нічого не каже, бо «пропускати все» дає 100%.Усі терміни 91% на відкладених мітках («Оцінювання AI»).
- Набір: 120 робочих кейсів. 30 відкладених чекають на перевірку перед релізом.
3.Запуск
- Кожен кейс тричі на кожній версії: 720 відповідей плюс виклики судді на оцінюваних кейсах — 11 хвилин, близько 4 доларів.
- Кожен кейс отримує стан на кожній версії: стабільно проходить (3 з 3 запусків), стабільно падає (0 з 3) або нестабільний (1 чи 2).
- Межа шуму, виміряна першою: v7 проти другого запуску v7. Жоден кейс не перейшов між «стабільно проходить» і «стабільно падає»; 5 увійшли в нестабільні або вийшли з них.
4.Покейсний дифф, v7 → v8
- Виправлено, «стабільно падає» → «стабільно проходить»: 9 кейсів, 8 із них — у цільовій групі.
- Зламано, «стабільно проходить» → «стабільно падає»: 4 кейси. Два — захищені: товари без права повернення, яким тепер кажуть «повернути можна до 24 жовтня».
- Дві інші поломки — питання, яких правила не покривають. v8 відповідає на них датою замість передати розмову людині («Тестування LLM-продуктів», рядок 10).
- Нестабільні хоча б з одного боку: 14 кейсів — у списку, але не в підрахунку. Без змін: 93.
- Головне число: стабільних проходжень 92 → 99 із 120, 76,7% → 82,5%.
5.Вердикт
- Заблоковано. Зламалися два захищені кейси, а будь-який зламаний захищений кейс блокує реліз, хай що зробило середнє.
- Попередження було б однаково: ще дві поломки поза захищеним набором — понад межу шуму, яка дорівнює нулю.
- Перед рішенням людина прочитала 13 розмов, що перескочили, — близько 25 хвилин. Усі чотири поломки справжні. Одне з девʼяти виправлень — ні: суддя зарахував дату, взяту з іншого замовлення клієнта.
- За самим дашбордом v8 була на 5,8 пункту кращою й пішла б у реліз.
6.Що було далі
- v9 переписує речення: «Якщо товар можна повернути, назви клієнтові дату, коли закривається вікно повернення». Правило передачі людині стоїть вище за нього.
- v9 проти v7: 9 виправлено, 0 зламано, усі 20 захищених кейсів проходять, 11 нестабільних.
- 30 відкладених кейсів, запущені один раз перед релізом: нічого не зламалося.
- Змерджено в четвер, 15 жовтня 2026 року. Покейсні результати v9 збережено як нову базову лінію з позначкою кожної версії з групи 2.
- Два нові захищені кейси: товар без права повернення, про який питають тими словами, на яких провалилася v8, і те саме питання українською. Тепер у захищеному наборі 22 кейси.
Що вважати регресією, коли вивід рухається: негативний перескок
У звичайному ПЗ регресія однозначна: тест, що проходив, тепер падає. Коли в системі є модель, той самий кейс може пройти в одному запуску й упасти в наступному без жодних змін, тож слово потребує визначення. У дослідженнях машинного навчання воно вже є. 2020 року Сицзє Ян і колеги назвали це негативним перескоком (negative flip): зразок, який стара модель розвʼязувала правильно, а нова — ні. Вони ж сформулювали думку, на якій тримається ця сторінка: зменшити такі розбіжності між версіями на практиці може бути так само важливо, як зменшити загальну помилку.
2024 року Джессіка Ехтергофф і колеги з Apple виміряли те саме на мовних моделях. Коли оновлювали базову модель, адаптери під конкретні задачі, навчені поверх неї точно так само, як раніше, починали помилятися там, де раніше відповідали правильно, — хоча в їхньому власному навчанні нічого не змінилося. Тож набір регресії промптів робить одну роботу. Він перелічує кожен кейс, що перескочив, в обидва боки, і вважає перескок із «проходить» у «падає» знахідкою незалежно від того, що зробило загальне число.
Читайте схему як таблицю переходів. Рядки — стан кейсу на v7, стовпці — його стан на v8. На діагоналі — кейси, що лишилися на місці; під нею виправлення, над нею поломки. Сірі рядок і стовпець — кейси, нестабільні з одного боку, про них ідеться через розділ. Головне число бачить лише підсумки стовпців, тож не відрізнить девʼяти виправлень і чотирьох поломок від пʼяти виправлень і жодної.
Промпти роблять перескоки дешевими. 2023 року Мелані Склар і колеги змінювали лише форматування промптів із прикладами — роздільники, пробіли, великі літери, нічого, що читач назвав би зміною змісту, — і виміряли різницю в точності до 76 пунктів на одній моделі. Вони ж виявили, що найкращий формат для однієї моделі погано підказує найкращий формат для іншої. Правка на одне речення — більша зміна, ніж будь-яка з їхніх.
Закріпіть усе, що ви не тестуєте
Експеримент із промптом найчастіше доходить хибного висновку тому, що він ніколи й не був експериментом із промптом. Відповіді асистента замовлень живлять шість речей. Вони змінюються за різними графіками й у різних руках, і лише одна з них була в пулреквесті. Якщо решту пʼять не втримати на місці під час запуску, дифф припише суму кількох змін тій одній, яку хтось випадково зробив.
| Вхід | Хто його змінює і коли | Як його закріплюють | Якщо він рухається під час запуску |
|---|---|---|---|
| Промпт | Ви, у пулреквесті | Файл у репозиторії, з версіями | Це і є зміна, яку тестують, — єдине, що має рухатися |
| Модель | Провайдер, за своїм графіком | Датований знімок, ніколи не аліас | Дифф міряє оновлення провайдера й приписує його вам |
| Параметри семплінгу | Той, хто редагує конфіг | Беруться з того самого конфігу, що й у продакшні | Розкид змінюється з одного боку, і виміряна різниця — це саме налаштування |
| Індекс пошуку | Нічна задача | Названа збірка, заморожена на час запуску | Статтю, додану у вівторок, зараховують промпту |
| Інструменти та їхні дані | Інша команда; самі замовлення | Версія схеми й відповіді, відтворені із записів | Замовлення, що змінило статус між запусками, виглядає як регресія |
| Суддя | QA, коли покращують рубрику | Знімок моделі й версія промпту | Ви змінили лінійку, і всі історичні числа зсуваються разом із нею |
Два рядки варті окремого речення. Семплінг закріплюють на значеннях продакшну, а не на нулі: нульова температура однаково не робить модель у хмарі детермінованою («Тестування LLM-продуктів» пояснює чому), а запуск на налаштуваннях, яких клієнти ніколи не бачать, міряє іншу систему. А інструменти відтворюють, а не викликають. Замовлення, що між запуском v7 і запуском v8 перейшло зі «спаковано» у «відправлено», — це справжня різниця у вводі, і у виводі вона виглядає точно як регресія.
Сам промпт має жити у вашому репозиторії, поруч із кодом, що його надсилає. Менеджери промптів у консолях постачальників роблять редагування легким, а історію — важкою, і вони можуть зникнути. 3 червня 2026 року OpenAI оголосила застарілими водночас свої збережені обʼєкти промптів і платформу Evals, призначила вимкнення обох на 30 листопада 2026 року й порадила перенести вміст промптів у код застосунку. Промпт і набір тестів, що живуть у вашому репозиторії, переживуть продуктові рішення постачальника.
Три запуски на кейс: як відрізнити перескок від шуму
Навіть коли всі шість закріплено, той самий кейс може пройти в одному запуску й упасти в наступному, бо генерація семплить із розподілу. Тож один запуск на кейс не відрізнить перескоку від монети, що впала іншим боком. Виправлення дешеве: запускайте кожен кейс тричі й присвоюйте йому стан. Три проходження дають «стабільно проходить», три падіння — «стабільно падає», а все між ними — «нестабільний». Перескоком вважається лише перехід між двома стабільними станами.
Перш ніж порівнювати дві версії, порівняйте одну версію саму із собою. Запустіть незмінену базову лінію вдруге й зробіть дифф із першим запуском — точно так, як робили б із кандидатом. Це порівняння A/A, і все, що воно покаже, — ваша межа шуму. Для асистента замовлень воно не показало жодного перескоку й пʼять кейсів, що входили в нестабільні або виходили з них (рядок 3.3). Отже, кандидат, що ламає чотири стабільні кейси, — це чотири знахідки, а не чотири збіги.
| Протокол | Що він дає | Скільки коштує на 120 кейсах |
|---|---|---|
| Один запуск на кейс | Найдешевше порівняння; ніщо не відділяє перескок від невдалої вибірки | 240 відповідей |
| Три запуски, перескоки лише між стабільними станами | Перескоки, на які можна діяти, а нестабільні кейси — окремим списком | 720 відповідей, 11 хвилин, близько 4 доларів |
| Пʼять запусків | Чіткіша межа для кейсів біля «пів на пів»; варто для захищеного набору | 1 200 відповідей |
| Запуск A/A базової лінії | Межа шуму у ваших власних одиницях; повторюйте щоразу, коли змінюється модель чи суддя | Один додатковий запуск базової лінії |
Нестабільні кейси — це інформація, а не шум, який викидають. Кейс, що проходить два запуски з трьох, — той, де модель стоїть біля межі рішення, і саме там наступна дрібна правка його перекине. Тримайте список нестабільних поруч зі списками перескоків. Якщо кейс лишається нестабільним три релізи поспіль, прочитайте його: причина зазвичай у двозначному правилі в промпті чи в самих правилах повернення. Решта статистики — похибка відсотка проходжень, кластерні похибки, чому покейсне порівняння краще за порівняння середніх — на сторінці «Оцінювання AI».
Ворота: що блокує, що попереджає, що читає людина
Регресійний набір, не повʼязаний із рішенням, — це звіт. Схема, що працює, ставиться до зміни будь-якого з шести входів точно як до зміни коду. Зміна відкриває пулреквест, набір запускається проти нього, а результат — дифф, який рецензент читає перед мерджем. Які результати самі зупиняють мердж, погоджують до запуску, а не сперечаються про це після нього.
| Результат | Що відбувається | На v7 → v8 |
|---|---|---|
| Зламався захищений кейс | Блокує; ніхто не може це скасувати в межах пулреквесту | 2 — заблоковано (5.1) |
| Упала точна перевірка — схема, аргументи інструмента, прапорець передачі людині | Блокує | 0 |
| Поломки поза захищеним набором, понад межу шуму | Попереджає; вирішує названий власник, відкривши розмови | 2 (5.2) |
| Вартість чи затримка розмови понад бюджет | Блокує | У межах бюджету |
| Виправлення | Звітуються й читаються, бо виправлення може бути помилкою судді | 9, одне з них — суддя (5.3) |
| Нестабільні кейси | Окремим списком; читаються, коли кейс нестабільний три релізи поспіль | 14 |
Захищений набір — частина набору, що блокує сама, тож важливо, як кейс туди потрапляє. Підстав чотири: збій, який уже дійшов до клієнтів; твердження, яке зобовʼязує компанію; формулювання, що цікавить регулятора; і все, що стосується безпеки. Кейси асистента замовлень про товари без права повернення захищені з другої причини. Коли чатбот хибно описав правила Air Canada щодо тарифу у звʼязку з утратою близьких, трибунал Британської Колумбії в лютому 2024 року постановив, що авіакомпанія відповідає за сказане її чатботом. Асистент, що каже клієнтові, ніби товар без права повернення можна повернути, дав магазину обіцянку.
Кейс виходить із захищеного набору лише за рішенням, яке хтось підписав, і ніколи — тихим видаленням, коли він став незручним. Набір росте з інцидентів, тож чекайте, що він ростиме: в асистента замовлень він зріс із 20 до 22 за одне рев’ю (рядок 6.5). Коли захищений набір стає таким великим, що кожна зміна щось у ньому ламає, проблема зазвичай у будові промпту, а не в наборі: забагато правил змагаються в одному абзаці.
| Момент | Що запускається | Чому саме там |
|---|---|---|
| Пулреквест, що торкається будь-чого з шести | 120 робочих кейсів по три запуски, списки перескоків проти базової лінії | Зміна є релізом, хай як її називає тікет |
| Щоночі | Той самий набір проти живого провайдера, жодна прив’язка не змінена | Єдиний запуск, що бачить зміну, якої ви не робили, — третій випадок нижче |
| Перед релізом | 30 відкладених кейсів, один раз | Єдині кейси, під які ніхто не підганяв промпт |
| Під час мерджу | Нічого не запускається; покейсні результати кандидата стають новою базовою лінією | Завтрашньому диффу потрібен сьогоднішній запис |
Оновлення моделі: найбільший регресійний прогін, тож відрепетируйте його
Кожен закріплений знімок має дату виведення, і встановлює її провайдер. Опублікований мінімум OpenAI — шість місяців попередження для загальнодоступної моделі й три місяці для спеціалізованих варіантів; preview-моделі можуть зникнути значно швидше, і документація наводить як приклад два тижні. Anthropic обіцяє щонайменше 60 днів для публічно випущених моделей. 14 жовтня 2026 року OpenAI повідомила розробникам, що її знімки GPT-4o і GPT-4.1 зникнуть з APIApplication Programming Interface — контракт між програмамиПравила, за якими одна програма звертається до іншої: які запити можна надіслати, у якому вигляді й що прийде у відповідь. Для того, хто звертається, це контракт — усе, що за ним, лишається чорною скринькою, і саме тому другий бік можна переписати, не зламавши вас.Докладніше в статті →Усі терміни 14 січня 2027 року. Для фічі, закріпленої на одному з них, цей розділ має конкретну дату.
Аліас не скасовує події, він лише забирає дату з ваших рук. Четвертий випадок нижче — ціла родина моделей, яку перемістили саме так. У січні 2024 року OpenAI запровадила gpt-4-turbo-preview — назву, що завжди вказує на її найновішу preview-модель, — того ж дня, коли випустила знімок, покликаний зменшити випадки «лінощів», коли попередній не доводив задачу до кінця. Хто викликав аліас, отримав нову поведінку в день її виходу — хотів того чи ні. Закріплений знімок перетворює це на зміну, яку ви плануєте й тестуєте.
Вправа складається з чотирьох кроків. Щойно надійшло повідомлення, поки стара прив’язка ще працює, запустіть повний набір проти знімка-заміни з сьогоднішнім промптом. Чекайте довгого списку перескоків: висновок Склар, що найкращий формат промпту для однієї моделі майже не підказує найкращого для іншої, означає, що зміна моделі — це й зміна промпту. Напишіть наступну версію промпту під нову модель і запускайте знову, доки захищений набір не втримається. Тоді перемкніться в обраний вами день, тримайте стару прив’язку як шлях назад до її виведення й запишіть нову базову лінію.
Чотири зміни — і що показав би покейсний дифф
Кожна з цих змін стосувалася системи, що працювала, і щоразу регресія дійшла до користувачів раніше, ніж про неї повідомив набір тестів будь-якої команди. У двох із чотирьох оцінювання проводили, і воно проходило.
| Зміна | Що сталося | Що показав би покейсний дифф |
|---|---|---|
| DPD, січень 2024 | Компанія доставки заявила, що AI-елемент у її чаті підтримки працював «успішно кілька років». Після оновлення системи клієнт змусив його лаятися й написати вірш про те, яка погана компанія. Один допис за добу переглянули 800 000 разів, і DPD вимкнула AI-елемент. Бік інʼєкції розбирає сторінка «Промпт-інженерія». | Три захищені кейси, потрібні будь-якому боту підтримки, — жодної лайки, ніколи не зневажати компанію, триматися теми, — запущені проти оновлення до того, як воно пішло в роботу. |
| GPT-4o у ChatGPT, квітень 2025 | Оновлення, розгорнуте 24–25 квітня, зробило модель помітно підлабузницькою. За розповіддю OpenAI, офлайн-оцінювання «загалом виглядали добре», A/B-тести були позитивними, частина експертів-тестувальників казала, що поведінка «відчувалася» трохи не такою, а оцінювань під час розгортання, які б відстежували підлабузництво, не було. Пізно в неділю компанія підлатала системний промпт, а з понеділка, 28 квітня, відкотила оновлення. LLMOps розповідає цей випадок з боку експлуатації. | Захищену групу для поведінки, яку виключає власна специфікація компанії. Виправлення, яке назвала OpenAI, — це ворота з цієї сторінки: проблеми поведінки тепер блокують запуск, «навіть коли метрики на кшталт A/B-тестів виглядають добре». |
| Claude, серпень–вересень 2025 | Anthropic нічого не змінювала у своїх моделях; три інфраструктурні баги періодично погіршували відповіді. Помилка маршрутизації почалася з 0,8% запитів до однієї моделі й після зміни балансування навантаження сягнула 16% у найгіршу годину. Постмортем компанії каже, що оцінювання, які вона проводила, «просто не вловили погіршення, про яке повідомляли користувачі», зокрема тому, що модель часто добре виправляється після поодиноких помилок. | Нічого, якщо набір запускається лише на ваших власних змінах. Нічний запуск проти живого провайдера з незмінними прив’язками («Тестування LLM-продуктів», рядок 20) — єдине порівняння, що бачить регресію, якої ніхто не випускав. І власне виправлення Anthropic — запускати оцінювання безперервно на продакшн-системах. |
| Моделі OpenAI Completions, 2023–2024 | Оголошено 6 липня 2023 року: старіші completion-моделі виводять 4 січня 2024 року, а застосунки, що викликають стабільні назви ada, babbage, curie і davinci, того дня автоматично переходять на нові моделі. | Ту саму матрицю перескоків, запущену проти замін протягом шести місяців, які давало повідомлення. Команди із закріпленою моделлю мали дедлайн; команди на голих назвах отримали тиху зміну моделі в дату, якої не обирали. |
Де це вироджується
Чесне обмеження в тому, що покейсний дифф порівнює кейси, які у вас є. Регресія на питанні такого роду, якого ніхто не поклав у набір, проходить усі ворота з цієї сторінки; оновлення з підлабузництвом зламало поведінку, про яку не питав жоден кейс. Набір каже вам, що зміна не зламала того, що ви вже знали перевіряти. Наступний кейс додає аналіз помилок на свіжих розмовах із продакшну, описаний на сторінці «Оцінювання AI», і ніщо тут його не замінює.
- Судити про зміну за середнім — статистикою, у якій виправлення гасить поломку.
- Один запуск на кейс, тож випадковість семплінгу читається як регресія або ховає її.
- Перебудова індексу, зміна інструмента чи новий суддя того самого тижня, що й правка промпту, — і все це приписують промпту.
- Редагувати продакшн-промпт у консолі: розгортання без диффу, без рев’ю і без шляху назад.
- Перезапускати лише ті результати, що нікому не сподобалися.
- Захищений набір, що зменшується щоразу, коли кейс стає незручним.
- Списки перескоків, яких ніхто не читає, тож помилку судді зараховують як виправлення.
- Аліас моделі в продакшні: коли зміниться ваша фіча, вирішує провайдер.
- Дізнатися про дату виведення того тижня, коли вона настає.
- Набір, що запускається лише на ваших змінах і сліпий до тих, яких ви не робили.
Коли це застосовувати
Застосовуйте, коли
- На кожну зміну будь-якого з шести входів — промпту, моделі, семплінгу, індексу, інструментів, судді. Кожна з них — реліз.
- Із трьома запусками на кейс і перескоками лише між стабільними станами — після того, як запуск A/A встановив межу шуму.
- Із захищеним набором, що блокує на будь-якій поломці, хай що зробило середнє.
- Щоночі проти живого провайдера — і повністю в день, коли надходить повідомлення про виведення моделі.
Уникайте, коли
- Порівнянь лише за сукупною оцінкою: вона ховає саме ті кейси, що зламалися.
- Одиночних запусків на малому наборі, де один кейс, що передумав, виглядає як приріст на три пункти.
- Експериментів, у яких індекс, інструменти чи суддя змінилися одночасно з промптом.
- Набору, що лише звітує: поломка, на яку ніхто не зобовʼязаний реагувати, — це поломка, що їде в реліз.
Джерела й метод
На чому стоїть ця стаття
- 12 джерел
- 5 задокументованих збоїв
- Перевірено 17 жовтня 2026 р.
Зміни
чотири зміни в розділі «Чотири зміни — і що показав би покейсний дифф» і рішення трибуналу за захищеним набором- СтаттяDPD error caused chatbot to swear at customer (відкривається в новій вкладці)BBC News · 19.01.2024
- ПостмортемSycophancy in GPT-4o: What happened and what we’re doing about it (відкривається в новій вкладці)OpenAI · 29.04.2025
- ПостмортемExpanding on what we missed with sycophancy (відкривається в новій вкладці)OpenAI · 02.05.2025
- ПостмортемA postmortem of three recent issues (відкривається в новій вкладці)Anthropic · 17.09.2025
- ДокументаціяGPT-4 API general availability and deprecation of older models in the Completions API (відкривається в новій вкладці)OpenAI · 06.07.2023
- Звіт регулятораMoffatt v. Air Canada, 2024 BCCRT 149British Columbia Civil Resolution Tribunal · 14.02.2024
Дослідження
негативні перескоки й те, наскільки саме форматування промпту може зрушити оцінку- ДослідженняSijie Yan et al. — Positive-Congruent Training: Towards Regression-Free Model Updates (відкривається в новій вкладці)arXiv · 11.2020
- ДослідженняJessica Echterhoff et al. — MUSCLE: A Model Update Strategy for Compatible LLM Evolution (відкривається в новій вкладці)arXiv · 07.2024
- ДослідженняMelanie Sclar, Yejin Choi, Yulia Tsvetkov, Alane Suhr — Quantifying Language Models’ Sensitivity to Spurious Features in Prompt Design or: How I learned to start worrying about prompt formatting (відкривається в новій вкладці)arXiv · 10.2023
Практики й походження термінів
знімки, аліаси й терміни попередження про виведення, у розділі «Оновлення моделі»Дослідження з Claude. Пошук і звірку першоджерел зроблено з Claude (Anthropic). Відбір, текст і перевірку фактів — редакція Anatomy of IT Product.
Було корисно?
Поділіться з тим, хто працює над тією ж задачею.