Des décisions en moins d'une seconde.
Un modèle de langage pour les décisions à l'intérieur de vos logiciels. Il lit un message, un billet ou une page et renvoie une réponse typée avec une probabilité, sans jamais rédiger une phrase.
- Latence typique
- 0,5–1,3 s
- De bout en bout, transit réseau compris.
- Prix
- 0,04 $
- Par million de jetons d'entrée. La sortie est gratuite.
- Capacités
- Huit
- Une décision typée chacune, plus une route compatible OpenAI.
- Par requête
- 20 000 car.
- Ou jusqu'à 32 textes en un seul lot.
C'est comme l'IA générative. Sans la génération.
Dans un logiciel, une réponse décide souvent d'un embranchement, d'un champ ou d'un score. L'application a besoin de la valeur, pas de la prose autour, alors decision-machine-1 s'arrête à la valeur.
| Avec un LLM | Avec decision-machine-1 | |
|---|---|---|
| Acheminer un message de soutien | Une consigne, une reprise quand le JSON revient malformé, et une seule étiquette qu'il faut croire sur parole. | L'étiquette, sa probabilité et le score de toutes les autres étiquettes proposées, en une seule réponse typée. |
| Extraire un champ d'un document | Un paragraphe à analyser, ou un schéma que le modèle remanie discrètement quand il lui prend d'ajouter un champ. | L'objet décrit par votre schéma JSON, typé, avec les positions de caractères d'où proviennent les valeurs. |
| Savoir quand il hésite | Demandez un indice de confiance et vous obtenez un nombre que le modèle a rédigé, pas un nombre qu'il a mesuré. | Une distribution de probabilités sur les options fournies. Deux étiquettes à 0,5 chacune, c'est un cas pour un humain, et il le dit. |
| Ce que coûte un appel | Vous payez la réflexion et la réponse, et les deux augmentent avec la question. | 0,04 $ par million de jetons d'entrée. Le prix suit le texte envoyé, pas le nombre d'étiquettes, d'énoncés ou de questions posées à son sujet. |
| Ce que prend un appel | Des secondes, et une file d'attente derrière dès qu'il faut la réponse dans le chemin de la requête. | D'une demi-seconde à une seconde et un tiers, réseau compris. Sa place est dans le chemin de la requête. |
Tout ce qu'il est, sur une page.
Un modèle hébergé, une URL de base, un prix. Ce qu'il ne fera pas fait partie de la spécification, ce n'est pas une réserve.
| Modèle | |
|---|---|
| Nom | decision-machine-1 |
| Catégorie | Modèle de décisionFait partie de milliseconds.ai, une famille de modèles de décision rapides et précis par CloudRaker. |
| Tâche | Décisions typées sur du texteClassement, notation, sélection d'extraits et remplissage de schéma. Aucune génération libre. |
| Exécution | Modèles encodeurs sur CPUAucun GPU dans le chemin de la requête, d'où le plancher de latence. |
| Disponibilité | API hébergée |
| Interface | |
| URL de base | https://api.milliseconds.ai |
| Routes natives | POST /v1/decision-machine-1/{capability}Une route par capacité, chacune avec son type de requête et de réponse. |
| Compatible OpenAI | POST /v1/chat/completionsExtraction et appel de fonctions depuis un client OpenAI que vous avez déjà. Pointez l'URL de base vers api.milliseconds.ai et indiquez le modèle. La conversation libre est rejetée avec un 400, volontairement. |
| Authentification | Authorization: Bearer sk-ms-...Requis sur chaque route /v1. |
| Limites | |
| Entrée par texte | 20 000 caractèresLe texte de plus de 2 000 caractères est découpé automatiquement. |
| Lot | 32 textes par requêteEnvoyez `text` ou `texts`, jamais les deux. Les résultats reviennent dans l'ordre d'entrée. |
| En-têtes de réponse | x-input-chars, x-input-tokens, x-inference-msChaque appel indique ce qu'il a lu et la durée de l'inférence. |
| Langue | Texte non anglais, étiquettes en anglaisLe modèle lit le texte de l'étiquette : gardez les étiquettes en anglais. |
| Prix | |
| Entrée | 0,04 $ par million de jetonsLe même prix sur chaque capacité et sur la route compatible OpenAI. |
| Sortie | 0 $Distributions de probabilités, extraits et résultats de lot ne coûtent rien, quelle que soit leur taille. |
| Hors périmètre | |
| Génération | AucuneChaque extrait renvoyé provient de votre entrée, avec ses positions. Il ne résume ni ne réécrit. |
| Raisonnement | Une seule passePas de chaîne de pensée, pas de délibération en plusieurs étapes. |
| Conversation | Sans étatPas de consigne système, aucun contexte entre les appels, pas de diffusion de jetons. |
| Prix | |
| Jetons d'entrée | 0,04 $ par millionÉvaluez chaque message entrant, vérifiez chaque champ extrait, notez chaque billet. Le prix suit le texte envoyé : la facture suit donc votre trafic, pas le nombre de questions posées. |
| Jetons de sortie | 0 $ |
| Chaque capacité, et la route compatible OpenAI | même prix |
| Étiquettes, énoncés et questions posés sur un texte | non facturés |
| Un court message de soutien | bien moins d'un cent |
Une couche de décision en moins d'une seconde pour une paperasse plus intelligente.
Voici le chemin d'une requête dans l'API Paperwork. decision-machine-1 est la première chose qu'elle touche. Il décide où va le travail, et s'il faut réveiller un modèle de raisonnement.
Une personne ou un agent demande quelque chose
Un message, un billet, un fichier téléversé, un appel d'outil venant d'un agent.
decision-machine-1
Une réponse typée avec une probabilité, en environ une seconde. C'est l'étape qui rend déterministe le reste du parcours.
Besoin de raisonnement ?
Le travail lui-même
Ce que la décision a choisi, exécuté sur le document : une surface, un contrat, une piste d'audit.
Une tâche accomplie, pas un paragraphe
Des champs structurés, un document signé, un webhook vers le système d'enregistrement, avec la décision et sa probabilité rattachées à l'exécution.
Un modèle. Huit capacités.
Chacune pose une question différente au même texte et répond dans son propre type. Choisissez celle qui correspond à la décision que votre code doit prendre.
curl -X POST https://api.milliseconds.ai/v1/decision-machine-1/yes-no \
-H "Content-Type: application/json" \
-H "authorization: Bearer sk-ms-..." \
-d '{
"text": "I need this fixed today, my launch is tomorrow.",
"statements": [
"The customer expresses urgency.",
"The customer is asking about shipping."
]
}'{
"results": [
{ "statement": "The customer expresses urgency.", "answer": true, "probability": 1 },
{ "statement": "The customer is asking about shipping.", "answer": false, "probability": 0 }
]
}curl -X POST https://api.milliseconds.ai/v1/decision-machine-1/classify \
-H 'content-type: application/json' \
-H 'authorization: Bearer sk-ms-...' \
-d '{
"text": "I was charged twice for my subscription this month and support has not replied.",
"labels": {
"billing": "payments, invoices, charges, refunds",
"shipping": "delivery, tracking, returns of physical goods",
"account": "login, password, profile settings"
}
}'{
"label": "billing",
"probability": 0.995,
"confidence": 0.97,
"scores": {
"billing": 0.995,
"shipping": 0,
"account": 0.005
}
}curl -X POST https://api.milliseconds.ai/v1/decision-machine-1/classify-tree \
-H 'content-type: application/json' \
-H 'authorization: Bearer sk-ms-...' \
-d '{
"text": "62-year-old man with crushing substernal chest pain radiating to the left arm for 40 minutes, sweating, and ST elevation in leads II, III and aVF.",
"tree": {
"cardiovascular": {
"description": "heart and blood vessels: chest pain, arrhythmia, heart failure, hypertension",
"labels": {
"ischemic": {
"description": "reduced blood flow to the heart: angina, myocardial infarction",
"labels": {
"stemi": "ST-elevation myocardial infarction: ST elevation on the ECG",
"nstemi": "non-ST-elevation myocardial infarction: troponin rise without ST elevation",
"unstable_angina": "chest pain at rest without a troponin rise"
}
},
"arrhythmia": "abnormal heart rhythm: palpitations, atrial fibrillation, bradycardia",
"heart_failure": "fluid overload, breathlessness on exertion, swollen legs, reduced ejection fraction"
}
},
"pulmonary": {
"description": "lungs and airways: cough, breathlessness, wheeze, pneumonia",
"labels": {
"infection": "pneumonia or bronchitis: fever with a productive cough",
"obstructive": "asthma or COPD: wheeze, chronic cough, smoking history",
"embolism": "pulmonary embolism: sudden breathlessness, pleuritic pain, low oxygen"
}
},
"gastrointestinal": "digestive tract: abdominal pain, nausea, vomiting, bleeding",
"neurological": "brain and nerves: headache, seizure, weakness, numbness"
}
}'{
"path": ["cardiovascular", "arrhythmia"],
"label": "arrhythmia",
"probability": 0.739,
"confidence": 0.433,
"levels": [
{
"label": "cardiovascular",
"probability": 0.982,
"confidence": 0.93,
"scores": {
"cardiovascular": 0.982,
"pulmonary": 0.001,
"gastrointestinal": 0.001,
"neurological": 0.016
},
"input_chars": 456,
"input_tokens": 112,
"inference_ms": 585
},
{
"label": "arrhythmia",
"probability": 0.753,
"confidence": 0.466,
"scores": {
"ischemic": 0.241,
"arrhythmia": 0.753,
"heart_failure": 0.006
},
"input_chars": 401,
"input_tokens": 98,
"inference_ms": 578
}
]
}curl -X POST https://api.milliseconds.ai/v1/decision-machine-1/rate \
-H "content-type: application/json" \
-H "authorization: Bearer sk-ms-..." \
-d '{
"text": "Our production database is down and every customer request is failing right now.",
"scale": ["No impact", "Minor inconvenience", "Degraded service", "Major outage"]
}'{"score":2.5,"level":2,"label":"Degraded service","confidence":0.5,"scores":[0,0,0.5,0.5]}curl -X POST https://api.milliseconds.ai/v1/decision-machine-1/answer \
-H "content-type: application/json" \
-H "authorization: Bearer sk-ms-..." \
-d '{
"text": "Order 88214 shipped on 3 March 2026 from the Berlin warehouse. The customer, Maria Fischer, paid 249.00 EUR by credit card. Delivery is expected within five working days.",
"question": "Who is the customer?"
}'{
"question": "Who is the customer?",
"answer": "Maria Fischer",
"probability": 0.999,
"start": 77,
"end": 90
}curl -X POST https://api.milliseconds.ai/v1/decision-machine-1/extract \
-H "content-type: application/json" \
-H "authorization: Bearer sk-ms-..." \
-d '{
"text": "INVOICE #4471\nBilled to: Acme Corp\nCurrency: USD\nPaid: yes\nTotal due: $2,676.00\nPayment terms: Net 30",
"schema": {
"type": "object",
"title": "invoice",
"properties": {
"invoice_number": { "type": "string", "description": "invoice number" },
"customer": { "type": "string", "description": "the company billed" },
"total_due": { "type": "number", "description": "total amount due" },
"net_terms_days": { "type": "integer", "description": "payment terms in days" },
"paid": { "type": "boolean", "description": "is the invoice paid" },
"currency": { "enum": ["USD", "EUR", "GBP"], "description": "currency code" }
}
}
}'{
"data": {
"invoice_number": "4471",
"customer": "Acme Corp",
"total_due": 2676,
"net_terms_days": 30,
"paid": true,
"currency": "USD"
}
}curl -s -X POST https://api.milliseconds.ai/v1/decision-machine-1/entities \
-H 'content-type: application/json' \
-H 'authorization: Bearer sk-ms-...' \
-d '{
"text": "John Ternus announced the iPhone Duo in Cupertino on 9 September.",
"types": ["person", "product", "location"]
}'{
"entities": [
{"type": "person", "text": "John Ternus", "probability": 0.999, "start": 0, "end": 11},
{"type": "product", "text": "iPhone Duo", "probability": 0.973, "start": 26, "end": 36},
{"type": "location", "text": "Cupertino", "probability": 0.999, "start": 40, "end": 49}
]
}curl -X POST https://api.milliseconds.ai/v1/decision-machine-1/verify \
-H "content-type: application/json" \
-H "authorization: Bearer sk-ms-..." \
-d '{
"text": "INVOICE #4471 - Acme Corp. Issued 2026-03-02. Net 30. Subtotal $2,500.00. Tax $176.00. Total due $2,676.00.",
"field": {
"name": "invoice_number",
"description": "The invoice number printed on the document"
},
"value": "4471"
}'{"matches":true,"probability":0.689,"found":["4471"]}Gardez votre LLM. Appelez-le au besoin.
Ce n'est pas un remplacement. C'est une première passe. Exécutez d'abord la décision typée, peu coûteuse, acceptez les résultats qui franchissent votre seuil, et n'escaladez vers un grand modèle ou vers une personne que les cas ambigus.
Le seuil vous appartient, parce que le modèle vous donne les nombres pour le fixer : une probabilité, une confiance et le score de chaque option proposée. Quand deux étiquettes reviennent à 0,5 chacune, ce n'est pas un échec. C'est le modèle qui vous dit que le texte est réellement ambigu, et c'est précisément le cas qui mérite un second regard.
- Acheminez selon les nombres. Acceptez au-dessus de votre seuil, escaladez en dessous.
- Encadrez un appel au LLM, pour que le modèle coûteux ne voie que les cas qui l'exigent.
- Vérifiez ce qu'un plus grand modèle a produit par rapport à la source qui lui a été fournie.
Des questions importantes, des réponses rapides.
Non. Cela signifie que la réponse a la bonne forme et s'accompagne d'un nombre exploitable. Une réponse typée élimine les échecs d'analyse, pas l'erreur du modèle. D'où la probabilité et la distribution complète des scores à chaque appel, pour fixer un seuil et acheminer ce qui tombe en dessous.
Commencez par une vraie tâche.
Prenez un classement ou une extraction que vous envoyez déjà à un LLM. Comparez l'exactitude, la latence et le coût sur des entrées représentatives, puis gardez le gagnant. milliseconds.ai est une catégorie de modèles de décision rapides et précis par CloudRaker, l'infrastructure de la paperasse pour l'ère agentique.