Une carte de titre générée intitulée « Deux modèles de décision, une seule question », avec le surtitre « OPENAI DECISIONS API vs JEV 1.13 » et le sous-titre « Ce qu'un client a construit le 2026-10-06 montre ce que les annonces n'ont pas montré ». Trois cartes à droite indiquent « Prix : 0,10 $ / 0,042 $ par million d'entrées », « Entrée : texte + images / texte uniquement » et « Réponses : prédicat, choix, score ». Une ligne de pied de page indique « Chiffres des endpoints d'après les docs OpenAI et TypeSafe consultés le 2026-10-07 ; GPT-6 Luna sorti le 2026-09-22 ». Le logo OrcaRouter est incrusté dans le coin inférieur droit.
Guides & Insights

Où se termine l’API Decisions d’OpenAI et où commence Jev : ce que montre le premier client externe

Auteur

Alistair Wren

Date de publication

Derniers modèles · 20Voir tous les modèles →
Benchmarks : Artificial Analysis · mis à jour quotidiennement
Retour à tous les articles

Le 6 octobre 2026 à 23:05 UTC, un plugin appelé llm-openai-decisions est arrivé sur PyPI, et son propre README contient la phrase que la couverture du lancement n'a jamais publiée : « Contrairement à Jev, le nouveau gpt-6-luna, modèle de décision, prend en charge les entrées d'images en plus du texte. » L'auteur est Simon Willison, qui a également écrit le premier client pour le modèle de décision de TypeSafe, et la comparaison qu'il établit est entre GPT-6 Luna — le modèle derrière l'API Decisions d'OpenAI — et Jev 1.13, le modèle System One de TypeSafe, uniquement textuel. Le même article de blog indique que le plugin lui-même a été écrit par GPT-6 Astra en lisant la documentation d'OpenAI.

C'est là l'utilité d'un client qui sort une semaine après une API : il est écrit en fonction de la forme des requêtes, pas du discours d'ouverture, et il fait donc apparaître les différences que la communication marketing lisse. Rien ici n'est une fuite et rien ici n'est non confirmé — chaque chiffre ci-dessous provient d'une page publiée par OpenAI, TypeSafe ou le dépôt du plugin lui-même, tous consultés le 2026-10-07. Ce qui manque encore, c'est une mesure indépendante du point de terminaison lui-même, et cette lacune est signalée à la fin plutôt que masquée.

Les trois surfaces, gardées à l’écart

La première chose à bien comprendre est qu'il s'agit de trois couches différentes, et la couverture médiatique les brouille.

• Les points de terminaison.Celui d'OpenAI est POST /v1/decisions, une route dédiée plutôt qu'un mode sur l'API Responses. Celui de TypeSafe est POST /v1/systemone. Les deux prennent un ensemble de preuves ainsi qu'une liste de questions typées et renvoient une réponse par question, avec pour clé le nom que vous lui avez donné.

• Les modèles. L'API Decisions n'accepte aujourd'hui qu'un seul modèle, gpt-6-luna, qui est aussi le palier le moins cher de la gamme GPT-6 générale d'OpenAI et a été livré le 2026-09-22 en tant que modèle de texte et d'image ordinaire. Jev 1.13 est un modèle de décision de bout en bout — il ne peut pas produire de texte libre du tout. TypeSafe l'a livré le 2026-09-15 et il est en disponibilité générale depuis le 2026-09-21.

• Les clients.Les SDK propres d’OpenAI prennent en charge le point de terminaison depuis son ouverture en bêta publique le 2026-10-06, donc le plugin n’est pas le premier moyen de l’appeler. Il s’agit du premier client en dehors des SDK propres d’OpenAI que nous avons pu vérifier, et du premier écrit pour un outil en ligne de commande plutôt que pour une bibliothèque d’application.

Les deux mètres, côte à côte

C’est ici que le README du client vaut plus que l’annonce, car les chiffres se trouvent juste à côté du libellé.

• Prix — l'API Decisions facture 0,10 $ par million de jetons d'entrée, sans frais de sortie, sans frais de lecture du cache ni frais d'écriture du cache. Jev 1.13 facture 0,042 $ par million de jetons d'entrée, la sortie étant gratuite. Les deux facturent ce que vous envoyez et rien pour ce qui revient, donc une décision coûte une fraction de cent à l'un ou l'autre prix et la différence entre eux est d'un facteur 2,4, et non un modèle de facturation différent.

