Основи LLM
Велика мовна модель (LLM) оцінює кожен можливий наступний токен щодо наявного тексту, дає семплеру обрати один і повторює це, доки відповідь не завершиться. Чат, виклики інструментів, міркування й агенти — усе це та сама операція, виконана багато разів. Сторінка починається з дванадцяти речей, які модель робить і які виглядають дефектами, не будучи ними, — кожна з механізмом за нею і з тим, що справді лікує; далі — сам цикл, чому те саме речення коштує більше українською, що насправді вміщує контекстне вікно, обмеження, які не залатати, пʼять задокументованих провалів і те, скільки все це коштує у проді.
- Одиниця роботи
- Один токен за раз
- Памʼять
- Лише контекстне вікно
- Відповіді
- Згенеровані, не знайдені
Дванадцять речей, які виглядають багами, не будучи ними
Майже кожен приходить до цієї теми з конкретною скаргою, а не з загальним питанням: модель зробила щось, що виглядало зламаним. Спершу весь список, бо саме ним можна скористатися вже сьогодні і бо кожен рядок має точну механічну причину, а не настрій. Права колонка важить більше, ніж здається: одинадцять із цих дванадцяти лікуються деінде, а не в промпті, і взятися не за ту корекцію — найдорожча звичка на AI-проєкті. Кожен названий тут механізм повністю розібрано нижче, і на номери рядків із тих розділів є посилання.
| № | Що ви побачили | Механізм | Що справді лікує |
|---|---|---|---|
| 1 | Вона не може порахувати літери у слові. | Вона не бачить літер. Текст приходить як номери токенів, а літери всередині токена їй не видно. | Зробіть це кодом. Це не той промпт, який можна покращити. |
| 2 | Вона забула, про що ми домовились три повідомлення тому. | API не зберігає нічого між викликами. Історію надсилає ваш застосунок — і щось її обрізало. | Свідомо вирішуйте, що викидається чи стискається, а не дозволяйте бібліотеці різати початок. |
| 3 | Вона вигадала джерело, яке виглядало цілком правдивим. | Вона видає найправдоподібніше продовження, а окремого стану «я не знаю» в ній немає. | Покладіть документ у промпт і дайте їй законний спосіб сказати, що відповіді там немає. |
| 4 | Той самий промпт дав дві різні відповіді. | Семплер обирає з розподілу, а вибір випадковий за побудовою. | Перевіряйте властивості відповіді — мітку, схему, посилання, — а не її точний текст. |
| 5 | Вона зігнорувала середину довгого документа, який я вставив. | Увага надійно найсильніша ближче до початку й кінця промпту й слабша посередині. | Ставте вказівку й питання в кінець і вставляйте менше, а не більше. |
| 6 | Двадцятий крок коштував удесятеро більше за перший. | Уся розмова надсилається заново на кожному кроці — ви щоразу платите за перечитування історії. | Свідомо підрізайте чи стискайте історію й логуйте кількість токенів із першого дня. |
| 7 | Відповідь урвалася посеред речення. | Стеля максимуму токенів обірвала генерацію. Моделі про цей ліміт не казали. | Підніміть стелю, щоб коректна відповідь помістилася, і вважайте обрізану відповідь помилкою, а не результатом. |
| 8 | Вона описала функцію, яку ми випустили минулого місяця, — неправильно. | Ваги заморожені на межі навчання. Усього пізнішого в них просто немає. | Пошук. Ваша документація має приходити в промпт на кожному запиті. |
| 9 | Арифметика в підсумку хибна. | Числа передбачаються як токени, так само як слова. Ніщо в циклі нічого не обчислює. | Рахуйте підсумок кодом, дайте моделі викликати цей код — і хай цитує результат. |
| 10 | Українська версія коштує вдвічі дорожче за запит. | Токенізатор зібрано на переважно англійському корпусі, тож кирилиця розпадається на значно більше токенів. | Плануйте контекст і вартість за мовою. Це ще й означає, що українською вікно заповнюється швидше. |
| 11 | Вона відмовила, а на переформульований запит погодилась. | Відмова — це завчена поведінка над текстом, а не рушій правил, що звіряється з політикою. | Забезпечуйте політику кодом. Формулювання — це побажання, права доступу — межа. |
| 12 | Вона виконала вказівку, написану всередині завантаженого документа. | Вказівки й дані — це ті самі токени. Ніщо не позначає частину промпту як довірену. | Мінімум прав, перевірка у вашому коді й підтвердження перед усім безповоротним. |
Одна операція, повторена багато разів
Модель не читає слів. Текст спершу ріжеться на токени — фрагменти приблизно з трьох-чотирьох символів в англійській, — і кожен токен має номер, тож насправді модель отримує послідовність чисел. У цьому весь рядок 1: спитайте її, скільки літер у слові, — і вона гадає про те, чого ніколи не бачила, як ви гадали б про кількість доріжок на платівці, поданій вам у запечатаному конверті.
Маючи цю послідовність, модель видає одне: оцінку для кожного токена у своєму словнику — наскільки добре кожен продовжив би текст. Вона не видає відповіді, речення чи думки: вона видає розподіл приблизно по ста тисячах кандидатів. Далі семплер обирає одного, дописує його до входу, і весь обрахунок запускається знову для наступного токена. Відповідь на чотириста слів — це той самий цикл, прокручений кількасот разів, і саме тому вивід повільніший і дорожчий за ввід: ввід обробляється за один прохід, а кожен токен виводу — це окрема подорож крізь модель.
Семплер — це те місце, де живуть налаштування, які ви справді можете змінювати, і їх менше, ніж підказує інструментарій. Вони визначають, як розподіл перетворюється на вибір: додати знань вони не можуть і уважнішою модель не зроблять. Звідси ж і рядок 4: той самий промпт може дати різні відповіді, бо вибір із розподілу — це вибір, а навіть за найнижчої температури пакетування й відмінності заліза на боці постачальника лишають точну відтворюваність недосяжною.
| Налаштування | Що робить | Практична порада |
|---|---|---|
temperature | Згладжує або загострює розподіл перед вибіркою. Вище значення — малоймовірні токени дістають справжній шанс. | Низька — для видобування, класифікації й коду. Вища — лише для чернеток та ідей, де різноманіття і є метою. |
top_p | Лишає лише найімовірніші токени, чиї ймовірності разом дають p, і робить вибірку серед них. | Змінюйте одне з двох, а не обидва: вони взаємодіють, і підкручування обох одночасно робить результат незбагненним. |
| Ліміт токенів виводу | Жорстка стеля відповіді. Модель про неї не знає — генерацію просто обрізають. | Рядок 7. Ставте достатньо високо, щоб коректна відповідь помістилася, і вважайте обрізану відповідь помилкою, а не результатом. |
| Стоп-послідовності | Рядки, що завершують генерацію тієї миті, коли зʼявляються. | Корисні, коли ви генеруєте по одному елементу списку. Здебільшого зайві, якщо просите структурований вивід. |
| Seed | Просить постачальника зробити вибірку повторюваною. Найкраще зусилля, а не гарантія — ні між версіями моделі, ні між серверами. | Корисний для налагодження однієї сесії. Ніколи не основа тесту, бо потрібної вам гарантії просто не пропонують. |
Чому те саме речення коштує більше українською
Токенізатор має фіксований словник, вивчений один раз із навчального корпусу, і зберігає цілим те, що бачив часто. Той корпус переважно англійський, тож англійські слова виживають майже неушкодженими, а кирилицю ріже на уламки з одного-двох символів. Наслідок — рядок 10, і це арифметика, а не думка: той самий зміст, висловлений українською, приходить приблизно як удвічі-втричі більше токенів.
Звідси два практичні наслідки, і україномовний продукт зустрічає обидва. Перший — рахунок: однакова робота коштує більше, на кожному запиті, завжди. Другий тихіший і важливіший: контекстне вікно рахується в токенах, тож українська версія функції вичерпує місце раніше за англійську. Історія чату, набір знайдених документів чи блок прикладів, які в англійській уміщуються вільно, в українській можуть виявитися тим, що переступає межу, — і симптом виглядатиме як рядок 2, а не як проблема бюджету.
Контекстне вікно — це вся памʼять
Контекстне вікно — це максимальна кількість токенів, яку модель може мати перед собою на одному виклику, і воно вміщує все одразу: системні вказівки, розмову дотепер, будь-які вставлені документи, описи інструментів і саму відповідь, що генерується. Це не сховище. Між двома викликами модель не зберігає геть нічого: APIApplication Programming Interface — контракт між програмамиПравила, за якими одна програма звертається до іншої: які запити можна надіслати, у якому вигляді й що прийде у відповідь. Для того, хто звертається, це контракт — усе, що за ним, лишається чорною скринькою, і саме тому другий бік можна переписати, не зламавши вас.Докладніше в статті →Усі терміни не має стану, точно як HTTPHyperText Transfer Protocol — протокол вебуПротокол, яким спілкуються браузер і сервер: клієнт надсилає метод і адресу, сервер відповідає кодом стану й тілом. Між запитами він нічого не памʼятає — кожен запит стоїть сам по собі, тому все, що треба памʼятати, передається явно.Усі терміни.
Велике вікно — це не те саме, що увага до всього, що в ньому. Моделі надійно використовують те, що ближче до початку й до кінця промпту, а середину — гірше: це рядок 5, і довгий документ, вкинутий у центр запиту, — класичний спосіб отримати відповідь, яка ігнорує половину його. Ставте вказівку й саме питання в кінець, найближче до місця, де починається генерація, а зайве не кладіть узагалі. Заповнювати мільйонне вікно лише тому, що воно є, — це рішення про вартість і затримку не менше, ніж про якість.
Тут же кешування промптів змінює економіку, і це та єдина оптимізація, яку варто зрозуміти рано. Постачальники можуть кешувати оброблену форму префікса вашого запиту, тож повторюваний префікс тарифікується часткою звичайної ціни входу й обробляється швидше. Заковика в тому, що збіг має бути саме префіксним: один змінений байт будь-де перед кінцем кешованої ділянки знецінює її всю. Практично це означає, що стабільний матеріал іде першим — системні вказівки, описи інструментів, довгий документ, — а все мінливе останнім. Позначка часу чи ідентифікатор запиту на початку системного промпту тихо руйнує кеш на кожному виклику, і в самій відповіді про це не скаже ніщо, крім лічильників використання.
Обмеження, які структурні, а не помилки
Модель, яка завжди видає найправдоподібніше продовження, видасть правдоподібне продовження й тоді, коли правдивого просто немає. Ось що таке галюцинація, і це рядок 3: не збій, а той самий механізм, застосований до питання, під яке у вагах немає нічого твердого. Окремого стану «я не знаю» в неї немає, тож упевнений тон хибної відповіді нічим не відрізняється від упевненого тону правильної, і впевненість не несе інформації, якою можна користуватися.
Запит до бази даних
- Повертає рядки, які існують, або порожній результат. Третього варіанта немає.
- Той самий запит до тих самих даних щоразу дає ту саму відповідь.
- Хибний результат означає, що хибні дані або запит, — і можна показати, що саме.
- Масштабується здешевленням пошуку.
Виклик моделі
- Завжди щось повертає. Порожній результат — це поведінка, яку треба спроєктувати.
- Той самий промпт може дати різні відповіді, а самі промпти переналаштовують, коли змінюється модель.
- Хибний результат зазвичай означає, що в промпті бракувало факту, а сигналізувати про це модель не мала як.
- Масштабується витрачанням більшої кількості токенів — а це прямий і видимий кошт.
Ще два обмеження випливають із того, як роблять модель. Її ваги заморожені на межі навчання, тож усе пізніше — реліз, зміна цін, інцидент, ваша ж документація з минулого тижня — просто не всередині, і питання про це дає описану вище правдоподібну вигадку, а не зізнання. Це рядок 8. А відмови — те саме явище з іншого боку: відмова є завченою поведінкою над текстом, а не рушієм політик, — тому й стається рядок 11, і тому будь-яке правило, що справді має триматися, належить вашому власному коду.
Пʼять провалів і чого бракувало в кожному
Жоден із цих випадків не стався через несправність моделі. У кожному модель зробила рівно те, що описує механізм вище, а бракувало контролю, який хтось вважав зайвим. Їх варто знати на імена, бо кожен тепер є найдешевшим способом обґрунтувати цей контроль на плануванні.
| Випадок | Що сталося | Контроль, якого бракувало |
|---|---|---|
| Mata v. Avianca, червень 2023 | Нью-йоркський адвокат подав документ із посиланнями на шість рішень, яких не існує. На прохання підтвердити їх модель видала ще й повні тексти. Суд оштрафував адвокатів і фірму на $5 000. | Рядок 3 без жодної перевірки. Усе, що можна перевірити, перевіряється кодом: посилання або існує, або ні. |
| Moffatt v. Air Canada, лютий 2024 | Чатбот авіакомпанії описав політику повернення за тарифом у разі втрати близьких, яка суперечила власній опублікованій сторінці компанії. Трибунал зобовʼязав Air Canada заплатити й відхилив аргумент, що чатбот — окрема юридична особа. | Рядок 8. Правильна політика була на тому самому сайті й жодного разу не потрапила в промпт. |
| CNET, січень 2023 | Сімдесят сім статей про особисті фінанси, написаних із AI, опублікували без розголосу. Перевіряльники знайшли помилки в прикладах зі складними відсотками; десятки статей дістали виправлення, а програму зупинили. | Рядок 9. Числа передбачили як текст. Арифметика належить коду, який викликає модель, а не відповіді, яку вона пише. |
| Samsung, травень 2023 | Інженери вставляли внутрішній код у публічний чатбот, щоб дістати з ним допомогу. Невдовзі компанія заборонила генеративні AI-інструменти на корпоративних пристроях. | Це взагалі не збій моделі. Промпт — це вихідний запит: вирішіть, що може покидати будівлю, до того, як людям доведеться це пояснювати. |
| Stack Overflow, грудень 2022 | Сайт заборонив згенеровані відповіді за кілька тижнів після виходу ChatGPT, мотивуючи тим, що вони достатньо правдоподібні, щоб їх було дорого модерувати, і достатньо хибні, щоб бути шкідливими. | Ціна рядка 3 на масштабі. Упевненість — не сигнал, тож обсяг без перевірки перекладає роботу на того, хто перевіряє. |
Скільки це коштує, коли приходить справжній трафік
Вибір моделі — це діапазон, а не рішення, ухвалене один раз. Постачальники дають потужний рівень і дешевий швидкий рівень, і корисна звичка така: довести, що задача взагалі розвʼязна, на найсильнішій доступній моделі, а тоді спробувати спуститися діапазоном, маючи в руках фіксований набір тестових випадків. Без цього набору ви не обираєте модель, а вгадуєте її — і дешевша модель виглядатиме пристойно на тих трьох прикладах, які ви навмання спробували.
Рядок витрат на LLM-функцію — це майже завжди токени на запит, помножені на кількість запитів, і непомітно росте саме перший множник. Промпти накопичуються: вказівка, додана після кожного інциденту, довший приклад, ще три знайдені документи — а під усім цим історія розмови. Логуйте кількість токенів кожного виклику з першого дня, поруч із затримкою: це єдиний спосіб побачити зростання, і він перетворює туманне «AI-функція подорожчала» на конкретний промпт, який можна підрізати.
Затримка поводиться не так, як будь-яка інша ваша залежність. Час до першого токена приблизно сталий, а все після нього пропорційне тому, скільки модель пише, — тож запит із довгою відповіддю повільний саме тому, що вона довга, і жодне налаштування інфраструктури цього не змінить. Звідси дві речі: віддавайте відповідь потоком, щоб користувач бачив поступ, а не крутилку, і просіть коротший вивід, коли вам справді потрібна менша затримка, бо це та змінна, яка на неї впливає.
Ставтеся до постачальника як до того, чим він є: сторонньої залежності з лімітами частоти й показником доступності, якого ви не контролюєте. Кожен виклик потребує тайм-ауту й повтору з відступом, бо зависла заявка тримає зʼєднання значно довше за будь-яку базу. І вирішіть заздалегідь, що робить функція, коли модель недоступна, бо «сторінка висне» — це теж рішення, просто ніким не ухвалене.
Де це вироджується
Усе вище описує компонент, який генерує правдоподібний текст і не робить більше нічого. Чесне обмеження цього компонента легко сформулювати й важко прийняти: не існує ні конфігурації, ні промпту, ні версії моделі, які зробили б згенеровану відповідь самоперевірною. Кожне розташування нижче — спроба обійти цей факт, і кожне падає так, як уже передбачили дванадцять рядків.
- Ставлення до моделі як до бази знань про ваш власний продукт замість того, щоб класти свої документи в промпт.
- Тести, що звіряють точний рядок відповіді: вони падають від зміни вибірки, а не від зміни поведінки.
- Позначка часу чи ідентифікатор запиту на початку системного промпту: вони знецінюють кеш промптів на кожному виклику.
- Підняття температури, щоб відповіді стали «розумнішими», хоча воно лише робить малоймовірні токени ймовірнішими.
- Дозвіл чату рости, доки бібліотека тихо обріже початок — разом із системними вказівками.
- Заповнення величезного контекстного вікна лише тому, що воно є: ви платите за токени, які радше псують відповідь, ніж покращують.
- Планування української функції за англійськими лічильниками токенів: і вікно, і бюджет хибні вдвічі.
- Ставлення до відмови як до засобу безпеки, хоча це завчена поведінка, яку обходить переформулювання.
- Реліз без метрик токенів і затримки: перша ознака проблеми — рахунок.
Коли це застосовувати
Застосовуйте, коли
- Робота з текстом, де хороша відповідь має багато припустимих форм: стиснути, переписати, класифікувати, видобути структуру з прози.
- Інтерфейси, де ввід справді довільний і форма з полями була б хибною формою.
- Задачі, чий результат людина переглядає до того, як він набуде чинності, — тож хибна відповідь ловиться, а не виконується.
- Задачі, де виписати правила явно довше, ніж показати моделі, який вивід є добрим.
Уникайте, коли
- Усе, що потребує точної, перевірюваної відповіді: арифметика, підсумки, правила відповідності. Для цього викликайте код — і дайте моделі викликати саме його.
- Факти про вашу власну галузь без нічого знайденого в промпті: очікуваним результатом є впевнена вигадка.
- Шляхи, де хибна відповідь діє негайно й безповоротно — платежі, видалення, вихідні повідомлення — без людського контролю.
- Численні дешеві виклики, де правило, таблиця відповідностей чи маленький класифікатор роблять те саме за тисячну частку вартості.
Джерела й метод
На чому стоїть ця стаття
- 8 джерел
- 5 задокументованих збоїв
- Перевірено 13 жовтня 2026 р.
Збої, на яких вчиться стаття
кейси за дванадцятьма симптомами- Звіт регулятораMata v. Avianca, Inc., No. 22-cv-1461 — Opinion and Order on Sanctions (відкривається в новій вкладці)U.S. District Court, S.D.N.Y. · 22.06.2023
- Звіт регулятораMoffatt v. Air Canada, 2024 BCCRT 149British Columbia Civil Resolution Tribunal · 14.02.2024
- СтаттяCNET Is Testing an AI Engine. Here’s What We’ve Learned, Mistakes and All (відкривається в новій вкладці)CNET · 01.2023
- СтаттяCNET’s Article-Writing AI Is Already Publishing Very Dumb Errors (відкривається в новій вкладці)Futurism · 01.2023
- СтаттяSamsung bans use of generative AI tools like ChatGPT after April internal data leak (відкривається в новій вкладці)TechCrunch · 02.05.2023
- ДокументаціяPolicy: Generative AI (e.g., ChatGPT) is banned (відкривається в новій вкладці)Meta Stack Overflow · 05.12.2022
Практики й походження термінів
токени, контекстні вікна й кешування — як їх описують провайдериДослідження з Claude. Пошук і звірку першоджерел зроблено з Claude (Anthropic). Відбір, текст і перевірку фактів — редакція Anatomy of IT Product.
Було корисно?
Поділіться з тим, хто працює над тією ж задачею.