dokumentacja
API

Jev — model decyzyjny

Markdown

Model decyzyjny Jev firmy TypeSafe odpowiada na typowane pytania dotyczące tekstu lub JSON: wybór wariantu, ocena na skali lub „tak/nie” z prawdopodobieństwami. To nie czat ani generowanie tekstu.

Pełny przewodnik
POSThttps://api.ailoot.ai/v1/systemone
Jev — model decyzyjny
curl https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "Pomocy! Od 3 dni moje wypłaty kończą się niepowodzeniem.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Czy ta wiadomość wskazuje na pilną sprawę?"
      }
    }
  }' 
200 OK
{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

Jev — model decyzyjny klasy System One firmy TypeSafe. Nie generuje tekstu ani nie prowadzi dialogu: przekazujesz stan (state) — tekst lub JSON — i zestaw pytań, a w odpowiedzi otrzymujesz typowane wartości z prawdopodobieństwami. Na ich podstawie kod od razu rozgałęzia wykonanie, sortuje i wyznacza dalszą ścieżkę, bez analizowania swobodnego tekstu.

Wszystkie pytania jednego żądania są oceniane równolegle i niezależnie od siebie, względem tego samego state. Według TypeSafe dodawanie pytań prawie nie zmienia czasu odpowiedzi, a pytania nie wpływają na siebie nawzajem.

CoW skrócie
Modeljev-latest — alias najnowszej stabilnej wersji Jev; karta w katalogu
MetodaPOST /v1/systemone. To nie czat: formaty OpenAI, Anthropic i Gemini nie pasują do Jev. Odpowiedź przychodzi w całości jako jeden JSON
Co przyjmujeTylko tekst: ciąg znaków, obiekt JSON lub tablica tekstów. Obrazy, audio i wideo najpierw przekształć w tekst
Kontekst64K tokenów na żądanie — state i wszystkie pytania łącznie; state z najdłuższym pytaniem — do 32K
JęzykWedług TypeSafe model najdokładniej działa po angielsku; inne języki przyjmuje, ale dokładność jest niższa — sprawdź na własnych danych
CenaWejście $0.084 za 1 mln tokenów, wyjście bez opłat

Żądanie

Autoryzacja

  • Authorizationheaderwymagany

    Klucz Ailoot w postaci Bearer sk-….

Treść żądania

  • modelstringwymagany

    jev-latest.

  • statestring | object | arraywymagany

    Co oceniać: ciąg z tekstem lub JSON — zgłoszenie klienta, rekord z bazy, korespondencję, bieżący stan Twojej aplikacji. Obiekt z czytelnymi nazwami pól zwykle jest wygodniejszy niż pojedynczy ciąg znaków.

  • questionsobjectwymagany

    Pytania. Klucze wybierasz sam; odpowiedzi otrzymasz pod tymi samymi kluczami. Klucz nie wpływa na odpowiedź — samo pytanie jest zadawane w instructions.

  • questions.*.typestringwymagany

    noul, choice lub score — zobacz poniżej.

  • questions.*.instructionsstring | object | arraywymagany

    Samo pytanie. Długie pytanie z danymi można przekazać jako obiekt: pytanie w jednym polu, dane w innych; odwołuj się do pól po nazwie w grawisach.

  • questions.*.criteriaobject | array

    Opcje odpowiedzi, różne dla każdego typu: opisy „tak” i „nie” dla noul (opcjonalnie), słownik wariantów dla choice, uporządkowana lista poziomów dla score.

Typy pytań

TypO co pytaCo zwraca
noulCzy stwierdzenie jest prawdziwe: tak czy nienoul — prawdopodobieństwo „tak” od 0 do 1
choiceKtóry z podanych wariantów pasujechoice, probabilities, confidence
scoreGdzie znajduje się state na Twojej skali poziomówscore, legend, probabilities, confidence

Typy można łączyć w jednym żądaniu.

noul — tak czy nie

Pole criteria jest opcjonalne: można w nim opisać, co oznacza „tak” (true) i „nie” (false). Odpowiedź noul — liczba od 0 (nie) do 1 (tak).

"is_urgent": {
  "type": "noul",
  "instructions": "Czy ta wiadomość wskazuje na pilną sprawę?",
  "criteria": {
    "true": "Wyraźnie wymaga szybkiej reakcji",
    "false": "Nie wskazuje na pilną sprawę"
  }
}

choice — wybór wariantu

criteria — słownik „wariant → opis”; jeśli opis nie jest potrzebny, podaj null. Do 255 wariantów. W odpowiedzi choice — najbardziej prawdopodobny wariant, probabilities — prawdopodobieństwo każdego wariantu (łącznie 1), confidence — pewność od 0 do 1.

"department": {
  "type": "choice",
  "instructions": "Który zespół powinien się tym zająć?",
  "criteria": {
    "billing": "Płatności, fakturowanie, zwroty",
    "technical": "Błędy, awarie, integracje",
    "sales": "Ceny, przejście na wyższy plan, nowi klienci"
  }
}

score — ocena na skali

criteria — poziomy od najniższego do najwyższego, nie więcej niż 10 (TypeSafe zaleca co najmniej dwa). W odpowiedzi score — wartość ważona prawdopodobieństwami poziomów (może znaleźć się między poziomami), legend — numer poziomu i jego opis, probabilities i confidence. Według TypeSafe, score nadaje się do porównania z progiem, ale nie do wyznaczania dokładnej liczby między poziomami.

"frustration": {
  "type": "score",
  "instructions": "Jak bardzo sfrustrowany jest klient?",
  "criteria": ["Spokojny", "Sfrustrowany", "Bardzo rozzłoszczony"]
}

Odpowiedź

  • modelstring

    Która wersja modelu odpowiedziała. Alias jev-latest z czasem przechodzi na nowe wersje: jeśli dobrałeś progi confidence dla konkretnej wersji, obserwuj to pole.

  • answersobject

    Po jednej odpowiedzi na każde pytanie, pod tymi samymi kluczami. Każda odpowiedź ma type, a w przypadku choice i score — także confidence.

  • usageobject

    input_tokens i output_tokens. Opłata jest pobierana tylko za tokeny wejściowe.

Kilka pytań w jednym żądaniu

Zadaj wszystkie pytania dotyczące jednego state w jednym żądaniu: są oceniane równolegle, a state jest przekazywany raz. Według TypeSafe w ich przykładzie z 13 pytaniami jedno wspólne żądanie było 12,2 razy tańsze i 10 razy szybsze niż 13 osobnych żądań wysyłanych kolejno, przy tych samych odpowiedziach.

Złożony osąd lepiej rozbić na proste pytania i połączyć odpowiedzi w kodzie: na przykład zamiast „oceń wniosek” — osobne oceny rynku, wykonalności i różnic wobec konkurencji. Wagi zmieniają się wtedy w kodzie, a nie w treści pytania.

{
  "model": "jev-latest",
  "state": "Pomocy! Od 3 dni moje wypłaty kończą się niepowodzeniem.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Który zespół powinien się tym zająć?",
      "criteria": {
        "billing": "Płatności, fakturowanie, zwroty",
        "technical": "Błędy, awarie, integracje",
        "sales": "Ceny, przejście na wyższy plan, nowi klienci"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "Jak bardzo sfrustrowany jest klient?",
      "criteria": ["Spokojny", "Sfrustrowany", "Bardzo rozzłoszczony"]
    },
    "is_urgent": {
      "type": "noul",
      "instructions": "Czy ta wiadomość wskazuje na pilną sprawę?"
    }
  }
}

