GPT-6 Sol & Claude Opus 5.5 sind daGPT-6 Sol zum halben Preis von 5.6 Sol
Blog
API-Setup

Jev-API einbinden

Binde typisierte Entscheidungen über die Jev-API ein.

11 Min. LesezeitOmniaKey
Jev APIAPI-DokumentationJSONPythonNode.js

Die Jev-API bewertet Text anhand vorgegebener Fragen. Eine Anfrage enthält state, model und eine questions-Map; die typisierten Ergebnisse stehen unter denselben IDs in answers. Das ist kein Chat-Endpunkt, dessen Freitext du nachträglich in Kategorien zerlegen musst.

Diese Anleitung behandelt die Integration. Einsatzgebiete, Grenzen und den Preishintergrund erklärt die Einführung in das Jev-Modell.

Geprüft am 28. September 2026. Grundlage ist die TypeSafe-Dokumentation; die Gateway-Route wurde mit der OmniaKey-Implementierung abgeglichen. Die Beispiele wurden offline geprüft, nicht in einem neuen kostenpflichtigen Leistungstest. Direkte Anbieterpreise und Limits gelten nicht automatisch für ein Gateway-Konto.

Endpunkt und API-Schlüssel müssen zusammenpassen

ZugangPOST-EndpunktSchlüssel
OmniaKeyhttps://api.omniakey.com/v1/alpha/searchOmniaKey-Key mit Zugriff auf jev-latest
TypeSafe direkthttps://api.typesafe.ai/v1/systemoneTypeSafe-Key

Beide Varianten verwenden Authorization: Bearer ... und das native Jev-Format. Sende niemals den Schlüssel des einen Dienstes an den anderen. Die Gateway-Route ist nicht /v1/chat/completions; messages ist kein Ersatz für state.

Erstelle einen eingeschränkten Schlüssel, prüfe die aktuelle Jev-Route und setze OMNIAKEY_API_KEY lokal als Umgebungsvariable. Schlüssel gehören nicht in Browser-Code, Git oder Screenshots. Allgemeine Schritte stehen im API-Schnellstart (Englisch).

Vollständige JSON-Anfrage

Speichere das Beispiel als jev-request.json. Es ordnet eine Supportnachricht einer Abteilung zu und bewertet Frustration sowie Dringlichkeit. Der Beispieltext bleibt Englisch: Laut TypeSafe funktioniert diese Sprache derzeit am besten. Deutsche Eingaben solltest du mit eigenen repräsentativen Daten prüfen.

json
{
  "model": "jev-latest",
  "state": "My payouts have failed for three days. Please help me resolve this today.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this message?",
      "criteria": {
        "billing": "Payments, invoices, or refunds",
        "technical": "Bugs, outages, or integrations",
        "sales": "Pricing, upgrades, or new accounts"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "How frustrated is the customer?",
      "criteria": ["Calm", "Frustrated", "Very angry"]
    },
    "is_urgent": {
      "type": "noul",
      "instructions": "Does the message express a time-sensitive need?"
    }
  }
}

Die IDs verbinden Fragen und Antworten. Laut TypeSafe fließen die ID-Namen nicht in die Inferenz ein. Beschreibe die Aufgabe daher in instructions, nicht nur im Schlüsselnamen. state kann auch ein JSON-Objekt oder Array mit Textwerten sein, etwa ein strukturierter Supportfall.

bash
curl --fail-with-body https://api.omniakey.com/v1/alpha/search \
  -H "Authorization: Bearer $OMNIAKEY_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @jev-request.json

Für TypeSafe direkt verwendest du https://api.typesafe.ai/v1/systemone und $TYPESAFE_API_KEY. Das native JSON bleibt gleich; prüfe die für das Konto zulässigen Modellnamen.

Choice, Score und Noul auswerten

FragetypDefinitionAntwortfelderBedeutung
choiceOptionen mit Beschreibungen, höchstens 255choice, probabilities, confidenceGewählte Kategorie und Verteilung über die Optionen
scoreGeordnete Skala mit 2–10 Stufenscore, legend, probabilities, confidenceWahrscheinlichkeitsgewichtete Stufe, auch als Dezimalwert
noulJa/Nein-Frage, optional mit true-/false-KriteriennoulWahrscheinlichkeit für Ja zwischen 0 und 1, kein Boolean

Zusätzlich kommen model und usage.input_tokens / usage.output_tokens zurück. jev-latest verweist derzeit auf jev-1.13.0; ein Alias kann sich später ändern. Halte die tatsächlich verwendete Version bei Auswertungen fest.

Bei drei Stufen liegt 1.05 knapp über Stufe 1, nicht bei 1,05 von 100 Punkten. Maßgeblich ist legend. Ein Noul-Wert von 0.8 ist keine automatische Freigabe für eine Rückzahlung. Bestimme Schwellen mit beschrifteten Beispielen. confidence wird aus der Verteilung berechnet und garantiert keine richtige Entscheidung.

Die folgende vollständige Antwort ist ein erklärendes Beispiel, kein gemessenes API-Ergebnis. Antwortwerte und Tokenzahlen veranschaulichen nur die Struktur; tatsächliche Ergebnisse können abweichen.

