Niezależny przewodnik i społeczność dla programistów
Oficjalne informacje o Jev: typesafe.ai

Wypróbuj Jev za darmo

Zadaj jedno pytanie lub trzy różne pytania dotyczące tej samej sytuacji. Wybierz przykład, zmień dane wejściowe i sprawdź każdą ustrukturyzowaną odpowiedź.

Przeglądaj projekty na GitHubie Przypadki użycia
01 / Wybierz decyzję

Zacznij od konkretnego przykładu

typesafe/jev-1.13

Sprawdzaj po jednym typie odpowiedzi. Każde uruchomienie zużywa jedną próbę z dziennego limitu.

1. Choice
questions.decision
Podgląd żądania API

Podgląd nie zawiera klucza API ani tokenu weryfikacyjnego. Każda nazwa pytania ma odpowiadającą jej odpowiedź.

{
  "model": "typesafe/jev-1.13",
  "state": {
    "input": "Moja subskrypcja została obciążona dwa razy. Czy możecie pomóc?"
  },
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "Który zespół powinien się tym zająć?",
      "criteria": {
        "billing": "Płatności i zwroty",
        "technical": "Błędy i integracje",
        "general": "Pozostałe zgłoszenia"
      }
    }
  }
}

Każde konto ma 6 bezpłatnych prób dziennie według czasu UTC; limit odnawia się o 00:00 UTC. Dzienna pula całej witryny jest ograniczona. Treść trafia do OpenRouter; zapisujemy dane o użyciu, ale nie samą treść.

02 / Przeczytaj odpowiedź

Wszystko gotowe

Uruchom przykład, aby zobaczyć odpowiedź dla każdego pytania: Choice wybiera opcję, Score umieszcza wynik na skali, a Probability zwraca wartość od 0 do 1.

Jak integrować

Dodaj Jev do swojego kodu.

Formularz wysyła twój tekst jako state.input oraz jedno lub trzy nazwane pytania. Każdy wynik znajdziesz pod answers.<question_id>.

Co oznacza każde pole

Żądanie określa format pytań i odpowiedzi. Odpowiedź zwraca wynik dla każdego z nich. Oto pola JSON użyte w przykładzie.

Pola żądania

model
Identyfikator modelu. W tym przykładzie wersja jest ustawiona na stałe na Jev 1.13, dzięki czemu wiadomo dokładnie, która wersja jest używana.
state
Tekst lub dane strukturalne do oceny, np. wiadomość pomocy technicznej.
questions
Zestaw nazwanych decyzji. Te same nazwy pojawiają się w polu answers odpowiedzi.
<question_id>
Nazwa, np. action lub urgency; odpowiedź używa tej samej nazwy.
type
Format odpowiedzi: choice wybiera opcję, score ocenia na uporządkowanej skali, a noul odpowiada na pytanie tak/nie.
instructions
Opis decyzji, o którą prosisz model.
criteria
Dostępne opcje Choice, kolejne poziomy Score albo znaczenie false i true w pytaniu Noul.

Pola odpowiedzi

answers
Jeden wynik na pytanie, zwracany pod tą samą nazwą.
choice
Klucz opcji wybranej przez choice: opcja o najwyższym prawdopodobieństwie.
probabilities
Prawdopodobieństwo dla każdej opcji wyboru; wartości te sumują się do 1.
confidence
Oddzielna wartość ufności obliczona z rozkładu prawdopodobieństwa; nie jest to prawdopodobieństwo wybranej opcji.
score
Pozycja na uporządkowanej skali ważona prawdopodobieństwami; może wypaść między dwoma poziomami.
legend
Przyporządkowanie liczbowych pozycji Score do opisów zdefiniowanych poziomów.
noul
Liczba od 0 (nie) do 1 (tak) w przypadku pytania typu tak/nie.

Ten sam kontekst, trzy niezależne pytania: Choice, Score i Probability. Każde uruchomienie zużywa jedną próbę z dziennego limitu. Odpowiedź o poprawnym formacie nadal może być błędna. Testuj reprezentatywne przypadki i ustaw progi routingu odpowiednie dla swojego procesu.

Endpoint

OpenRouter

Tutaj wywołujemy określoną wersję Jev przez OpenRouter. Aktualne ceny i dostępność sprawdź na stronie modelu.

Endpoint
POST https://openrouter.ai/api/alpha/decisions
model
typesafe/jev-1.13
Klucz API
Wyślij klucz API z serwera jako token Bearer.
OpenRouter ↗
Oficjalne API TypeSafe

TypeSafe

TypeSafe udostępnia własny punkt końcowy i klucze API. Oficjalny przewodnik używa jev-latest i pokazuje, jak wysłać kilka pytań w jednym żądaniu.

Official published price
$0.042per 1M input tokens

Output tokens are free.

Eligible accounts may receive promotional credits. TypeSafe does not publish a fixed amount on its public pages; check the console for your balance and terms.