• Entrée — l'API Decisions prend du texte, ou des messages d'utilisateur mêlant texte et images, et le README du plugin indique que les pièces jointes PNG, JPEG, WebP et GIF sont prises en charge avec au maximum 128 images par requête. Les images doivent être fournies sous forme d'URL de données base64 intégrées ; les URL d'images HTTP ou HTTPS hébergées et les file_id en entrée ne sont pas acceptés par le point de terminaison, donc le plugin convertit une URL ou un chemin local avant de l'envoyer. La documentation de Jev 1.13 est sans détour dans l'autre sens : « Aucune entrée image, audio ou vidéo », et les entrées non textuelles doivent être prétraitées en texte ou en champs structurés avant d'atteindre l'état.

• Types de questions — OpenAI en documente trois : prédicat (une probabilité de 0 à 1 qu’une condition énoncée soit remplie), choix (une valeur de votre liste, plus une distribution et un champ de confiance distinct), et score (une moyenne pondérée par les probabilités sur des niveaux ordonnés). Les trois de TypeSafe sont les mêmes trois idées sous des noms différents : noul pour oui/non, choix, et score. « Noul » est l’abréviation de Bernoulli, et le nom est un bon marqueur de la différence culturelle — un fournisseur livre un nom en anglais courant, l’autre une blague de statisticien.

• Arithmétique du score — les deux concordent exactement, ce qui est le signe le plus fort qu'il s'agit d'une seule catégorie de produits plutôt que de deux. La documentation d'OpenAI attribue à trois niveaux de gravité des probabilités de 0,1, 0,7 et 0,2 et renvoie un score de 1,1 — délibérément entre deux niveaux plutôt que de s'aligner sur le plus proche. Les niveaux de TypeSafe sont indexés à partir de zéro de la même manière, et le plugin pour Jev accepte entre deux et dix niveaux ordonnés. La page d'OpenAI n'indique aucun plafond ; c'est une absence dans leur documentation, non une limite que nous pouvons affirmer.

• Budgets — Jev documente précisément sa fenêtre : environ 64 000 tokens par requête, dont environ 32 000 couvrent l’état ainsi que la plus longue question unique, contre le contexte de 1 050 000 tokens que notre propre catalogue indique pour GPT-6 Luna en tant que modèle général. La page de décisions d’OpenAI ne publie aucun budget de tokens, seulement la note selon laquelle les majorations régionales de traitement et les multiplicateurs d’entrée pour contexte long s’appliquent toujours au tarif.

Ce que le client révèle, et que l’annonce n’a pas révélé.

Trois détails dans le plugin et son README méritent d’être relevés, car chacun change la manière dont vous raccorderiez le point de terminaison.

Le premier point, c’est qu’une décision peut revenir sous la forme d’un refus. La documentation d’OpenAI ne l’explique jamais en prose, mais chaque exemple du SDK effectue un branchement dessus — answer.type === "refusal" en JavaScript, un cas OpenAI::Models::Decision::Answer::Refusal en Ruby — et le README du plugin précise qu’une question refusée est conservée sous la forme {"name":"...","type":"refusal"}. Le type de réponse correspond donc en pratique à quatre valeurs, et non trois, et toute boucle de production doit gérer une quatrième branche qu’aucune annonce n’a mentionnée.

Le second est ce qui manque au plugin plutôt que ce qui s’y trouve. Le billet de Willison lui-même présente le travail comme consistant à faire lire la nouvelle documentation par GPT-6 Astra et à faire construire le client à partir de celle-ci — de la documentation au client, en une seule passe, sans tutoriel humain. C’est désormais une façon normale d’écrire un client, et cela signifie que la question de savoir si la documentation d’un endpoint est suffisamment complète pour générer un client fonctionnel à partir d’elle est devenue pratique plutôt qu’éditoriale. Pour cet endpoint, la réponse est en grande partie oui, avec le type de refus comme couture visible.

Le troisième est la forme du tableau de questions. OpenAI vous permet de regrouper des questions indépendantes dans une seule requête sur une entrée partagée — vérifier les dommages sur la photo d'un produit et classer sa catégorie dans le même appel — mais exige des requêtes distinctes lorsqu'une question ultérieure dépend d'une réponse antérieure. Jev adopte la même position pour la même raison : ses questions sont évaluées en parallèle sur un même état, de sorte que tout ce qui est séquentiel doit devenir deux appels. Les deux fournisseurs ont conçu leurs systèmes pour le fan-out, et tous deux vous disent la même chose sur l'endroit où va le budget de latence.

La catégorie compte désormais trois occupants, et deux d’entre eux ne sont pas des modèles généraux.

Il vaut la peine de nommer le troisième, car le cadre du point de terminaison de décision n'a de sens qu'avec les trois en vue. Perplexity propose sa propre API Decisions, servie par pplx-decider-v1-27b — un modèle de décision de 27 milliards de paramètres publié sous Apache 2.0 avec les poids sur Hugging Face le 2026-10-01. Cela donne à la catégorie une forme véritablement différente de celle d'OpenAI : Jev 1.13 est fermé et uniquement textuel, le décideur de Perplexity est à poids ouverts et accepte les images, et l'entrée de GPT-6 Luna est un harnais autour d'un modèle général plutôt qu'un modèle conçu pour décider.

