LLMOps
LLMOps — це практика тримати в продакшені фічу на мовній моделі, де той самий ввід не дає надійно того самого виводу. Вона існує тому, що все, що робить програму придатною до релізу — тест, який падає, дифф, що пояснює зміну, відкат, який повертає вчорашній стан, — припускає, що дає. Сторінка починається з чеклиста готовності до прода на двадцять чотири рядки; далі — чим заміняють кожну практику, чому одиниця розгортання складається з чотирьох речей, а не з однієї, оцінювання як набір тестів, що має містити слід, як поводяться вартість і затримка під справжнім трафіком, і пʼять задокументованих інцидентів.
- Брама релізу
- Набір оцінок, не тести
- Одиниця розгортання
- Код, промпт, модель, індекс
- Дивитися щодня
- Токени, затримка, відмови
Чеклист готовності до прода
Спершу весь чеклист, бо саме його потребує огляд готовності і бо майже ніщо в ньому не є дорогим, якщо зроблене до запуску. Він пронумерований, щоб на рядок можна було послатися: «у нас немає 3.4» — це задача, тоді як «зі спостережуваністю треба щось робити» — це настрій. Групи 1 і 3 варто зробити першими: без зафіксованої моделі набір оцінювання міряє те, що може змінитися між двома прогонами, а без ідентифікатора сліду скарга лишається анекдотом.
1.Версійність
- Версію моделі зафіксовано явно. Жодних аліасів, що слідують за останнім релізом постачальника.
- Промпт у контролі версій поруч із кодом, що його надсилає, і має ідентифікатор версії.
- Індекс пошуку має версію, і ця версія є частиною того, що розгортається.
- Зміна будь-чого з чотирьох — це розгортання: з переглядом, оголошенням і попередньою комбінацією, яку досі можна розгорнути.
2.Оцінювання
- Є набір оцінювання з тридцяти-пʼятдесяти випадків, зміщений у бік вводів, які ламають.
- Він проганяється на кожну зміну промпту, моделі чи пошуку й показує частки, а не «пройшло / не пройшло».
- Детерміновані перевірки використовують скрізь, де задача це дозволяє: мітки, схеми, арифметика, наявність цитат.
- Будь-яку модель-суддю калібрують за людськими оцінками, перш ніж їй довіряти, і фіксують, як будь-яку іншу модель.
- Відкладену частину набору дивляться лише перед релізом, щоб підгін не зʼїв її непомітно.
3.Трасування
- Кожен виклик записує версію промпту, відрендерений промпт, модель та її версію.
- Кожен виклик записує ідентифікатори знайдених фрагментів і кожен виклик інструмента з аргументами й результатом.
- Кожен виклик записує токени на вході й виході, затримку та підсумкову відповідь у тому вигляді, який побачив користувач.
- Кожна показана користувачу відповідь несе ідентифікатор сліду, який інтерфейс може повернути назад.
4.Запобіжники
- Відповідь валідують за схемою, перш ніж будь-який код на неї зреагує.
- Посилання перевіряють на існування й на те, чи справді вони підтверджують твердження, до показу відповіді.
- Визначено поведінку на випадок, коли постачальник недоступний, обмежує частоту або гальмує.
- Тайм-аути й повтори з відступом є на кожному виклику, а пакетний трафік не може заморити інтерактивний шлях.
5.Дашборди з першого тижня
- Токени на запит — бо промпти ростуть тихо, і саме цей рядок стає рахунком.
- Затримка на девʼяносто пʼятому процентилі — бо в ній домінує довжина виводу, а хвіст і є тим, що відчуває користувач.
- Частка відмов і відступів, що зростає раніше за все інше, коли зсувається промпт чи модель.
- Частка відповідей, відхилених вашими запобіжниками, — найближче до сигналу якості в реальному часі.
6.Цикл покращення
- Зворотний звʼязок від користувачів несе ідентифікатор сліду, тож оцінка відкривається просто на причину.
- Хтось переглядає негативні оцінки за тиждень і класифікує кожну: пошук, промпт, модель чи все гаразд.
- Справжні збої переносять у набір оцінювання, тож він дорожчає в міру того, як системою більше користуються.
- Одна названа людина володіє числом якості й має право блокувати реліз на цьому числі.
Що змінюється насправді
Звичайний сервіс перевіряють звіркою: надішли це, очікуй те, а розбіжність — це баг. LLM-функцію так перевірити не можна, бо той самий запит цілком законно дає різний текст на двох послідовних викликах. Тож кожну практику, що спирається на точне порівняння, доводиться замінювати, а не пристосовувати, — і команди, які цей крок пропускають, цього не помічають, бо їхній конвеєр лишається зеленим, поки якість під ним пливе.
| Практика | Звичайний сервіс | LLM-функція |
|---|---|---|
| Перевірка правильності | Звірити точний вивід. Розбіжність означає дефект. | Оцінити набір випадків і порівняти частки. Один випадок — шум; зсув частки — сигнал. |
| Одиниця розгортання | Збірка вашого коду. | Код плюс версія промпту, версія моделі й версія індексу: зрушить будь-що — зміниться поведінка. |
| Причина регресії | Щось у диффі. Бісектуйте, доки знайдете. | Можливо, ніщо з вашого: постачальник оновив модель під вами. |
| Що каже рядок логу | 500 — це збій. 200 — це успіх. | Цікавий збій повернув 200 і сказав щось хибне, тож код статусу не несе інформації. |
| Вартість запиту | Приблизно стала й достатньо мала, щоб не рахувати на виклик. | Варіюється на порядок залежно від розміру вводу — і варта логування на кожному виклику. |
| Відкат | Перерозгорнути попередню збірку. | Працює, лише якщо промпт і модель зафіксовано: у незафіксованої моделі немає попередньої версії, куди повертатися. |
Одиниця розгортання — це чотири речі
На цьому розділі тримається все інше на сторінці — тому група 1 чеклиста стоїть першою. Поведінку функції вирішують чотири речі, і лише одна з них є у вашій збірці. Промпт можна відредагувати в консолі. Індекс може перебудувати нічна задача. А модель може оновити постачальник — під аліасом, що завжди вказує на найновіший реліз: це залежність, яка оновлюється у проді сама, без диффу, без перегляду й без попередньої версії, куди повернутися. Жодна інша частина вашого стека не стерпіла б такого й тижня.
Дві здатності роблять решту чеклиста практичною, і їх варто збудувати в перший тиждень. Спосіб змінити версію промпту без розгортання коду, щоб поганий промпт лагодився за тридцять секунд, а не релізом, — але з версією, яку однаково записано й можна переглянути: саме цим це відрізняється від редагування в консолі. І ідемпотентний спосіб перебудувати індекс пошуку, щоб проблема з індексом лікувалася повторним запуском задачі, а не відновленням із бекапу. Обидві здаються зручностями до першого інциденту, після якого вони є різницею між хвилинами й половиною дня.
Оцінювання — це і є набір тестів
Набір оцінювання — це фіксована збірка вводів зі способом оцінити кожен вивід, яку проганяють на кожну зміну промпту, моделі чи пошуку й показують як частки, а не як «пройшло / не пройшло». Тридцять-пʼятдесят випадків — цілком реальний старт: цінність не в покритті, а в тому, що це саме ті випадки, які справді ламаються. Наповнюйте його з проду: кожна скарга, кожен інцидент і кожна дивна відповідь стають випадком — і набір перетворюється на актив, що дорожчає рівно тоді, коли системою більше користуються.
Оцінювати дешево важливіше, ніж оцінювати ідеально, тож беріть найсильнішу перевірку, яку дозволяє задача, перш ніж тягтися до моделі. Мітку можна звірити точно. Схему можна провалідувати. Процитований фрагмент можна перевірити на наявність у джерелі й на те, чи справді він містить твердження. Число у відповіді можна перерахувати. Ці детерміновані перевірки швидкі, безкоштовні й однозначні — і покривають більшу частину реального набору оцінювання, ніж очікують команди; часто більшість його.
Детерміновані перевірки
- Безкоштовні, миттєві й дають той самий вердикт щопрогону.
- Покривають мітки, схеми, обовʼязкові поля, арифметику й наявність цитат.
- Збій вказує на щось конкретне, що можна піти й полагодити.
- Нічого не кажуть про те, чи добре відповідь читати.
Модель як суддя
- Оцінює вільний текст за письмовими критеріями там, де точної відповіді немає.
- Коштує виклику на випадок і пливе, коли змінюється модель-суддя, — тож фіксуйте і її.
- Винагороджує плавне впевнене оформлення й майже сліпа до спокійно сказаного хибного факту.
- Надійна для порівняння двох версій, а не для засвідчення однієї як правильної.
Калібруйте будь-якого суддю, перш ніж на нього спиратися, — рядок 2.4 чеклиста, а діаграма вище і є процедурою. Дайте людям оцінити пʼятдесят відповідей, проженіть суддю на тих самих пʼятдесяти й подивіться, де ці двоє розходяться. Якщо збігаються достатньо часто — ви маєте дешевий інструмент, який можна ганяти на кожну зміну. Якщо ні — ви дізналися, що критерії неоднозначні, а це варто знати в будь-якому разі, бо неоднозначний критерій — це ще й промпт, щодо якого команда не має згоди.
Що має записувати прод
Один рядок логу про те, що запит успішний, тут марний, бо цікавий збій — це виклик, що повернув двісті й сказав щось хибне. Потрібен слід усієї взаємодії: версія промпту й відрендерений промпт, модель та її версія, ідентифікатори знайдених фрагментів, сира відповідь, кожен виклик інструмента з аргументами й результатом, кількість токенів на вході й виході, затримка та підсумкова відповідь. Саме цей запис перетворює «асистент сказав клієнтові неправильне у вівторок» із скарги без відповіді на відтворюваний випадок.
Одне застереження, що належить поруч із цим списком, бо слід тепер є найчутливішим сховищем, яке ви маєте: він за побудовою містить кожен знайдений документ і кожне питання користувача. Застосуйте до нього ту саму політику зберігання, контроль доступу й правила маскування, що й до будь-якої іншої копії цього матеріалу; вирішіть, скільки живе слід, перш ніж відповідь на «чи можемо ми відтворити скаргу з березня» стане «ні»; і подбайте, щоб люди, яким треба переглядати негативні оцінки, дотягувалися до нього, не отримуючи весь корпус.
Вартість і затримка під справжнім трафіком
Контроль витрат має чотири важелі, і тягнути їх варто по черзі, бо перші два майже безкоштовні, а останні два — це вже архітектура. Таблиця і є цим порядком.
| Важіль | Що дає | Чого коштує впровадити |
|---|---|---|
| Скоротити ввід | Зазвичай саме там токени: підрізана історія, менше знайдених фрагментів, приклади, що заслуговують на місце. | Набору оцінювання, щоб довести, що підрізання не коштувало якості. Більше нічого. |
| Скомпонувати під кеш | Стабільний префікс тарифікується часткою ціни входу. Часто найбільша окрема економія на навантаженій функції. | Одноразового перепорядкування промпту — і більше ніколи не класти позначку часу вище межі кешу. |
| Маршрутизувати за складністю | Легка більшість іде на малу швидку модель, потужну лишають для випадків, які цього потребують. | Маршрутизатора, двох наборів результатів оцінювання і чіткого правила, де проходить межа. |
| Пакетувати те, чого ніхто не чекає | Переіндексація, дозаповнення й масова класифікація — за ціною значно нижчою за інтерактивні виклики. | Черги, окремого ключа чи квоти й згоди на повільніше виконання. |
Про затримку треба сказати одну річ прямо, бо вона ловить команди, які ставляться до моделі як до бази даних. Час до першого токена приблизно сталий, а все після нього пропорційне тому, скільки модель пише, — тож повільна відповідь майже завжди довга, і жодне налаштування інфраструктури цього не змінить. Віддавайте відповідь потоком, просіть коротший вивід, коли потрібна менша затримка, і дивіться на девʼяносто пʼятий процентиль, а не на середнє: у середньому домінують короткі відповіді, яких ніхто не чекав.
Пʼять інцидентів — і який рядок спіймав би кожен
Це збої експлуатації, а не моделі, — тому вони тут, а не на сторінці основ. У кожному модель зробила щось пересічне, а система навколо не мала способу це помітити, відтворити або повернутися назад.
| Випадок | Що сталося | Рядок, що це покриває |
|---|---|---|
| Демо запуску Bard, лютий 2023 | Відповідь, використана в рекламі запуску, містила фактичну помилку про космічний телескоп Джеймса Вебба. Її публічно помітили за день, і акції Alphabet різко впали. | 4.2. Перевірюване твердження в опублікованій відповіді — це реліз-артефакт, і його ніхто не перевірив. |
| Інцидент із кешем ChatGPT, березень 2023 | Помилка в клієнтській бібліотеці спричинила те, що частина користувачів бачила заголовки чужих розмов, і розкрила часткові платіжні дані невеликої кількості підписників. OpenAI опублікувала звіт про інцидент за чотири дні. | Це взагалі не збій моделі. Більшість LLM-інцидентів живуть у системі навколо, якій і далі потрібна звичайна інженерія. |
| Повідомлений дрейф GPT-4, липень 2023 | Дослідження, що порівнювало знімки за березень і червень, повідомило про великі коливання поведінки — зокрема падіння на одній задачі з 97,6% до 2,4%. Методологію оскаржили, і значна частина падіння була форматуванням, а не міркуванням. | 1.1 — і слабкого прочитання досить: якщо ви не можете сказати, чи змінилася модель, ви не ставите експеримент. |
| Відкат надмірної згідливості, квітень 2025 | Оновлення зробило широко вживану модель помітно згідливішою — вона підтакувала майже всьому, що казав користувач. Його відкотили, а опублікований розбір зазначив, що офлайн-оцінювання й A/B-тести виглядали добре, тоді як досвідчені тестувальники казали, що щось не так. | 2.1 і 2.5. Набір оцінювання міряє те, що в ньому є, а в ньому ніщо не питало, чи модель погоджується надто легко. |
| Бот підтримки Cursor, квітень 2025 | AI-агент підтримки повідомив користувачам, що входи обмежені одним пристроєм на підписку. Такої політики не існувало. Користувачі скасовували підписки, поки компанія не пояснила, що відповідь дав AI-бот першої лінії. | 6.2 і 6.4. Ніхто не читав, що асистент каже від імені компанії, доки клієнти вже не почали йти. |
Де це вироджується
Чесне обмеження всього на цій сторінці в тому, що вона міряє те, що хтось здогадався покласти в набір. Набір оцінювання — це вибірка зі світу, зібрана людьми, які вже вирішили, що важливо, і система може попливти в бік, під який ніхто не написав випадку, тоді як усі числа лишаються зеленими. Це не аргумент проти вимірювання — це аргумент за те, щоб у циклі лишалася людина, якій дозволено сказати, що щось не так, і бути почутою.
- Незафіксований аліас моделі: він оновлюється у проді без диффу й без відкату.
- Промпти, редаговані в консолі: розгорнутий текст поза контролем версій і не підлягає перегляду.
- Логування самого лише «виклик успішний»: хибну відповідь нема з чого відтворити.
- Набір оцінювання з випадків, які й так проходять: показує високий бал і не виявляє нічого.
- Модель-суддя як єдина брама релізу: винагороджує впевнене оформлення замість правильності.
- Підгін промпту під ті самі випадки, якими міряєте, аж поки бал перестане щось означати.
- Сховище слідів, до якого ніхто не застосував політики зберігання чи доступу, з кожним документом і питанням у продукті.
- Кнопка зворотного звʼязку, чиї дані нікуди не ведуть, і число якості, якого ніхто не має власником.
- Ставлення до зеленого дашборда як до дозволу перестати слухати тих, хто користується функцією щодня.
Коли це застосовувати
Застосовуйте, коли
- Від першої ж LLM-функції, що дійшла до реальних користувачів: почати дешево, доробити потім — дорого.
- Щоразу, коли промпт, модель чи індекс можуть змінитися без розгортання коду: саме тоді версійність і починає важити.
- Там, де хибна відповідь має наслідки, про які повідомить клієнт, і хтось має вміти її відтворити.
- Коли обсяг робить вартість справжнім рядком витрат, а маршрутизація, кешування й пакетування починають окупатися.
Уникайте, коли
- Побудова цілої платформи оцінювання до того, як є функція й кілька справжніх збоїв, які туди покласти.
- Внутрішній експеримент, від якого ніхто не залежить: розумний обсяг процесу тут — зафіксована модель і лог.
- Додавання спеціалізованого вендорського інструмента до того, як ви знаєте, що саме є проблемою: токени, затримка чи якість.
- Оцінювання моделлю там, де є точна правильна відповідь: детермінована перевірка дешевша й чесніша.
Джерела й метод
На чому стоїть ця стаття
- 7 джерел
- 4 задокументовані збої
- Перевірено 13 жовтня 2026 р.
Збої, на яких вчиться стаття
кейси: демо, інцидент, дрейф, відкат і вигадане правило- СтаттяGoogle’s AI chatbot Bard makes factual error in first demo (відкривається в новій вкладці)The Verge · 08.02.2023
- ПостмортемMarch 20 ChatGPT outage: Here’s what happened (відкривається в новій вкладці)OpenAI · 24.03.2023
- Постмортем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 · 05.2025
- СтаттяCompany apologizes after AI support agent invents policy that causes user uproar (відкривається в новій вкладці)Ars Technica · 04.2025
Дослідження
дрейф між знімками моделі й оцінювання моделлюДослідження з Claude. Пошук і звірку першоджерел зроблено з Claude (Anthropic). Відбір, текст і перевірку фактів — редакція Anatomy of IT Product.
Було корисно?
Поділіться з тим, хто працює над тією ж задачею.