QA Interview Hub · База знань · Тести

AI

Основи LLM: токени, контекст, модель

LLM, токен і контекстне вікно

LLM (large language model) — нейромережа, навчена на великому корпусі тексту передбачати наступний токен. Вона не «знає» фактів як база даних і не виконує код: на кожному кроці видає розподіл ймовірностей наступного токена, з якого обирається один. Звідси і сила (гнучке розуміння тексту), і слабкість (правдоподібна, але хибна відповідь).

Токен — одиниця, якою модель читає і пише текст: частина слова, слово, розділовий знак. Для англійської в середньому 1 токен ≈ 4 символи або ¾ слова; українська і код зазвичай «дорожчі», бо розбиваються на більше токенів. Модель не бачить літер, тому погано рахує літери в слові чи робить точну арифметику.

Контекстне вікно — максимальна кількість токенів, які модель бачить за один запит: system prompt, історія діалогу, вкладені документи, результати tools і сама відповідь. Усе, що не влізло, модель просто не знає. Довгий контекст не безкоштовний: дорожчий, повільніший, а якість часто падає для інформації «посередині» (lost in the middle).

Контекст у побутовому значенні — усе, що ми передали моделі в запиті. Модель сама по собі без стану: «пам'ять» діалогу — це клієнт, який щоразу надсилає всю історію заново.

Модель, версія і параметри генерації

Модель — конкретні навчені ваги з назвою і версією (наприклад, сімейство великих/середніх/малих моделей одного вендора). Більша модель зазвичай розумніша, але повільніша й дорожча; мала — швидка й дешева для простих задач (класифікація, екстракція). Для QA важливо: версія моделі — частина конфігурації. Вендор може оновити «alias» на нову версію, і поведінка продукту зміниться без жодного коміту. Тому в тестах і проді фіксують конкретний ідентифікатор моделі.

Параметри генерації:

  • temperature — «випадковість» вибору токена. 0 — майже детермінований вибір найімовірнішого, вища — різноманітніше й менш передбачувано;
  • top_p (nucleus sampling) — обирати лише з токенів, чия сумарна ймовірність ≤ p;
  • max_tokens — ліміт довжини відповіді; при перевищенні відповідь обривається посеред речення (finish_reason = length);
  • stop sequences — рядки, на яких генерація зупиняється;
  • seed — підтримується не всіма вендорами і не гарантує повної відтворюваності.

Важливо: навіть з temperature: 0 відповідь може відрізнятися між запусками (паралельні обчислення на GPU, оновлення моделі, batching). Тест не повинен припускати побайтову рівність виводу.

Кредити, ціна й ліміти

API-моделі тарифікуються за токенами: окремо input (усе, що ми надіслали) і output (те, що згенерувала модель). Output зазвичай у кілька разів дорожчий за input. Вартість запиту = input_tokens × ціна_input + output_tokens × ціна_output.

Кредити — абстрактна одиниця оплати: попередньо купований баланс (prepaid) або «умовні бали» в підписці, у які сервіс конвертує токени, запити чи хвилини агента. Коли кредити закінчуються, сервіс повертає помилку або вимикає функцію. Для QA це окремий клас сценаріїв: що бачить користувач при нульовому балансі, чи не списуються кредити за провалений запит, чи коректний лічильник.

Що ще впливає на вартість і швидкість:

  • Довжина контексту: кожен крок діалогу чи агента повторно надсилає історію, тож вартість росте швидше, ніж лінійно;
  • Prompt caching: повторюваний префікс (system prompt, документи) кешується і коштує дешевше та швидше;
  • Rate limits: ліміти запитів і токенів на хвилину. Відповідь 429 — повторити з exponential backoff;
  • Latency: час до першого токена (TTFT) і загальний час; streaming робить відповідь «живою» до завершення генерації;
  • Агенти: один запит користувача може породити десятки викликів моделі — потрібен бюджет і ліміт кроків.