Pour un lecteur qui choisit aujourd’hui, la distinction pratique est plus étroite que le marketing. Si votre preuve est une phrase ou un enregistrement et que vous voulez le coût par appel le plus bas avec le moins de variation de comportement, Jev 1.13 est le spécialiste et son tarif de 0,042 $ est le plus bas des trois prix publiés que nous avons pu vérifier. Si votre preuve comprend une photographie, ou si vous voulez une décision d’un modèle que vous connaissez déjà par des tâches ordinaires, l’API Decisions est la seule des deux options fermées qui accepte les images. L’option à poids ouverts répond à une autre question — le contrôle et l’auto-hébergement — et nous ne l’avons pas testée.

Ce que nous pouvons réellement mesurer, et ce que personne n'a

L'affirmation d'OpenAI concernant le point de terminaison est qu'il « évalue du texte, des images, ou les deux, et renvoie des réponses typées environ 10 fois plus rapidement que l'API Responses ». Cela est déclaré par le fournisseur et non reproduit : aucune région, aucune taille d'entrée, aucun niveau de concurrence, aucun accord de niveau de service, et la référence est l'API Responses en général plutôt qu'une charge de travail spécifique. Un chiffre unique d'accélération est le mauvais nombre sur lequel fonder une échéance.

Ce que nous pouvons mettre à côté, c'est notre propre fenêtre de service de sept jours se terminant le 2026-10-07 sur les deux modèles en dessous, issue du trafic de notre playground — et il est important de préciser ce que ces chiffres ne sont pas. Ils décrivent des requêtes de génération ordinaires, pas des décisions.

• GPT-6 Luna, toutes les formes de requêtes : une médiane de 1 448 ms et un p95 de 4 912 ms, un taux d'erreur de 1,31 % sur 643 394 111 tokens en sept jours, ce à quoi ressemble un débit d'environ 125 tokens de sortie par seconde lorsque le modèle écrit.

• Jev 1.13 : une médiane de 149 ms et un p95 de 245 ms, un taux d'erreur de 0,10 % sur 110 193 080 tokens. C'est un point de terminaison vraiment rapide, et il est rapide parce qu'il ne génère pas de réponse — il renvoie des chiffres pour un état qui est ingéré une seule fois.

Lues l'une par rapport à l'autre, ces deux lignes sont un avertissement, pas une comparaison. Une requête de décision émet une poignée de tokens, de sorte que, sur l'API Decisions, le chiffre de débit de sortie qui domine le profil général de Luna cesse d'être la contrainte limitante, et le nombre qui commence à compter est le temps que met le modèle à lire les éléments de preuve. Nous n'avons pas mesuré cela sur le point de terminaison decisions, et pour autant que nous puissions en juger, personne en dehors d'OpenAI ne l'a publié.

La question plus profonde et non mesurée est la calibration, et c’est elle qui détermine si tout cela est utilisable. Une probabilité de 0,92 pour des dommages visibles ne vaut la peine d’être utilisée pour router que si, dans votre trafic, les photos ayant obtenu un score proche de 0,92 présentent des dommages environ 92 % du temps. La documentation d’OpenAI vous indique de définir des seuils à partir d’exemples étiquetés et de les choisir en fonction du coût des faux positifs par rapport aux faux négatifs. C’est un conseil correct, et c’est aussi l’aveu que la calibration de ces chiffres est quelque chose que vous devez établir vous-même. Pour une première passe, mesurez la distribution des probabilités renvoyées sur un échantillon dont vous connaissez déjà les réponses. Si tout revient à 0,99 ou à 0,01, le seuil ne fait aucun travail et le point de terminaison est un booléen très coûteux.

Comment essayer l'un ou l'autre sans miser là-dessus un chemin de production

Sources, en clair : le contrat de point de terminaison, le prix et les règles relatives aux images dans ce texte proviennent de la documentation Decisions API d'OpenAI elle-même et du README du plugin, tous deux consultés le 2026-10-07 ; la spécification Jev 1.13 provient de la documentation du modèle de TypeSafe elle-même ; les chiffres de service proviennent de nos propres données de playground sur la fenêtre de sept jours se terminant le 2026-10-07 ; les horodatages des paquets proviennent de PyPI et de l'historique Git du projet. L'affirmation d'une vitesse 10x est celle d'OpenAI et est étiquetée comme telle. La licence et la date de publication du decider à poids ouverts proviennent de son dépôt de modèle.

