---
title: "Jev: модель, яка повертає рішення замість тексту - і вже є в Laravel AI SDK"
url: https://laravelukraine.com/blog/jev-model-iaka-povertaje-risennia-zamist-tekstu-i-vze-je-v-laravel-ai-sdk
author: "Олексій Бабінцев"
date: 2026-09-18
---

# Jev: модель, яка повертає рішення замість тексту - і вже є в Laravel AI SDK

15 вересня TypeSafe AI показала [Jev](https://typesafe.ai) - модель, яка не генерує текст узагалі. Ви передаєте їй стан програми і типізовані питання, а вона повертає відповіді з ймовірностями: яку опцію обрати, де на шкалі перебуває значення, так це чи ні. Через два дні, 17 вересня, Тейлор Отвелл написав, що [підтримка Jev приїхала в гілку 1.x](https://github.com/laravel/ai/pull/1010) пакета `laravel/ai`. Тобто для нас це вже не новина з твітера, а конкретний фасад, який можна поставити й покрити тестами.

Компанію заснував Дієго Алмейда, співавтор RLHF та InstructGPT в OpenAI; на запуску вона підняла $40 млн на чолі з DCVC.

### Що таке Jev

Сама TypeSafe називає цей клас моделей «System One» - за Канеманом, у якого перша система мислення швидка й інтуїтивна, а друга повільна й розмірковувальна. Ставка в тому, що більшість рішень усередині програми - це саме судження першої системи: «до якого бакета це належить?», «це терміново?», «чи варто це ескалювати?». Досі ми орендували під них другу систему, платячи за міркування там, де потрібна лише відповідь.

Увесь API моделі складається з трьох типів питань, і це не обмеження, яке обходять, а сам задум:

- **Choice** - один варіант із набору, до 255 опцій. Повертає обраний варіант, ймовірність кожної опції та впевненість.
- **Score** - позиція на шкалі з 2-10 названих рівнів. Результат може опинитися між рівнями, наприклад 1.035.
- **Noul** (у Laravel - `Boolean`) - так чи ні у вигляді одного числа від 0 до 1.

Стан - це рядок, JSON-об'єкт або масив реплік. Тільки текст: ні зображень, ні звуку. Ліміт - 64k токенів на стан і всі питання разом.

### Чим це відрізняється від класичної LLM

Різниця не в розмірі й не в ціні, а в тому, що саме повертається.

Коли ви просите GPT або Claude «поверни JSON з полем category», ви просите генератор тексту випадково видати валідну структуру - а потім пишете обв'язку, яка виживе, коли він її не видасть. Jev структуру не генерує: вона обмежена вашою схемою за побудовою. Обрати неправильний варіант зі списку вона може, а повернути варіант поза списком - ні.

Звідси решта відмінностей:

- **Затримка** 70-500 мс замість секунд і десятків секунд. Це вкладається в обробник HTTP-запиту.
- **Ціна** $0.042 за мільйон вхідних токенів, вихідні безкоштовні. Тому додати ще п'ять питань або двадцять опцій майже нічого не коштує.
- **Питання рахуються паралельно** за один прохід по стану. Десяте питання коштує токенів, але майже не додає часу - інстинкт «спочатку дешевий виклик, потім уточнювальний» тут перевертається: питайте все одразу, а що з цього знадобилось, вирішить код.
- **Впевненість калібрована.** Модель тренували методом RLCD (Reinforcement Learning for Calibrated Decisions), який оптимізує ймовірності проти результатів, а не проти людських уподобань. Вища впевненість справді означає вищу точність - у сукупності.

Останній пункт цікавіший, ніж здається, бо змінює архітектуру. Поріг має бути не один на всю систему, а окремий на кожну дію - пропорційно до ціни помилки. Поставити тег на статтю можна і при 0.6, списати гроші - хіба що при 0.9, а все нижче віддати людині. Це звичайний `if`, а не промпт. Рівний розподіл ймовірностей теж сигнал: зазвичай він означає не те, що модель розгубилася, а те, що з переданого стану ваші варіанти нерозрізненні, тобто проблема в критеріях.

### Де це застосовувати

Практичний сценарій - каскад: Jev вирішує й маршрутизує дешево, звичайний код обробляє просте, а фронтирна модель отримує лише складну меншість. Під це добре лягає все, що в застосунку зазвичай тримається на хитких промптах:

- тріаж і маршрутизація тикетів, листів, заявок;
- модерація та фільтрація контенту;
- відбір релевантного перед дорогим контекстним вікном;
- перевірка того, що згенерувала інша модель;
- теги й категоризація на обсягах, де раніше це було невигідно;
- будь-яке рішення всередині запиту, якому потрібна відповідь за півсекунди.

Протилежний список не менш важливий: генерація будь-чого, арифметика й дати, рішення, для яких потрібне письмове обґрунтування для аудитора, разові складні міркування і справді відкриті простори відповідей. Це не дешевша LLM, а інший примітив - виклик функції, який випадково виявився розумним, повертає тип і повідомляє, наскільки йому можна вірити.

### Як це виглядає в Laravel

У `laravel/ai` три примітиви лягли на класи в неймспейсі `Laravel\Ai\Classification`. Приклад із опису PR:

```php
  use Laravel\Ai\Classification;
  use Laravel\Ai\Classification\Boolean;
  use Laravel\Ai\Classification\Choice;
  use Laravel\Ai\Classification\Score;

  $result = Classification::of($supportRequest)
      ->questions([
          'urgent' => new Boolean('Does this request need an immediate response?', [
              'true' => 'Explicitly time-sensitive',
              'false' => 'No urgency expressed',
          ]),
          'department' => new Choice('Which team should handle this request?', [
              'billing' => 'Payments, invoices, and refunds',
              'technical' => 'Bugs, outages, and integrations',
              'sales' => 'Pricing, plans, and upgrades',
          ]),
          'frustration' => new Score('How frustrated is the customer?', [
              'Calm',
              'Frustrated',
              'Very angry',
          ]),
      ])
      ->classify();
```

Відповіді - об'єкти, а не масиви рядків:

```php
  $result['urgent']->probability;             // 0.94
  $result['urgent']->isTrue(threshold: 0.8);  // true

  $result['department']->choice;                     // 'technical'
  $result['department']->probabilityOf('technical'); // 0.87
  $result['department']->confidence;                 // 0.82, або null

  $result['frustration']->score;         // 1.24, зважений за ймовірностями рівень
  $result['frustration']->level();       // 1, найімовірніший рівень
  $result['frustration']->label();       // 'Frustrated'
  $result['frustration']->normalized();  // 0.62, частка від найвищого рівня
```

Конфіг отримав `default_for_classification => 'typesafe'` і провайдера з ключем `TYPESAFE_API_KEY`.

Головне ж для щоденної роботи те, що класифікацію одразу зробили тестованою. Є `Classification::fake()`, який генерує відповіді правильної форми без жодного мережевого виклику, плюс `assertClassified()`, `assertNotClassified()` і `assertNothingClassified()`. Події `Classifying` та `Classified` теж на місці.

```php
  Classification::fake();

  $response = Classification::of('text')->questions([
      'is_urgent' => new Boolean('Urgent?'),
      'department' => new Choice('Team?', ['billing' => null, 'technical' => null]),
  ])->classify();
```

Валідація сувора і падає одразу, а не десь у гейтвеї: порожній стан, нуль питань, питання без рядкового ключа, `Choice` з однією опцією, `Score` з асоціативним масивом замість списку - усе це кидає `InvalidArgumentException` зі зрозумілим текстом.

### Що вже зібрали інші

За перші дві доби після запуску з'явилася купа демо. Це саме демо, а не продакшн-кейси, і всі цифри в них - самозвіти авторів, але вони добре показують форму задач, під які модель підходить.

- **1018 наукових статей за $0.08.** Проєкт 1kpapers.com Гассана Ель-Мґарі проганяє через генеративну модель самарі, а потім віддає Jev назву плюс 24 кандидатські теми і просить один `Choice`. Самарі обійшлися в $3.99, класифікація - у $0.08 при медіанній затримці 256 мс на статтю. Показова тут не економія, а те, що в одному конвеєрі працюють генеративна модель і модель рішень, кожна на своїй ділянці.
- **Браузерний агент, що бронює авіаквиток за 7.1 секунди.** У `browser-use/jev-ultrafast` кожен стан сторінки перетворюється на пронумеровану таблицю елементів, і один запит обирає одразу і дію (`CLICK`, `TYPE_TEXT`, `SELECT`, `SCROLL`...), і її ціль. Цюрих - Лондон на справжньому Google Flights за 7.1 с і $0.0039, разом із завантаженням сторінок.
- **Керування комп'ютером за $0.0002 на крок.** У `awlevin/typesafe-computer-use` екран читає OCR, наступну дію обирає Jev, а генеративна модель викликається лише для вільного тексту. Для порівняння: $0.032 за рішення в Opus 5 по голому скріншоту. Найкорисніша фраза в репозиторії - застереження автора: усе, що фронтирна модель робить безкоштовно й між іншим, тут доводиться перебудовувати як детермінований стан.
- **Дрон із судженням на 2.5 Гц.** `RomanSlack/jev-drone` цікавий тим, як акуратно він ставить модель на місце: 500 Гц - політний контролер, 50 Гц - безпека, 15 Гц - класичний комп'ютерний зір, і лише ~2.5 Гц - тактичне судження від Jev, до того ж дорадче. Як пише автор, Jev не може бути шаром сприйняття і не може працювати на частоті керування.

Спільний патерн у всіх: цикл, безпека й арифметика лишаються у звичайному коді, а моделі віддають вузьке судження посередині, яке кодом важко сформулювати.

### Чого Jev не вміє

TypeSafe опублікувала окрему сторінку «jaggedness» із переліком слабких місць - рідкісна чесність як для дня запуску. Головне звідти:

- **Читає буквально.** Заперечення й уточнення сприймаються в лоб. Якщо ви дивитесь на неправильну відповідь і подумки пояснюєте, що ви насправді мали на увазі, - це пояснення і є пропущеною половиною інструкції.
- **Не рахує.** Ні кількість елементів, ні дати. Дати для неї - текст, а не впорядковані величини, тому «що було раніше» і «чи потрапляє в інтервал» рахуйте кодом.
- **Зайвий контекст псує точність.** Фільтруйте дані в коді й передавайте тільки потрібні поля.
- **Стан не вважається ворожим.** Текст, який агітує за власну класифікацію, здатен зсунути відповідь. Якщо у стан потрапляє контент від користувача - це ваша модель загроз.
- **Нічого не генерує.** Витягти значення з вільного тексту вона не може: дайте їй кандидатів регуляркою чи генеративною моделлю, а вона обере.

Правило з їхньої документації варте того, щоб повісити його над будь-яким промптом узагалі: не питайте модель те, що код може обчислити точно, і не ховайте кілька суджень в одному питанні.

### Як отримати доступ

Доступ поки за списком очікування. Ключ видають у консолі TypeSafe - `console.typesafe.ai/settings/keys`; альтернативний шлях - через шлюз Vercel AI. Далі ключ кладеться у звичайну змінну оточення, яку читають усі SDK і провайдер у `laravel/ai`:

```bash
  TYPESAFE_API_KEY=sk-...
```

Офіційні SDK є для Python (`pip install typesafe-sdk`) і JavaScript (`npm install @typesafe-ai/sdk`), обидва за замовчуванням ідуть на `jev-latest`. Якщо хочеться без SDK, є один ендпоїнт: `POST https://api.typesafe.ai/v1/systemone`.

У PHP свого офіційного клієнта поки немає: на Packagist уже з'явилися перші сторонні пакети, але вони версії v0.1.0, датовані 17 вересня, з одиничними завантаженнями - покладатися на них зарано. Для Laravel логічніше дочекатися штатного провайдера з `laravel/ai`, який і робить усю роботу.

Ліміти на `jev-1.13` - 250 000 токенів на секунду і 1200 запитів на хвилину, вище повертається 429. TypeSafe попереджає, що змінюватиме ці цифри без анонсу, поки додаються потужності.

### Чи варто чіпати зараз

Подивитися - так, тягнути в продакшн - ще ні.

Код змерджено в гілку `1.x`, а останній реліз `laravel/ai` - v0.11.2 від 3 вересня, тобто в теґу цього поки немає. Сам автор PR писав, що схиляється притримати мердж, «поки вляжеться пил», або віддати це як експериментальний API вже після виходу 1.x. Додайте, що самій моделі три дні, доступ за списком очікування, а ліміти TypeSafe попереджає змінювати без анонсу.

Якщо все ж пробуєте раніше - зафіксуйте версію моделі. `jev-latest` зараз вказує на `jev-1.13.0` і поїде далі, а разом з ним поїдуть і ваші пороги.

### Коротко про головне

#### Що таке Jev?

Модель, яка замість тексту повертає типізовані рішення з ймовірностями за 70-500 мс: вибір одного з варіантів, позицію на шкалі або «так/ні» як число від 0 до 1.

#### Чи може він галюцинувати?

Значення поза вашою схемою - ні, це гарантовано конструкцією. Неправильне значення з вашої схеми - цілком може.

#### Скільки коштує?

$0.042 за мільйон вхідних токенів, вихідні безкоштовні. На бенчмарку TypeSafe це близько $0.0004 за випадок.

#### Чи вміє він писати код або тексти?

Ні. Генерації немає взагалі - модель не навчали генерувати текст.

#### Чи замінить він мою LLM?

Ні. Робочий сценарій - каскад: Jev дешево класифікує й маршрутизує, код робить просте, фронтирна модель отримує складну меншість.

#### Що потрібно, щоб спробувати в Laravel?

Ключ TypeSafe у `TYPESAFE_API_KEY` і гілка `1.x` пакета `laravel/ai` - у релізі класифікації поки немає.
