Interroger un modèle de décision
Ce guide montre comment faire un agent mm d'un modèle de décision — un modèle qui lit une situation et répond à des questions typées avec une probabilité par option, sans écrire de texte — et comment lire ses réponses depuis la ligne de commande, un script, le terminal et un autre agent. Il suppose que vous savez écrire un fichier d'agent. Les exemples utilisent LiquidAI d1-3B sur llama-server ; les fichiers complets de demos/decision-skills/ utilisent la variante llmman ci-dessous.
Étapes
1. Servir un modèle de décision
Démarrez un serveur qui a la route /v1/systemone, avec un modèle qu'il accepte comme modèle de décision :
llama-server -hf LiquidAI/d1-3B-GGUF:Q4_K_M --port 8090
2. Écrire l'agent décideur
Un décideur est un fichier d'agent avec un bloc decision:. Chaque question a un nom, un type et ses critères :
# agent.decider.yaml
provider: llamacpp
model: LiquidAI/d1-3B-GGUF:Q4_K_M
baseUrl: http://127.0.0.1:8090/v1
decision:
questions:
risk:
type: choice # une option parmi les critères
instructions: How risky is running this shell command in the project directory?
criteria:
read-only: Only reads files or prints information
local-change: Changes files inside the project, easy to rebuild or revert
dangerous: Deletes or changes things outside the project, uses sudo, the network, git push or force
destructive:
type: noul # la probabilité que l'affirmation soit vraie
instructions: The command deletes data that cannot be rebuilt.
urgency:
type: score # un niveau, du plus bas au plus haut
instructions: How carefully should a person review this command before it runs?
criteria: [no review needed, a quick look, a careful review]
# Un décideur ne déclare aucun outil : sinon mm refuse de démarrer.
bashTool: false
editTools: false
planTool: false
fetchContentTool: false
askUserTool: false
skillsDir: no-skills
agentsMd:
enabled: false
Le message que vous envoyez est l'état sur lequel portent les questions. Écrivez les instructions en anglais : c'est la langue d'entraînement des modèles vus jusqu'ici.
3. L'interroger depuis la ligne de commande ou un script
mm -config agent.decider.yaml -p "rm -rf ~/.config && git push --force origin main"
stdout porte le JSON du serveur et rien d'autre, un script peut donc le lire :
{"model":"LiquidAI/d1-3B-GGUF:Q4_K_M","answers":{"risk":{"type":"choice","choice":"dangerous","probabilities":{"read-only":0.007,"local-change":0.034,"dangerous":0.959},"confidence":0.939},"destructive":{"type":"noul","noul":0.882},"urgency":{"type":"score","score":1.887,"legend":{"0":"no review needed","1":"a quick look","2":"a careful review"},"probabilities":{"0":0.029,"1":0.056,"2":0.916},"confidence":0.830}},"usage":{"input_tokens":172,"output_tokens":0}}
Le code de sortie vaut 0 quand le serveur a répondu, 1 sinon (la raison est sur stderr). Dans un hook, lancez cette commande et lisez answers.<nom>, comme la démo des gardes lit les verdicts de Granite Guardian.
4. L'interroger depuis un autre agent
Déclarez-le dans les mmConfigs de l'agent qui pose la question :
mmConfigs:
decider: agent.decider.yaml
Ensuite, /ask-decider git push --force origin main dans le terminal, la fenêtre ou un éditeur, ou mm --ask decider -p "…" depuis un skill, affiche une ligne par question suivie du JSON :
risk: dangerous (confidence 0.94) — dangerous 0.96 · local-change 0.03 · read-only 0.01
destructive: 0.88
urgency: 1.89 → a careful review (confidence 0.83) — a careful review 0.92 · a quick look 0.06 · no review needed 0.03
mm -config agent.decider.yaml seul fait de même pour chaque ligne tapée.
Variantes
- llmman ou Ollama :
provider: llmman(ouollama),baseUrl: http://127.0.0.1:17434/v1(ou:11434/v1),model: hf.co/LiquidAI/d1-3B-GGUF:Q4_K_M— téléchargez-le d'abord. Les trois serveurs ont donné les mêmes réponses à la même requête. - Un autre serveur compatible OpenAI :
provider: openaiet sonbaseUrl; mm envoie à/v1/systemoneà la racine du serveur (baseUrlsans son/v1final), et un serveur sans la route répond 404. - Depuis un sandbox : ajoutez
fallback: http://host.docker.internal:8090/v1. - Sans aucun modèle de chat :
demos/decision-only/trie un dossier de messages de support avec un appelmm -ppar message, lu par un court script Node.js qui affiche un tableau, du plus urgent au moins urgent.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
HTTP 501: This model is not a decision model (llmman, llama-server) ou HTTP 400: model "…" is not a llama.cpp decision model (Ollama) |
le serveur ne traite pas le modèle comme un modèle de décision (decision-4b d'evalengine est refusé) |
utilisez un modèle que la route accepte, comme LiquidAI d1 |
decision: dmr: no /v1/systemone route au démarrage |
Docker Model Runner n'a pas cette route | servez le modèle avec llama-server, llmman ou Ollama |
decision cannot be used with tools — this agent declares: … |
un outil est encore actif | désactivez les clés que le message liste |
| la première réponse prend ~13 s | le serveur charge le modèle au premier appel | rien : les appels suivants prennent 0,2 à 0,5 s |
Voir aussi
- Toutes les clés et tous les champs de réponse : Référence de la configuration
- Utiliser un décideur pour choisir le skill avant chaque tour : Router les skills avec un modèle de décision
- Pourquoi c'est construit ainsi : Les modèles de décision
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
|