Documentation

Référence de l’API

Référence complète de l’API HTTP pour l’endpoint d’évaluation de TypeSafe.

Évalue un state par rapport à une association de questions typées et récupère des answers structurées, une par question. Pour une introduction guidée, commence par les primitives.

Endpoint d’évaluation

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

Corps de la requête

La forme de premier niveau de chaque requête. Chaque entrée de l’association questions est une question typée que tu nommes.

statestring | object | array · required

Le contenu à évaluer. Une chaîne simple pour du texte, ou des données structurées (objet/tableau) pour des choses comme des journaux de conversation, des enregistrements ou l’état actuel de ton application. Voir État pour les formats et les bonnes pratiques.

modelstring · required

Le modèle qui traite la requête. Utilise "jev-latest", le modèle phare de TypeSafe. Voir Modèles pour les modèles et alias disponibles.

questionsmap<string, Question> · required

Une association d’objets Question typés. Tu choisis chaque clé ; les réponses reviennent sous les mêmes clés.

entrées de l’association

‹question id›Question

Une clé que tu choisis. La Réponse correspondante est renvoyée sous ce même id. La clé n’est pas envoyée au modèle sous-jacent et n’est pas utilisée dans l’inférence.

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

Types de question

Une Question est de l’un des trois types, fixé par son champ type. Les trois partagent type et instructions ; chacune ajoute ses propres criteria.

La propriété instructions peut être une chaîne, un objet ou un tableau. Tu peux découper une question longue qui comporte du contexte supplémentaire, ou des données qu’elle doit référencer, en un objet structuré. Place la question dans un champ et les données dans les autres, et désigne les champs de données par leur nom entre accents graves, comme tu pointes une question vers une valeur state imbriquée :

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

Voir Utiliser une structure dans les questions pour en savoir plus.

Noul

Une question oui/non. Renvoie la probabilité que la réponse soit oui.

type"noul" · required

instructionsstring | object | array · required

La question oui/non à évaluer. Un objet peut contenir la question dans un champ et les données auxquelles elle se réfère dans d’autres ; voir Utiliser une structure dans les questions.

criteriaobject

Descriptions facultatives de ce que signifient un oui et un non.

propriétés

truestring | object | array

Ce que signifie un oui (valeur proche de 1).

falsestring | object | array

Ce que signifie un non (valeur proche de 0).

{
  "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

Choisit une option dans un ensemble que tu définis. Renvoie l’option choisie et la distribution de probabilité complète.

type"choice" · required

instructionsstring | object | array · required

Ce que le modèle doit décider. Un objet peut contenir la question dans un champ et les données auxquelles elle se réfère dans d’autres ; voir Instructions et criteria structurés.

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

Une association d’option vers description de la grille ; utilise null quand une option n’a pas besoin de détail supplémentaire. Un Choice peut comporter au maximum 255 options.

entrées de l’association

‹option›string | object | array | null

Une clé que tu choisis. Une description de cette 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

Note l’état selon une grille que tu définis. Renvoie une valeur pondérée par les probabilités sur tes niveaux.

type"score" · required

instructionsstring | object | array · required

Ce que le modèle doit noter. Un objet peut contenir la question dans un champ et les données auxquelles elle se réfère dans d’autres ; voir Utiliser une structure dans les questions.

criteriaarray<string | object | array> · required

Un tableau ordonné de descriptions de niveaux. Un Score doit avoir au moins deux niveaux ; l’API en accepte jusqu’à 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"]
    }
  }
}

Corps de la réponse

Une réponse par question, renvoyée sous les mêmes id que ceux que tu as fournis.

modelstring · required

Le modèle qui a effectué l’évaluation.

answersmap<string, Answer> · required

Une Réponse par question, indexée par les mêmes id que ceux utilisés dans questions.

entrées de l’association

‹question id›Answer

Le même id que celui que tu as choisi dans questions.

usageobject · required

Consommation de jetons pour la requête.

propriétés

input_tokensinteger

output_tokensinteger

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

Types de réponse

Chaque réponse porte un type correspondant à sa question. Les réponses Choice et Score portent aussi une confidence entre 0 et 1, dérivée de la distribution de probabilité de la réponse. Voir Confiance.

Réponse Noul

type"noul" · required

noulnumber · required

La réponse oui/non sur une échelle de 0 (non) à 1 (oui).

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

Réponse Choice

type"choice" · required

choicestring · required

L’option la plus probable.

probabilitiesmap<string, number> · required

Chaque option associée à sa probabilité (des flottants dont la somme vaut 1).

entrées de l’association

‹option›number

Une option que tu as définie dans criteria.

confidencenumber · required

À quel point le modèle est sûr, dérivé des probabilities.

{
  "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 }
}

Réponse Score

type"score" · required

scorenumber · required

La réponse pondérée par les probabilités sur les niveaux ; peut tomber entre deux niveaux.

legendmap<string, string> · required

Chaque numéro de niveau associé à sa description.

probabilitiesmap<string, number> · required

Chaque niveau (clé de type chaîne) associé à sa probabilité (des flottants dont la somme vaut 1).

entrées de l’association

‹level›number

Un indice de niveau, sous forme de clé de type chaîne correspondant à legend.

confidencenumber · required

À quel point le modèle est sûr, dérivé des probabilities.

{
  "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 }
}

Erreurs

Les erreurs utilisent les codes de statut HTTP standard avec un corps JSON décrivant ce qui n’a pas fonctionné.

Statut Signification
401 Unauthorized Clé d’API manquante ou invalide. Vérifie l’en-tête Authorization.
422 Unprocessable Entity Le corps de la requête n’a pas passé la validation — par exemple un champ requis manquant ou une question mal formée. Le corps détaille le champ fautif.
429 Too Many Requests Tu as dépassé ta limite de débit. Ralentis et réessaie après un court délai.
529 Overloaded TypeSafe est temporairement surchargé. Réessaie après un court délai.

Gestion des limites de débit

Quand tu reçois une réponse 429 Too Many Requests ou 529 Overloaded, réessaie la requête avec un backoff exponentiel plutôt qu’immédiatement. Nos SDK clients gèrent cela automatiquement, donc aucun traitement supplémentaire n’est nécessaire si tu utilises l’un de nos SDK avec sa politique de réessai par défaut.