Kiedy się sprawdza

  • Routing. Przekazać zgłoszenie do właściwego działu, a żądanie do właściwego wykonawcy: prostego kodu, dużego modelu lub człowieka.
  • Sortowanie i priorytet. Pilność, ton wypowiedzi, ryzyko — na skali, z progami w kodzie.
  • Moderacja i kontrole. Czy wiadomość narusza zasady, czy źródło potwierdza cytat, czy w dokumencie znajduje się odpowiedź na pytanie — zanim tekst zostanie przekazany dalej.
  • Scoring i ranking. Oceń dokumenty, kandydatów lub znalezione fragmenty według własnych kryteriów oceniania i zdecyduj w kodzie, co będzie przetwarzane dalej.
  • Zamiast kruchego „zwróć JSON”. Wywołanie, które z założenia zwraca typowane wartości, a nie tekst wymagający parsowania.

Kiedy się nie sprawdza

  • Czat, odpowiedzi użytkownikowi, generowanie tekstu lub kodu. Jev nie generuje tekstu — do tego służą modele tekstowe.
  • Model dla Claude Code, Cursor i innych agentów. Nie da się podstawić jev-latest zamiast modelu agenta: agent potrzebuje modelu, który generuje tekst i wywołuje narzędzia. Jev można wywoływać z kodu, który agent napisze dla Ciebie.
  • Arytmetyka, liczenie, porównywanie dat. Według TypeSafe takie operacje pewniej wykonywać w kodzie, a model pytać tylko o część znaczeniową — na przykład wydobyć części daty przez choice.
  • Obrazy, audio i wideo. Model przyjmuje tylko tekst — wcześniej przekształć takie dane w tekst.

