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
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.

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

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.