state (tekst lub rekord
do oceny) i mapę typowanych pytań, a odpowiedzią jest skalibrowane
prawdopodobieństwo dla każdego pytania. Kev
to rodzina małych modeli open-weight implementujących to samo API, więc jeden
typ providera jev obejmuje oba.
Istnieją trzy typy pytań:
GoModel serwuje modele
jev na dwa sposoby:
- Decisions API OpenAI pod
POST /v1/decisions, które zadaje te same trzy rodzaje pytań (predicatedlanoul). GoModel tłumaczy request na System One, a odpowiedź z powrotem, więc SDK OpenAI i klienci napisani podgpt-6-lunadziałają z Jev i Kev bez zmian. - Samo System One pod
POST /v1/systemone, przekazywane natywnie bez tłumaczenia, na potrzeby SDK TypeSafe; jest też dostępne przy samym providerzeopenrouter. Passthrough pod/p/jev/...sięga do każdej innej ścieżki upstreamu.
/responses i /v1/embeddings zwracają invalid_request_error dla
modeli jev, wskazując oba endpointy decyzyjne.
Konfiguracja
Dla hostowanego API cała konfiguracja to klucz:Domyślny bazowy URL to
https://api.typesafe.ai, origin używany przez SDK TypeSafe;
końcowe /v1 jest akceptowane i obcinane, więc oba zapisy wskazują ten sam
serwer. Aby uruchomić hostowane API i lokalny Kev równolegle, zarejestruj
drugi pod nazwą z sufiksem: JEV_KEV_BASE_URL=... tworzy providera
jev-kev, dostępnego pod /p/jev-kev/.... W config.yaml działa dowolna nazwa,
na przykład kev: {type: jev, base_url: ...}, i to tę nazwę pokazują logi,
użycie i prefiksy modeli.Weryfikacja
kev-latest; odpowiada on też na
jev-latest. Ten sam request działa pod /p/jev/v1/systemone, ale ta
ścieżka passthrough pomija modele wirtualne i guardrails; zobacz
natywny endpoint.
To samo pytanie przez Decisions API, z SDK OpenAI lub curl:
Korzystanie z SDK TypeSafe
SDK wysyłająPOST {base_url}/v1/systemone, więc skieruj je na sam gateway
i uwierzytelniaj się kluczem GoModel:
TYPESAFE_BASE_URL=http://localhost:8080 i
TYPESAFE_API_KEY=change-me w środowisku. Przy kilku providerach System One
podawaj model razem z providerem (kev/kev-latest) lub użyj
modelu wirtualnego.
Listowanie modeli w SDK oczekuje kształtu TypeSafe, a /v1/models gatewaya
ma kształt OpenAI; modele upstreamu wylistujesz pod /p/jev/v1/models.
System One API
POST /v1/systemone to endpoint gatewaya, a nie surowe proxy: stosuje
modele wirtualne, guardrails na state, cache odpowiedzi, failover, audyt
i śledzenie użycia, a request przekazuje natywnie, bez tłumaczenia. Ścieżki Kev
/v1/systemone/permute i /v1/systemone/separate działają tak samo. Pełne
zachowanie, w tym OpenRouter, który również natywnie serwuje Jev, opisuje strona
System One API.
Każda inna ścieżka upstreamu jest dostępna przez
passthrough, bez modeli wirtualnych, guardrails
i cache’u:
Błędy upstreamu zachowują swój kod statusu, a body providera trafia do
komunikatu błędu gatewaya: niepoprawne pytanie wraca jako
422 od TypeSafe,
wskazujące błędne pole, a 429 lub 529 oznaczają, że należy się wycofać i ponowić próbę.
Modele, kontrola dostępu i koszty
GET /v1/models wypisuje to, co raportuje upstream, jako jev/jev-latest itd.
TypeSafe wypisuje swoje aliasy (jev-latest, jev-preview); serwer Kev
wypisuje swój checkpoint (kev-latest) i aliasy, na które odpowiada. Wersjonowane
identyfikatory, takie jak jev-1.13.0, są akceptowane przez pole model niezależnie od tego,
czy są wypisane. Modele są kategoryzowane jako modele narzędziowe bez trybu
generowania: odpowiadają na /v1/decisions i /v1/systemone, a nie na czat. Provider,
którego bazowy URL to hostowane API TypeSafe, raportuje możliwość vision dla
swoich modeli; każdy inny bazowy URL jest traktowany jako serwer Kev, którego modele
raportują vision: false, a GoModel odrzuca kierowane do nich requesty z obrazami.
Każdy request System One wskazuje swój model, więc zarówno /v1/systemone, jak
i powierzchnia passthrough stosują do niego allowlistę modeli wywołującego,
tak jak do każdego innego requestu.
Przypięta wersja, taka jak jev-1.13.0, działa bez deklarowania; jak routowane są
niewypisane nazwy, opisuje sekcja Modele.
usage.input_tokens i usage.output_tokens z odpowiedzi są zapisywane, więc
wywołania System One pojawiają się w Usage API i w dashboardzie pod modelem, który
odpowiedział (jev-1.13.0 lub checkpoint Kev). Jev jest wyceniany za token wejściowy
i nie ma go w katalogu modeli upstreamu; zadeklaruj jego cennik w providerze,
aby te wiersze miały wyliczony koszt, albo ustaw go w
edytorze nadpisań cennika: