Jev: model AI, który decyduje, zamiast gadać

Większość wywołań AI w aplikacjach nie potrzebuje akapitu tekstu. Potrzebuje odpowiedzi na proste pytanie: czy to zgłoszenie dotyczy płatności? Czy klient jest sfrustrowany? Czy ten plik zawiera dane osobowe?

Mimo to sięgamy po GPT-4, Claude’a albo Gemini — modele zaprojektowane do generowania tekstu dla ludzi. Są powolne (kilka sekund na odpowiedź), drogie i mają skłonność do odpowiadania nie tak, jak chcemy. Zamiast "billing" zwrócą "Najlepsza kategoria to billing." albo uszkodzony JSON.

Jev robi coś innego. To model od TypeSafe AI — firmy założonej przez Diogo Almeidę, byłego badacza OpenAI i współtwórcę RLHF/InstructGPT. Zamiast generować tekst, Jev podejmuje ustrukturyzowane decyzje programistyczne. Firma nazywa to „System One Model" — nawiązanie do podziału Kahnemana na szybkie, automatyczne osądy (System 1) i wolne wnioskowanie (System 2).

Jak to działa

Wysyłasz do Jev dwa elementy: stan (dowolny kontekst — tekst, JSON, kod) i pytania (do 50 naraz w jednym wywołaniu HTTP). W odpowiedzi dostajesz ustrukturyzowane dane, nie ciąg znaków.

Są trzy typy pytań:

  • Choice — wybór jednej opcji z menu (do 255 wariantów). Zwraca wybraną opcję i rozkład prawdopodobieństwa dla wszystkich.
  • Score — ocena na skali (np. 1–3 lub 2–10). Zwraca ułamkowy wynik jako średnią ważoną.
  • Noul — pytanie tak/nie. Zwraca skalibrowane prawdopodobieństwo $P \in [0, 1]$, że dane stwierdzenie jest prawdziwe.

Format odpowiedzi jest zawsze zgodny ze zdefiniowanym typem. Nie ma co parsować.

Ile to kosztuje i jak szybko działa

JevGPT-4 / Claude
Tokeny wejściowe$0,04–$0,042 / 1Mkilka dolarów / 1M
Tokeny wyjściowe$0,00 (darmowe)naliczane za każde słowo
Czas odpowiedzi70–500 mskilka do kilkunastu sekund
Gwarancja formatu100%wymaga parsowania, podatne na błędy

Codevolution zmierzył spadek czasu odpowiedzi z 8,6 s do 114 ms przy tym samym zadaniu klasyfikacyjnym.

Nazwa „Jev" pochodzi od Paradoksu Jevonsa: kiedy coś tanieje drastycznie, zużywa się go dużo więcej. Jeśli decyzja AI kosztuje ułamek centa i zajmuje 100 ms, można ją wbudować w tysiącach miejsc w kodzie, gdzie wcześniej było to nieopłacalne.

Przykład w Pythonie

Poniżej ocena wiadomości od klienta — trzy pytania w jednym wywołaniu:

import json
import urllib.request

API_URL = "https://api.typesafe.ai/v1/systemone"
API_KEY = "JEV_live_..."  # klucz z console.typesafe.ai

payload = {
    "model": "jev-latest",
    "state": {
        "message": "Kontaktowałem się już 3 razy i nadal czekam na zwrot środków za dubel płatności!"
    },
    "questions": {
        "department": {
            "type": "choice",
            "instructions": "Do którego działu przekierować zgłoszenie?",
            "criteria": {
                "billing": "Płatności, zwroty, faktury i podwójne obciążenia",
                "technical": "Błędy w aplikacji i problemy techniczne",
                "sales": "Zapytania o ceny i nowe plany"
            }
        },
        "urgency": {
            "type": "score",
            "instructions": "Jak pilna jest ta wiadomość?",
            "criteria": {
                "1": "Zwykłe zapytanie rutynowe",
                "2": "Umiarkowanie pilne",
                "3": "Bardzo pilne / wymagające szybkiej reakcji"
            }
        },
        "is_frustrated": {
            "type": "noul",
            "instructions": "Czy klient brzmi na sfrustrowanego lub poirytowanego?"
        }
    }
}

req = urllib.request.Request(
    API_URL,
    data=json.dumps(payload).encode("utf-8"),
    headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
    method="POST"
)

with urllib.request.urlopen(req) as resp:
    result = json.load(resp)
    answers = result["answers"]

    dept = answers["department"]["choice"]                 # np. "billing"
    is_frustrated_prob = answers["is_frustrated"]["noul"] # np. 0.95

    if is_frustrated_prob > 0.8:
        print(f"Przekierowanie do {dept} z priorytetem dla przełożonego.")

Wynik jest gotowy do sterowania logiką bez żadnego parsowania — dept to string, is_frustrated_prob to float.

Do czego to ma sens

Pierwsze projekty społeczności po premierze pokazują szerszy zakres zastosowań, niż można by się spodziewać:

  • sterowanie przeglądarką bez zrzutów ekranu (7 sekund, 0,3 centa za sesję),
  • pomijanie fragmentów sponsorowanych na YouTube w czasie rzeczywistym,
  • klasyfikacja i porządkowanie pobieranych plików na dysku,
  • ocena ryzyka start-upowego w 10 wymiarach jednocześnie,
  • routing 57 konwencji kodowania w 14 modułach Pythona — Jev decyduje, który standard pasuje do kontekstu, a duży model tylko weryfikuje.

Jev nie zastępuje GPT-4 ani Claude’a. Robi co innego: wyciąga logikę decyzyjną z promptów i zamienia ją w typowany, szybki, tani interfejs. Jeśli twoja aplikacja pyta LLM o klasyfikację, scoring lub prostą bramkę logiczną — Jev jest tańszą i szybszą alternatywą.


Źródła: Cloud Codes, Codevolution, Omar Kamal, Thomas Reid / Towards Data Science, TypeSafe AI blog