Zum Inhalt springen
Jev

Entwicklerleitfaden

Jev-SDK-Leitfaden

Integration auf dieser Site? Starten Sie mit dem gehosteten API-Leitfaden und Prepaid-Preisen. Diese Seite erklaert Choice / Score / Noul und Hintergrundzugang — nicht der Hauptweg zu einem jv_live_-Schluessel.

Konzeptschicht: Primitive, Preise, Implementierungshinweise. Fuer fertige Calls gegen unseren Endpoint siehe Getting-Started-Beitrag und die gehostete API-Doku.

Zugang

Schnellster Weg hier: anmelden, Pack kaufen, jv_live_ anlegen, POST an /api/v1/decide. Upstream-TypeSafe-Keys bleiben auf unseren Servern. Warteliste und Gateways sind optional.

Zugangsoptionen

  1. Gehostet auf dieser Site (empfohlen): Preise + Konto — Prepaid-Tokens und jv_live_-Keys fuer /api/v1/decide und Tools.
  2. Offiziell / Gateways: TypeSafe-Warteliste auf typesafe.ai, plus OpenRouter, Vercel AI Gateway und Cloudflare AI, falls Sie dort bereits abrechnen.

Wichtige Einschraenkung: Keine herunterladbare Modelldatei. Kein lokales Self-Hosting. Alle Inferenz laeuft in der Cloud.

Preishinweis

Input-Tokens kosten 0,042 USD pro Million Tokens. Output-Tokens sind vollständig gratis. Jev-Entscheidungsoutputs werden laut TypeSafe-Tarif nicht extra berechnet.

Gateways können Aufschläge oder andere Abrechnungseinheiten haben. Prüfen Sie deren Preisseite vor Produktionsschätzungen. Siehe auch Preis-FAQ.

Drei Kern-Primitive von Jev

Jev-Anfragen bestehen aus drei primitiven Fragetypen. Jede Anfrage sendet state (Eingabekontext oder Programmdaten) plus typisierte Fragen. Jev liefert strukturierte typisierte Ergebnisse mit kalibrierten Wahrscheinlichkeiten.

  1. Choice: Wählen Sie eine Antwort aus vordefinierten Optionen. Typisch für Agent-Routing und Klassifikation.
  2. Score: Numerische Position auf einer Skala oder Rubrik. Typisch für Risiko-Scoring und Schweregrad.
  3. Noul: Wahrscheinlichkeit für Ja/Nein-Urteil. Typisch für Moderations-Gates und boolesche Filter.

Kurzdefinitionen auch im Glossar.

Installation

Es gibt kein verpflichtendes offizielles npm-/pip-Paket nur für eine Anfrage. Minimal ist HTTP-POST zum System-One-Endpoint. Node.js 18+ nutzt eingebautes fetch. Für Python installieren Sie requests:

Terminal
pip install requests

Bei Jev über OpenRouter: dokumentierte Decisions-API und eigener Schlüssel. Keine erfundenen Paketnamen wie @typesafe/jev-sdk.

env.sh
# Store keys outside source control
export JEV_API_KEY="YOUR_API_KEY"
# Or, when calling through OpenRouter:
# export OPENROUTER_API_KEY="YOUR_OPENROUTER_KEY"

Minimales vollständiges API-Request-JSON

Endpoint in den Beispielen: POST https://jevtypesafe.org/api/v1/decide. Pfad und Feldnamen vor Produktionsstart mit TypeSafe-Docs abgleichen.

request.json
{
  "state": "Customer message: my order has not arrived",
  "questions": {
    "ticket_routing": {
      "type": "choice",
      "options": ["support", "logistics", "billing"]
    },
    "is_urgent": {
      "type": "noul"
    },
    "severity_level": {
      "type": "score",
      "criteria": ["calm", "frustrated", "angry"]
    }
  }
}

Kopierbare API-Beispiele

Minimale Community-Beispiele mit Raw HTTP, kein offizielles SDK. Ersetzen Sie die Umgebungsvariable durch einen echten Schlüssel von Warteliste oder Gateway.

Node.js

call-jev.mjs
// Minimal raw API call — hosted decide on this site
// Replace with a jv_live_ key from Account
async function callJev() {
  const apiKey = process.env.JEV_API_KEY;

  const payload = {
    state: "Customer message: my order has not arrived",
    questions: {
      ticket_routing: {
        type: "choice",
        instructions: "Route this ticket",
        criteria: { support: "product help", logistics: "shipping", billing: "payment" },
      },
    },
  };

  const res = await fetch("https://jevtypesafe.org/api/v1/decide", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${apiKey}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
  });

  if (!res.ok) {
    throw new Error(`Jev request failed: ${res.status}`);
  }

  return res.json();
}

Python

call_jev.py
# Minimal raw API call — hosted decide on this site
# Requires: pip install requests
# Replace with a jv_live_ key from Account
import os
import requests

def call_jev():
    api_key = os.environ["JEV_API_KEY"]
    payload = {
        "state": "Customer message: my order has not arrived",
        "questions": {
            "ticket_routing": {
                "type": "choice",
                "instructions": "Route this ticket",
                "criteria": {"support": "product help", "logistics": "shipping", "billing": "payment"},
            }
        },
    }
    response = requests.post(
        "https://jevtypesafe.org/api/v1/decide",
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json",
        },
        json=payload,
        timeout=30,
    )
    response.raise_for_status()
    return response.json()

SDK Best Practices

  1. API-Schlüssel in Umgebungsvariablen, nie im Frontend.
  2. Caching für wiederholte Entscheidungen, weniger Aufrufe und Kosten.
  3. Retry-Logik bei transienten Netzwerkfehlern.
  4. Eingabe-Schemas vor dem Senden validieren.
  5. Choice / Score / Noul statt Freitext-Prompts für Automatisierung.

Implementierungshinweise

Cache nach Entscheidungsidentität, nicht Rohtext-Prompt

Hash aus Fragesatz und normalisierten State-Feldern. Gleiche Routing-Entscheidung → vorheriges Ergebnis wiederverwenden. Besonders für Moderation und Tool-Auswahl.

Fail closed bei Schema-Mismatch

Passt die Antwort nicht zum erwarteten Entscheidungsschema, nicht still in Default-Zweig zwingen. Loggen, sichere Fallback-Route, Alert.

Generative LLMs hinter dem Entscheidungs-Gate

Zuerst Jev. Chat-Modell erst nach bekannter Route. Beispiele unter Produktions-Anwendungsfällen.