Ne proposer que les outils dont une demande a besoin
Ce guide montre comment faire retirer par un modèle de décision, avant chaque tour, les groupes d'outils dont une demande n'a clairement pas besoin, pour qu'un petit modèle choisisse parmi moins d'outils. Il suppose que vous avez un fichier d'agent décideur (voir Interroger un modèle de décision). Les fichiers complets sont dans demos/decision-tools/.
Étapes
-
Ajoutez un bloc
toolRoutingà l'agent qui vous répond, avec un groupe par famille d'outils.whenest l'affirmation que juge le décideur,matcherune expression régulière sur le nom des outils :toolRouting: decider: agent.decider.yaml # relatif à ce fichier dropBelow: 0.2 timeout: 5s groups: shell: when: Answering this request needs running shell commands (build, test, git, listing files). matcher: ^bash$ files: when: Answering this request needs reading, writing or editing files of the project. matcher: ^(read_file|write_file|edit_file)$ web: when: Answering this request needs fetching a web page or searching the web. matcher: ^fetch_content$ plan: when: This request is a multi-step task that needs a plan or a task list. matcher: ^plan$Le fichier du décideur n'a qu'à situer le modèle (
provider,model,baseUrl,fallback). -
Démarrez l'agent. Le bandeau se termine par la colonne du routage d'outils :
… | tool routing: llmman/hf.co/LiquidAI/d1-3B-GGUF:Q4_K_M, 4 group(s), drop < 0.20 -
Posez une question. Avant le tour, une notice
🧰dit quels groupes ont été retirés :> explain what a goroutine is, in two sentences 🧰 tools: dropped shell (0.04), web (0.08)> run go vet on this module and tell me the result 🧰 tools: dropped web (0.08) 🛠️ bash: go vet ./...🧰 tools: all keptsignifie qu'aucun groupe n'était sousdropBelow.
Variantes
- Retirer davantage : montez
dropBelow. Chaque cran risque de retirer un outil dont la demande avait besoin, et le modèle ne peut alors pas faire la tâche pendant ce tour. Commencez bas et surveillez les notices. - Un outil qui doit toujours être là : ne le mettez dans aucun groupe.
ask_user,read_skillet les outils MCP restent tant que lematcherd'aucun groupe ne les nomme. - Un outil dans deux groupes : un outil reste tant qu'un de ses groupes est gardé (
read_filedansfileset dansdocs, par exemple). - Un décideur lent à charger : au-delà de
timeout, le tour affiche🧰 tool routing skipped: … context deadline exceededet tous les outils sont proposés.
Voir aussi
- Chaque clé et chaque notice de
toolRouting: Référence de la configuration - Pourquoi seul un « non » franc retire un outil, et ce que cela coûte : 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 |
|