L'API Decisions elle-même est un packaging propre à OpenAI et nous ne la routons pas ; si vous voulez ce point de terminaison précis, c'est chez OpenAI qu'il se trouve. Les modèles qui se trouvent en dessous sont une autre histoire. GPT-6 Luna est une route active sur OrcaRouter, au prix catalogue d'OpenAI, sans aucune marge répercutée, et typesafe/jev-1.13 au prix catalogue se trouve sur la même clé, ce qui fait de la comparaison de cet article quelque chose que vous pouvez exécuter plutôt que lire : le même état, les mêmes questions, deux points de terminaison, un seul contrat à gérer et aucune seconde facture.

C'est aussi la façon raisonnable d'adopter une surface non éprouvée. Placez la décision derrière un repli afin qu'un refus, un délai d'attente ou une limite bêta qui change sous vos pieds se dégrade en un appel basé sur des prompts plutôt qu'en une panne, et gardez ce repli sur la même clé que le primaire afin qu'il n'y ait rien à recâbler lorsque le point de terminaison se rapproche de la disponibilité générale. OpenAI indique que la GA est attendue dans les prochaines semaines et que gpt-6-luna est le seul modèle disponible en attendant ; ces deux éléments sont des raisons de construire en fonction de la forme et de l'instrumenter dès maintenant, et aucun des deux n'est une raison d'y mettre une autorisation de paiement pour l'instant.

A generated two-column scoreboard titled 'GPT-6 Luna vs Jev 1.13 - the scoreboard' comparing the decision endpoints of GPT-6 Luna and Jev 1.13. The left column, headed 'GPT-6 Luna (Decisions API)', reads 'Price: $0.10 per M input', 'Output charge: none', 'Input: text + images', 'Answer types: predicate, choice, score', 'Model ids: gpt-6-luna only' and 'Status: public beta, GA promised'. The right column, headed 'Jev 1.13 (TypeSafe)', reads 'Price: $0.042 per M input', 'Output charge: none', 'Input: text only', 'Answer types: noul, choice, score', 'Model ids: jev-1.13 only' and 'Status: GA since 2026-09-21'. A footer line reads 'Per OpenAI and TypeSafe documentation read 2026-10-07; no independent endpoint measurement exists.' The OrcaRouter logo is composited in the bottom-right corner.

Que regarder ensuite

Trois choses permettraient de trancher les questions que cet article ne peut pas trancher. Un budget de tokens publié pour le point de terminaison des tokens, afin qu'une requête puisse être dimensionnée plutôt que devinée. Toute annonce de disponibilité générale (GA), qui est le moment où le tarif en entrée seule cesse d'être une promesse de bêta. Et une mesure indépendante de la latence et de la calibration sur le point de terminaison lui-même — la première personne à y faire passer quelques milliers de paires étiquetées et à publier la courbe de fiabilité fera plus pour la catégorie que l'un ou l'autre des articles de lancement.

Jusque-là, le résumé honnête est étroit et utile : si ce que vous devez décider est du texte, Jev 1.13 est moins cher et il renvoie des nombres en environ 150 millisecondes dans notre trafic. Si ce que vous devez décider inclut une image, l'API Decisions d'OpenAI est celle qui l'examinera, à 2,4 fois le prix d'entrée, avec une étiquette bêta sur la boîte. Les deux sont appelables depuis une ligne de commande depuis cette semaine, et c'est une meilleure position que celle qu'occupait l'une ou l'autre il y a sept jours.

A headless-browser capture of the GitHub repository page for simonw/llm-openai-decisions at github.com/simonw/llm-openai-decisions, showing the repository name with the description 'LLM plugin for the OpenAI Decisions API', a sidebar reading 1 branch, 1 tag, 7 stars and 0 forks with an Apache-2.0 licence label, a file list in which five entries carry the commit message 'Plugin, built by GPT-6 Astra Medium', and below it the rendered README opening 'Use the OpenAI Decisions API with LLM to evaluate text and images with predicates,' under an Installation heading with the commands 'llm install llm-openai-decisions' and 'llm keys set openai'.A headless-browser capture of the OrcaRouter model page for OpenAI: GPT-6 Luna, showing the breadcrumb 'Home » Models » OpenAI', the slug openai/gpt-6-luna, the badges 'ctx 1M tokens' and 'Max output 128K', the release date 2026-09-22 with a p50 TTFT figure beside the 'Public benchmarks by OpenAI' heading, the vendor blurb describing GPT-6 Luna as the fast, cost-efficient model in OpenAI's GPT-6 series positioned below GPT-6 Sol, a Python code sample using base_url https://api.orcarouter.ai/v1 with the ORCAROUTER_API_KEY environment variable, and a seven-day tile strip reading $0.10, $0.50, 1.45 s, 4.91 s and 643.7M tokens.