Comment laisser l'agent vous poser des questions
Ce guide montre comment répondre aux questions qu'un agent vous pose avec son outil ask_user — un choix, plusieurs choix, un texte, un oui ou un non — dans chaque interface, et comment couper l'outil, y compris pour les agents qu'un autre agent appelle. Il suppose que vous faites déjà tourner mm avec un modèle qui appelle des outils.
Vérifier que l'outil est là
ask_user est actif par défaut. Rien à ajouter au fichier de configuration, sauf s'il contient askUserTool: false. Un agent avec un structuredOutput ne l'a jamais.
Pour que votre agent s'en serve, dites-le dans son prompt système, par exemple :
system: |
When a decision belongs to the user, ask them with the ask_user tool
before acting.
Répondre dans le terminal (mode ligne)
Chaque question s'affiche avec des options numérotées :
❓ ask_user: 1 question(s)
❓ Which framework would you like to use?
1. React
2. Vue
3. Svelte
number, or another answer · /skip to decline
? 2
- Tapez le numéro d'une option, ou son texte, ou ses premières lettres (
sv), puis Entrée. Pour plusieurs choix, tapez les numéros séparés par des virgules :1,3. - Pour un oui ou un non, tapez
ooun(yetnonmarchent aussi). - Pour une réponse libre, tapez-la. Entrée sur une ligne vide prend la valeur par défaut quand il y en a une.
- Plusieurs questions arrivent l'une après l'autre.
Pour refuser de répondre, tapez /skip. /abort arrête le tour, question comprise.
Répondre dans la fenêtre (mm -tui)
La question remplace la boîte de saisie, ses options au bas de la conversation :
- Un choix : ↑↓ puis Entrée, ou le numéro de l'option.
- Plusieurs choix : ↑↓, Espace pour cocher chacun, Entrée pour envoyer.
- Oui ou non :
ooun. - Un texte : tapez-le dans la boîte, puis Entrée.
Échap refuse de répondre.
Répondre dans un éditeur (ACP)
Rien à faire côté mm : un éditeur qui prend en charge les formulaires d'elicitation d'ACP affiche les questions sous forme de formulaire. Un éditeur qui ne les prend pas en charge montre chaque question à choix ou oui/non dans un dialogue dont les boutons sont les options, plus Decline. Avec un tel éditeur, les questions à texte libre et à choix multiple ne peuvent pas être posées : l'agent en est averti et fait une hypothèse.
Couper l'outil
Pour un agent, dans son fichier :
askUserTool: false
Pour une exécution, sans modifier le fichier :
AGENT_ASK_USER=false mm -config agent.yaml
Décider pour les agents que votre agent appelle
Un agent appelé par ask_agent ou /ask garde son propre askUserTool. Quand il est actif, ses questions vous parviennent par l'interface de votre agent, précédées de son nom (homer asks: Which environment?). Pour décider à sa place, mettez askUser dans son entrée mmConfigs :
mmConfigs:
homer:
path: agent.homer.yaml
askUser: false # homer ne demande jamais : il fait une hypothèse
milo:
path: agent.milo.yaml
askUser: true # milo peut demander, quoi que dise son propre fichier
Avec mm --ask, personne n'est là pour répondre : les questions d'un agent appelé reçoivent « l'utilisateur ne peut pas être interrogé », et il continue sur une hypothèse.
Variantes
- Dans une exécution unique (
mm -p), personne ne peut répondre non plus : l'outil l'indique au modèle aussitôt, sans attendre. - Une question attend aussi longtemps qu'il le faut : le chien de garde ne termine pas le tour pendant qu'elle attend.
Voir aussi
- Les champs, résultats et messages de l'outil : référence des outils
askUserTool,mmConfigs.<nom>.askUser: référence de la configuration ;AGENT_ASK_USER: référence de la ligne de commande- Ce qui est envoyé à un éditeur : référence ACP
- Pourquoi cela fonctionne ainsi : interroger l'utilisateur
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 |
|