Cas d'usage
Decisions API pour la prochaine action de l'agent
Une boucle d'agent est une série de décisions finies : appeler un outil, demander à l'utilisateur, terminer. Un appel de décision choisit la prochaine action et renvoie une probabilité par option — pas de texte libre à parser, pas de schéma d'outil à valider.
Mis à jour
La boucle d'agent comme question choice
Chaque itération donne au modèle l'état courant et pose une question finie : que doit-il se passer ensuite. La réponse est l'une de vos actions nommées plus une confiance — exactement le contrat dont l'exécuteur de boucle a besoin.
Comme les options sont déclarées, le modèle ne peut jamais renvoyer une action que votre boucle n'implémente pas. Une sortie invalide est impossible par construction, pas par discipline de prompt.
Décision de prochaine action
// Agent loop: decisions-1 picks the next action each step.
type Action = "search_docs" | "call_tool" | "ask_user" | "finish";
async function decideNext(state: unknown): Promise<{ action: Action; confidence: number }> {
const res = await fetch("https://decisions-api.net/api/v1/decisions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.DECISIONS_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "decisions-1",
state, // string, JSON object, or array of text
questions: {
next: {
type: "choice",
instructions: "What should the agent do next?",
criteria: {
search_docs: "Look up documentation before acting.",
call_tool: "Run the next planned tool call.",
ask_user: "Stop and ask the user for clarification.",
finish: "The task is complete; produce the final answer.",
},
},
done: { type: "noul", instructions: "Is the user's task fully complete?" },
},
}),
});
const { answers } = await res.json();
return { action: answers.next.choice, confidence: answers.next.confidence };
}
const MAX_STEPS = 8;
async function runAgent(agentState: unknown) {
for (let step = 0; step < MAX_STEPS; step++) {
const { action, confidence } = await decideNext(agentState);
// Illustrative response: { action: "call_tool", confidence: 0.83 }
if (confidence < 0.8) { await askUser(agentState); continue; }
switch (action) {
case "finish": return;
case "search_docs": await searchDocs(agentState); break;
case "call_tool": await runTool(agentState); break;
case "ask_user": await askUser(agentState); break;
}
}
// MAX_STEPS reached: hand off to a human instead of looping forever.
}Donnez à l'agent une sortie honnête
Incluez toujours une action d'échappatoire — ask_user ou finish — dans les criteria. Un agent qui ne peut pas s'arrêter inventera du travail ; une sortie honnête fait de 'c'est fini' ou 'je suis bloqué' des réponses de première classe.
Vous pouvez aussi poser une question noul indépendante dans le même appel — 'la tâche est-elle totalement terminée' — comme vérification croisée du choice.
Limitez l'autonomie par la confiance
La confiance transforme la réponse en politique : laissez les étapes à haute confiance — disons 0,8 et plus — s'exécuter seules, et routez les étapes douteuses vers ask_user ou une revue humaine. La probabilité de la deuxième option dit à quel point l'étape était disputée.
Journalisez la distribution, pas seulement le gagnant : une étape passée à 0,51 contre 0,49 mérite un second regard même si elle franchit votre seuil.
Le coût d'une étape
Un appel réussi coûte 1 crédit, qu'il porte 1 ou 6 questions — donc un choice de prochaine action plus un check de fin coûte toujours un crédit par étape de boucle.
FAQ
Quelle différence avec le tool calling ?
Le tool calling choisit une fonction et génère ses arguments — la forme est ouverte. Un appel de décision choisit l'une de vos actions nommées avec une probabilité par option et sans arguments libres : la sortie est contrainte par construction.
Que mettre dans le state ?
Tout ce dont le modèle a besoin pour décider : un résumé compact de la progression, le dernier résultat d'outil, les étapes restantes et les contraintes. state accepte une chaîne, un objet JSON ou un tableau de texte.
Un appel peut-il vérifier plus que la prochaine action ?
Oui — un appel porte jusqu'à 6 questions. Combinez le choice de prochaine action avec un noul 'la tâche est-elle terminée' ou un score du risque de l'étape en attente.
Et si la confiance est toujours basse ?
Cela signifie généralement que la liste d'actions est trop fine ou que le state manque de signal. Fusionnez les actions quasi identiques, enrichissez le state et gardez ask_user comme le repli que le modèle peut honnêtement choisir.
Pilotez une étape d'agent
Une décision d'essai gratuite pour les nouveaux visiteurs — collez l'état de votre boucle dans le bac à sable et voyez la distribution de la prochaine action.