json
{
  "model": "jev-1.13.0",
  "answers": {
    "department": {
      "type": "choice",
      "choice": "billing",
      "probabilities": {
        "billing": 0.88,
        "technical": 0.12,
        "sales": 0.0
      },
      "confidence": 0.81
    },
    "frustration": {
      "type": "score",
      "score": 1.05,
      "legend": {
        "0": "Calm",
        "1": "Frustrated",
        "2": "Very angry"
      },
      "probabilities": {
        "0": 0.0,
        "1": 0.95,
        "2": 0.05
      },
      "confidence": 0.92
    },
    "is_urgent": {
      "type": "noul",
      "noul": 0.8
    }
  },
  "usage": {
    "input_tokens": 320,
    "output_tokens": 72
  }
}

Python und Node.js

Die Beispiele lesen jev-request.json und senden genau eine Anfrage. Sie geben native Antworten aus und erwarten kein OpenAI-Feld choices. Für den Betrieb ergänzt du die unten beschriebene begrenzte Wiederholungsstrategie.

python
import json
import os
import urllib.error
import urllib.request
from pathlib import Path

request = urllib.request.Request(
    "https://api.omniakey.com/v1/alpha/search",
    data=Path("jev-request.json").read_bytes(),
    headers={
        "Authorization": f"Bearer {os.environ['OMNIAKEY_API_KEY']}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=30) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise SystemExit(f"Jev request failed: HTTP {error.code}") from None

print(result["model"])
print(json.dumps(result["answers"], indent=2))
javascript
import { readFile } from 'node:fs/promises';

const key = process.env.OMNIAKEY_API_KEY;
if (!key) throw new Error('Set OMNIAKEY_API_KEY first');

const response = await fetch('https://api.omniakey.com/v1/alpha/search', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${key}`,
    'Content-Type': 'application/json',
  },
  body: await readFile('jev-request.json', 'utf8'),
  signal: AbortSignal.timeout(30_000),
});
if (!response.ok) throw new Error(`Jev request failed: HTTP ${response.status}`);

const result = await response.json();
console.log(result.model);
console.log(result.answers);

Erforderlich sind Python 3 beziehungsweise Node.js mit eingebautem fetch und AbortSignal.timeout. Das sind HTTP-Beispiele, keine Zusage, dass das OpenAI-SDK das Jev-Schema unterstützt. Eigene TypeSafe-SDKs beschreibt die offizielle Dokumentation.

Kontext, Rate Limits und Kosten

Es gelten gleichzeitig 64K Tokens für die gesamte Anfrage und 32K für state plus die längste einzelne Frage. Entferne irrelevanten Kontext und bündele nur Fragen, die denselben Zustand benötigen.

TypeSafe nennt 250,000 Tokens pro Sekunde und 1,200 Anfragen pro Minute, mit veränderlichen Limits während der frühen Bereitstellung. Das sind Kontolimits, keine Geschwindigkeit pro Anfrage und keine Zusage für OmniaKey. Ein Gateway kann weitere Grenzen setzen.

Der geprüfte Direktpreis beträgt $0.042 je Million Eingabetokens, Ausgabetokens sind kostenlos. Ihre Anzahl wird trotzdem zurückgegeben. Damit ist weder die gesamte API kostenlos noch die Abrechnungseinheit eines Gateways festgelegt. Prüfe dort den aktuellen Preis und die Nutzungsdaten; die Modelleinführung erläutert die Einordnung.

OmniaKey rechnet Jev im aktuellen Modellkatalog pro Anfrage ab. Prüfe für eine Kostenschätzung den aktuellen Modellpreis und die Nutzungsdaten im Dashboard.

Fehler behandeln und kontrolliert wiederholen

Direkter TypeSafe-StatusZuerst prüfenVorgehen
401Richtiger Dienst für den Key, Bearer-HeaderZugang korrigieren, nicht denselben ungültigen Key wiederholen
422Pflichtfelder, Fragetyp und criteriaDas im Fehler genannte Feld korrigieren
429Anfrage- oder TokenlimitRetry-After beachten, falls vorhanden; begrenztes exponentielles Backoff mit Zufallsanteil
529Vorübergehende ÜberlastungWiederholen mit maximaler Versuchszahl und Zeitgrenze

Diese Statusbedeutungen stammen vom Direktanbieter. Gateways können eigene Authentifizierungs-, Validierungs- oder Upstream-Fehler zurückgeben. Prüfe bei nicht verfügbaren Routen auch Pfad und Modell-ID. Teile keine Schlüssel oder privaten Anfrageinhalte in Diagnoseberichten.

Trenne Modellaufruf und Geschäftsaktion: Ein Klassifizierungsversuch darf nicht zweimal dieselbe E-Mail oder Rückzahlung auslösen. Nach wiederholtem Scheitern folgt ein sichtbarer Fehler oder eine Prüfung, keine heimliche Standardentscheidung.

Häufige Fragen

Ist das die offizielle Jev-API-Dokumentation?

Dies ist eine OmniaKey-Integrationsanleitung. Das direkte Schema definiert die TypeSafe-API-Referenz, direkte Preise und Limits die Modellseite. Die Endpunkttabelle unterscheidet beide Dienste.

Kann Jev Bilder verarbeiten oder Text schreiben?

Jev 1.13 verarbeitet Text und liefert typisierte Entscheidungen. Nichttextuelle Inhalte müssen zunächst in Text oder Felder umgewandelt werden. Erklärungen, Bilder und Videos benötigen ein anderes Modell oder einen weiteren Anwendungsschritt.

Alias oder feste Modellversion?

Ein Alias ist beim Ausprobieren bequem. Für einen produktiven Ablauf mit Schwellenwerten prüfst du eine unterstützte feste Version, protokollierst model und validierst vor einem Wechsel erneut. Die Modellverfügbarkeit kann je Route abweichen.

Quellen