Dokumentation

API-Referenz

Vollständige HTTP-API-Referenz für den Evaluierungs-Endpunkt von TypeSafe.

Evaluiere einen state gegen eine Map typisierter questions und erhalte strukturierte answers zurück, eine pro Frage. Für eine geführte Einführung beginne mit den Primitiven.

Evaluierungs-Endpunkt

POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer <API_KEY>
Content-Type: application/json

Anfrage-Body

Die oberste Form jeder Anfrage. Jeder Eintrag in der questions-Map ist eine typisierte Frage, die du benennst.

statestring | object | array · required

Der Inhalt, der ausgewertet werden soll. Eine einfache Zeichenkette für Text oder strukturierte Daten (Objekt/Array) für Dinge wie Chat-Protokolle, Datensätze oder den aktuellen Zustand deiner Anwendung. Siehe Zustand für Formate und bewährte Vorgehensweisen.

modelstring · required

Das Modell, das die Anfrage bearbeitet. Verwende "jev-latest", das Flaggschiffmodell von TypeSafe. Siehe Modelle für die verfügbaren Modelle und Aliasse.

questionsmap<string, Question> · required

Eine Map typisierter Question-Objekte. Du wählst jeden Schlüssel; die Antworten kommen unter denselben Schlüsseln zurück.

Map-Einträge

‹question id›Question

Ein Schlüssel, den du wählst. Die passende Answer wird unter derselben id zurückgegeben. Der Schlüssel wird nicht an das zugrunde liegende Modell gesendet und nicht in der Inferenz verwendet.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?"
    }
  }
}

Fragetypen

Ein Question ist einer von drei Typen, festgelegt durch sein type-Feld. Alle drei teilen type und instructions; jeder fügt sein eigenes criteria hinzu.

Die Eigenschaft instructions kann eine Zeichenkette, ein Objekt oder ein Array sein. Du kannst eine lange Frage mit zusätzlichem Kontext oder Daten, auf die sie sich beziehen muss, in ein strukturiertes Objekt aufteilen. Lege die Frage in ein Feld und die Daten in die anderen und verweise auf die Datenfelder mit ihrem Namen in Backticks, genauso wie du eine Frage auf einen verschachtelten state-Wert richtest:

"instructions": {
  "potential_duplicate": {
    "name": "John Smith",
    "location": "Oakland, California",
    "last_employer": "Google"
  },
  "question": "Is the resume for the same person as `potential_duplicate`?"
}

Siehe Struktur in den Fragen verwenden, um mehr zu erfahren.

Noul

Eine Ja/Nein-Frage. Gibt die Wahrscheinlichkeit zurück, dass die Antwort ja ist.

type"noul" · required

instructionsstring | object | array · required

Die Ja/Nein-Frage, die ausgewertet werden soll. Ein Objekt kann die Frage in einem Feld und Daten, auf die sie sich bezieht, in anderen enthalten; siehe Struktur in den Fragen verwenden.

criteriaobject

Optionale Beschreibungen, was ein Ja und ein Nein bedeuten.

Eigenschaften

truestring | object | array

Was ein Ja (Wert nahe 1) bedeutet.

falsestring | object | array

Was ein Nein (Wert nahe 0) bedeutet.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?",
      "criteria": {
        "true": "Explicitly time-sensitive",
        "false": "No urgency expressed"
      }
    }
  }
}

Choice

Wählt eine Option aus einer Menge, die du definierst. Gibt die gewählte Option und die vollständige Wahrscheinlichkeitsverteilung zurück.

type"choice" · required

instructionsstring | object | array · required

Was das Modell entscheiden soll. Ein Objekt kann die Frage in einem Feld und Daten, auf die sie sich bezieht, in anderen enthalten; siehe Strukturierte Anweisungen und Kriterien.

criteriamap<string, string | object | array | null> · required

Eine Map von Option zu Rubrik-Beschreibung; verwende null, wenn eine Option keinen zusätzlichen Detailbedarf hat. Du kannst maximal 255 Optionen pro Choice haben.

Map-Einträge

‹option›string | object | array | null

Ein Schlüssel, den du wählst. Eine Beschreibung dieser Option.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this?",
      "criteria": {
        "billing": "Payments, invoicing, refunds",
        "technical": "Bugs, outages, integrations",
        "sales": "Pricing, upgrades, new accounts"
      }
    }
  }
}

Score

Bewertet den Zustand entlang einer Rubrik, die du definierst. Gibt einen wahrscheinlichkeitsgewichteten Wert über deine Stufen zurück.