Endpoint
POST https://api.typesafe.ai/v1/systemone
model
jev-latest
Klucz API
Wyślij klucz API z serwera jako token Bearer.
LangChain · Python

Jev w harnessie agenta LangChain

Harness zarządza wywołaniami modelu i narzędzi. W punkcie decyzyjnym Jev odczytuje wiadomość, planowane wywołanie narzędzia lub stan agenta i zwraca odpowiedź o określonym typie. Dalszy krok wybiera kod; zadania otwarte nadal obsługuje model konwersacyjny.

ModelRouterMiddlewarebefore_agent → wrap_model_call

Przed rozpoczęciem zadania sklasyfikuj ostatnią wiadomość użytkownika i wybierz model używany w całym przebiegu. Wybór, prawdopodobieństwa i poziom pewności pozostają w stanie agenta.

AutoModeMiddlewarewrap_tool_call

Sprawdź wywołanie wybranego narzędzia przed jego wykonaniem. Jeśli Jev wykryje ryzyko lub brak uprawnień, middleware blokuje wywołanie i zwraca ToolMessage z komunikatem o błędzie. Nie prosi człowieka o zatwierdzenie.

TypeSafeClassifierChoice · Score · Noul

Własny middleware może dodać kolejne punkty kontroli: przekaż wiadomości lub stan agenta do TypeSafeClassifier, zapytaj przez Choice, Score lub Noul i zdecyduj w kodzie, czy kontynuować, czy skierować sprawę do oceny.

LangChain · Python · ModelRouterMiddleware
# pip install "langchain-typesafe[experimental]" langchain-openai
# Set TYPESAFE_API_KEY and OPENAI_API_KEY on your server.
from langchain.agents import create_agent
from langchain_typesafe.experimental.middleware import (
    ModelChoice, ModelRouterMiddleware,
)

router = ModelRouterMiddleware(
    choices={
        "fast": ModelChoice(
            model="openai:gpt-5.6-terra",
            criteria="Simple lookups and extraction.",
        ),
        "powerful": ModelChoice(
            model="openai:gpt-6-astra",
            criteria="Complex reasoning and high-stakes decisions.",
        ),
    },
    instructions="Choose the least costly model that can do the task safely.",
)
agent = create_agent("openai:gpt-5.6-terra", middleware=[router])
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize this log."}]})
print(result["model_route"].choice)

TypeScript po stronie serwera

TypeScript · fetch
// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");

const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + apiKey,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "typesafe/jev-1.13",
    state: {input: "A customer reports a duplicate charge."},
    questions: {
      team: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments and refunds",
          technical: "Bugs and integrations"
        }
      },
      urgency: {
        type: "score",
        instructions: "How urgent is the issue?",
        criteria: ["Can wait", "Needs attention today", "Immediate action"]
      },
      escalate: {
        type: "noul",
        instructions: "Should a human review this first?",
        criteria: {false: "No review needed", true: "Review before acting"}
      }
    }
  })
});

if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);
Przeczytaj odpowiedź

Trzy rodzaje pytań i trzy formaty odpowiedzi

Wybierz format odpowiedzi potrzebny w kodzie. Gdy wysyłasz kilka pytań, każde otrzymuje osobny wynik pod własną nazwą.

TypeSafe: Choice · Score · Noul ↗

Choice

choice · probabilities · confidence

Klucz opcji wybranej przez choice: opcja o najwyższym prawdopodobieństwie.

Score

score · legend · probabilities · confidence

Pozycja na uporządkowanej skali ważona prawdopodobieństwami; może wypaść między dwoma poziomami.

Noul

noul

Liczba od 0 (nie) do 1 (tak) w przypadku pytania typu tak/nie.

Przed użyciem go w produkcji

Przed użyciem tego w środowisku produkcyjnym przetestuj reprezentatywne zgłoszenia, zapisz wersję modelu i wyślij niepewne lub istotne przypadki do sprawdzenia przez człowieka. Wartość 0,8 jest tylko przykładem.

Aktualności społeczności

Śledź ekosystem Jev tak, jak chcesz.

Poznawaj nowe projekty, społecznościowe modele System One i praktyczne zastosowania dzięki częstym publicznym aktualizacjom lub okazjonalnym, starannie wybranym wiadomościom.

Częste publiczne aktualizacje

Jev AI Radar

Otwarta kolekcja, którą programiści, skrypty i agenci AI mogą odczytywać, ponownie wykorzystywać oraz śledzić jej zmiany.

Dodaj gwiazdkę na GitHubie
Okazjonalny przegląd redakcyjny

Newsletter

Od czasu do czasu wyślemy wybrane projekty społeczności, popularne repozytoria GitHub, przydatne przykłady kodu i praktyczne zastosowania Jev.

Zapisując się, zgadzasz się na okazjonalne wiadomości e-mail od Jev AI Dev.