Cena

Opłata jest pobierana tylko za tokeny wejściowe — pole usage.input_tokens odpowiedzi: $0.084 za 1 mln. Tokeny wyjściowe są bezpłatne.

Żądanie z przykładu na tej stronie (296 tokenów wejściowych) kosztuje mniej niż $0.0001.

Przed żądaniem Ailoot rezerwuje kwotę na saldzie, a po odpowiedzi obciąża je raz według faktycznego zużycia — jak to działa.

Limity

CoLimit
Całe żądanie: state i wszystkie pytania64K tokenów
state wraz z najdłuższym pytaniem32K tokenów
Wariantów w jednym choicedo 255
Poziomów w jednym scoreod 2 do 10
Wejścietylko tekst: ciąg znaków, obiekt JSON lub tablica tekstów

Limity modelu — według TypeSafe. Ograniczenia Twojego klucza i salda obowiązują tak samo jak dla dowolnego modelu Ailoot: Błędy i limity.

Błędy

Błędy przychodzą w ogólnym formacie Ailoot API: kod, czytelny opis i Request ID. W tej metodzie najczęściej występują:

KodKiedyCo zrobić
400 invalid_requestTreść żądania nie przeszła walidacji: brak state, model lub questions, nieznany type, więcej niż 255 wariantów w choice albo więcej niż 10 poziomów w scorePopraw żądanie zgodnie z treścią błędu: bez poprawki znów nie przejdzie walidacji
400 context_length_exceededstate i pytania łącznie przekraczają limit modeluOdfiltruj state w kodzie, pozostaw dane potrzebne pytaniom
401 invalid_api_keyBrak klucza lub klucz jest nieprawidłowyPrzekaż klucz w nagłówku Authorization
402 insufficient_balanceBrakuje wolnych środków na saldzie na rezerwacjęDoładuj saldo
404 model_not_found, unsupported_endpointBłędny ID lub model wywołano niewłaściwą metodą, na przykład przez /v1/chat/completionsWywołuj jev-latest tylko przez POST /v1/systemone
429 rate_limit_exceededZbyt wiele żądańPoczekaj tyle sekund, ile podano w nagłówku Retry-After, i ponów żądanie
503 model_overloaded, model_unavailableModel jest chwilowo przeciążony lub niedostępnyJeśli X-Should-Retry: true — ponów po Retry-After sekundach; jeśli false — najpierw sprawdź Request ID w historii
504 model_timeoutModel nie odpowiedział na czasNie wysyłaj żądania ponownie, dopóki nie sprawdzisz Request ID w historii

Pełna lista kodów — na stronie Błędy i limity.

Dodatkowe pytania? Prześlij Request ID i opis — pomożemy wyjaśnić sprawę.Napisz do wsparcia