Коли невідомо, скільки коштував виклик моделі: заморожування, потім звіряння
Іноді виклик моделі перевищує час очікування, і ви не знаєте, чи провайдер списав кошти. Ніколи не записуйте це як нуль. Позначте витрату як непевну, зупиніть нові платні виклики й доручте названій людині звірити її з випискою провайдера. Виняток — відмови, що сталися до генерації.
🎯 Для Розробник або оператор, який платить за виклики моделей через API
- Чому невідому вартість не можна зберігати як нуль
- Як працюють заморожування та звіряння названою людиною
- Які збої нічого не коштують, а які лишаються непевними
❓ Проблема
Ви надсилаєте запит. З'єднання обривається через тридцять секунд. Чи списали кошти? Провайдер міг згенерувати всю відповідь, її частину або нічого. Якщо ваш облік запише нуль, книги зійдуться в оптимістичний бік. Якщо запише здогад, похибка буде невідомого напрямку.
🧊 Правило: невідоме лишається невідомим
У нашому транспорті з обліком витрат кожна спроба записує рядок, зокрема повторні спроби та резервні варіанти. Стовпець вартості може містити число або явний стан «непевно». Непевний рядок заморожує нові платні виклики на цьому каналі. Знімає заморожування лише одна дія: названа людина звіряє рядок зі сторінкою активності провайдера та записує реальну суму й причину. Агент, який натрапив на проблему, зняти заморожування не може. Порожнє ім'я відхиляється навмисно.
Три види збоїв обробляються по-різному.
- Відмова до генерації. Помилка клієнта, як-от відхилений запит або «на рахунку немає коштів», означає, що провайдер нічого не створив. Вартість нульова, і рядок не є непевним. Одного разу позначення такого рядка непевним зупинило конвеєр на день без жодної причини.
- Перевищення часу очікування або помилка сервера. Провайдер міг виконати роботу. Рядок лишається непевним.
- Списання понад резервування. Перед кожним завданням транспорт резервує максимальну суму. Якщо провайдер повідомляє про більше списання, канал заморожується, доки людина не підтвердить різницю.
📋 Де ми зараз
3 листопада 2026, 22:06 UTC в обліку було 10 150 рядків. Відкритих непевних рядків без звіряння: 0. Загалом зафіксовано звірянь: 2. Підтверджень перевищення резервування: 1.
Підтвердження — хороший приклад. Провайдер списав $0,08773 проти резервування $0,08566, перевищення $0,00207, приблизно п'ята частина цента. Канал лишався замороженим, доки рахунок не перевірили й людина не зафіксувала рішення. Сума крихітна, і суть саме в процедурі, бо те саме правило діє, коли сума велика.
🛠️ Практика: додайте заморожування у власну систему
- Зберігайте вартість як число або як явно позначене невідоме. Ніколи не підставляйте нуль за замовчуванням.
- Записуйте один рядок на спробу, зокрема кожну повторну спробу та резервний варіант, із request id провайдера, якщо він у вас є.
- Класифікуйте збої: відмова до генерації (нуль), перевищення часу очікування або помилка сервера (невідоме), успіх (вартість, яку повідомив провайдер).
- Перед стартом завдання зарезервуйте його максимальну вартість. Відмовте в завданні, якщо буде перевищено денний ліміт.
- Коли рядок непевний, блокуйте нові платні виклики та надішліть повідомлення людині, яка відповідає за рахунок.
- Напишіть коротку команду звіряння, якій потрібні id рядка, фактична сума, причина та непорожнє ім'я. Заносьте її до журналу.
✅ Перевірте себе
- Змоделюйте перевищення часу очікування. Рядок непевний, а наступний платний виклик відхилено з чіткою причиною.
- Змоделюйте відхилений запит. Рядок коштує нуль, і нічого не заморожено.
- Спробуйте звірити з порожнім ім'ям. Це не вдається.
- Після звіряння платні виклики відновлюються, а запис показує, хто це зробив і чому.
🚧 Коли це не працює
- Провайдери без сторінки активності. Якщо ви не бачите, що було списано, ви не можете звірити. Вважайте кожен непевний рядок витраченим на суму резервування, доки не надійде рахунок.
- Затримка виставлення рахунків. Деякі списання з'являються через день. Звіряйте після того, як виписка стане остаточною, а не з першого погляду.
- Спільні рахунки. Списання інших користувачів за тим самим ключем виглядають як перевищення. Використовуйте окремі ключі для кожного каналу.
- Заморожування, що блокує забагато. Заморожування всієї системи через непевність в один цент коштує дорого. Обмежте його каналом, де є невідоме.
- Людське вузьке місце. Якщо звірити може лише одна людина, канал чекає на неї. Призначте заступника.
📊 Докази
| Що ми вимірювали | Відкриті непевні рядки, звіряння та підтвердження в обліку нашого транспорту з обліком витрат |
| Коли | 3 листопада 2026, 22:06 UTC |
| Артефакт | База даних обліку транспорту в нашому приватному розгортанні: 10 150 рядків, 0 відкритих непевних, 2 звіряння, 1 підтвердження |
| Обмеження | Один облік, одна команда. Суми в прикладі малі й наведені заради процедури |
➡️ Далі
Подивіться, як денний ліміт і session id поєднуються з цим, у статті Денний бюджет на AI, що закривається при збої, і що доводить запис про запуск, у статті Квитанції завдань агента.
Джерела
- Денний бюджет на AI, що закривається при збої: ліміти та session id.
- Квитанції завдань агента: що вони доводять: докази на кожен запуск.
- Витрати, бюджети та обмеження: обмеження.
- Відновлення після невдалого, завислого або непевного запуску: що робити, коли запуск непевний.
🔗 Зв'язки статті
Відкрити повний граф знань ↗Зв’язки опублікованих статей. Виберіть вузол, щоб відкрити статтю біля заголовка.
Зв’язки статей · клавіатура / текст
Та сама тема
- Векторна база — це мапа, а не джерело: що ми з'ясували про пошук
- Розбиття великого завдання для дешевої моделі: урок про 24 000 байтів
- Навички, інструменти MCP і правила: три способи дати агенту можливості
- Вісім помилок з shell і git, яких припускалися наші агенти, і правило для кожної
- Кілька агентів, один репозиторій: правила володіння з реальних інцидентів
- Не тримайте ключі провайдера в агенті: один шлюз, один токен на завдання
Наступні кроки
Пов'язані матеріали
Векторна база — це мапа, а не джерело: що ми з'ясували про пошук
Векторна база знаходить уривки, близькі за змістом до вашого запиту. Вона не знає, які з них правдиві чи актуальні. Сприймайте кожен результат як вказівник: відкрийте названий файл, перевірте хеш і беріть числа з артефакту, а не зі знайденого абзацу.
AI agents and MCP explainedРозбиття великого завдання для дешевої моделі: урок про 24 000 байтів
Дешева модель добре дає раду з однією невеликою чітко окресленою роботою, але погано з великим нагромадженням. Ми обмежуємо завдання 24 000 байтами і відмовляємо більшим ще до виклику моделі. Діліть на одиниці — один файл або одна країна на завдання — і перевіряйте розмір до початку.
AI agents and MCP explainedНавички, інструменти MCP і правила: три способи дати агенту можливості
Агенти отримують можливості по-різному. Правило обмежує те, що вони роблять, навичка підказує, як виконати роботу, а інструмент MCP дозволяє викликати функцію. Кожен із трьох має власний ризик, тож фіксуйте всі три в реєстрі й перевіряйте тестом, що нічого не існує поза ним.
AI agents and MCP explainedВісім помилок з shell і git, яких припускалися наші агенти, і правило для кожної
Агенти пишуть команди shell швидко й упевнено, і частина збоїв повторюється. Ось вісім реальних помилок за жовтень 2026 року, що саме кожна зламала і правило в один рядок, яке ми записали після неї. Скопіюйте ці правила у власні інструкції для агентів.
💬 Коментарі