type"score" · required

instructionsstring | object | array · required

Was das Modell bewerten soll. Ein Objekt kann die Frage in einem Feld und Daten, auf die sie sich bezieht, in anderen enthalten; siehe Struktur in den Fragen verwenden.

criteriaarray<string | object | array> · required

Ein geordnetes Array von Stufenbeschreibungen. Ein Score sollte mindestens zwei Stufen haben; die API akzeptiert bis zu 10.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "frustration": {
      "type": "score",
      "instructions": "How frustrated is the customer?",
      "criteria": ["Calm", "Frustrated", "Very angry"]
    }
  }
}

Antwort-Body

Eine Antwort pro Frage, zurückgegeben unter denselben ids, die du angegeben hast.

modelstring · required

Das Modell, das die Evaluierung durchgeführt hat.

answersmap<string, Answer> · required

Eine Answer pro Frage, indiziert nach denselben ids, die du in questions verwendet hast.

Map-Einträge

‹question id›Answer

Dieselbe id, die du in questions gewählt hast.

usageobject · required

Token-Nutzung für die Anfrage.

Eigenschaften

input_tokensinteger

output_tokensinteger

{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

Antworttypen

Jede Antwort trägt ein type, das zu ihrer Frage passt. Choice- und Score-Antworten tragen außerdem eine confidence zwischen 0 und 1, abgeleitet aus der Wahrscheinlichkeitsverteilung der Antwort. Siehe Konfidenz.

Noul-Antwort

type"noul" · required

noulnumber · required

Die Ja/Nein-Antwort auf einer Skala von 0 (nein) bis 1 (ja).

{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 307, "output_tokens": 20 }
}

Choice-Antwort

type"choice" · required

choicestring · required

Die Option mit der höchsten Wahrscheinlichkeit.

probabilitiesmap<string, number> · required

Jede Option auf ihre Wahrscheinlichkeit abgebildet (Fließkommazahlen, die sich zu 1 summieren).

Map-Einträge

‹option›number

Eine Option, die du in criteria definiert hast.

confidencenumber · required

Wie sicher das Modell ist, abgeleitet aus den Wahrscheinlichkeiten.

{
  "model": "jev-1.13.0",
  "answers": {
    "department": {
      "type": "choice",
      "choice": "billing",
      "probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
      "confidence": 0.81
    }
  },
  "usage": { "input_tokens": 318, "output_tokens": 34 }
}

Score-Antwort

type"score" · required

scorenumber · required

Die wahrscheinlichkeitsgewichtete Antwort über die Stufen; kann zwischen Stufen landen.

legendmap<string, string> · required

Jede Stufennummer zurück auf ihre Beschreibung abgebildet.

probabilitiesmap<string, number> · required

Jede Stufe (String-Schlüssel) auf ihre Wahrscheinlichkeit abgebildet (Fließkommazahlen, die sich zu 1 summieren).

Map-Einträge

‹level›number

Ein Stufenindex als String-Schlüssel, der zu legend passt.

confidencenumber · required

Wie sicher das Modell ist, abgeleitet aus den Wahrscheinlichkeiten.

{
  "model": "jev-1.13.0",
  "answers": {
    "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
    }
  },
  "usage": { "input_tokens": 304, "output_tokens": 18 }
}

Fehler

Fehler verwenden Standard-HTTP-Statuscodes mit einem JSON-Body, der beschreibt, was schiefgelaufen ist.

Status Bedeutung
401 Unauthorized Fehlender oder ungültiger API-Schlüssel. Prüfe den Authorization-Header.
422 Unprocessable Entity Der Anfrage-Body hat die Validierung nicht bestanden — zum Beispiel ein fehlendes Pflichtfeld oder eine fehlerhafte Frage. Der Body benennt das betroffene Feld.
429 Too Many Requests Du hast dein Ratenlimit überschritten. Warte ab und versuche es nach einer kurzen Verzögerung erneut.
529 Overloaded TypeSafe ist vorübergehend überlastet. Versuche es nach einer kurzen Verzögerung erneut.

Umgang mit Ratenlimits

Wenn du eine 429 Too Many Requests- oder 529 Overloaded-Antwort erhältst, versuche die Anfrage mit exponentiellem Backoff erneut, statt sofort erneut zu versuchen. Unsere Client-SDKs erledigen das automatisch, sodass kein zusätzlicher Aufwand nötig ist, wenn du eines unserer SDKs mit seiner Standard-Retry-Richtlinie verwendest.