bots-garden/mini-mepublic Fork
⑂ v1.0.3
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/mini-me.git
git clone ssh://git@rickub.com/bots-garden/mini-me.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP
🛟 Updated. 5266466 · on v1.0.3 · k33g · 17d ago
route-tools-with-a-decision-model.md · 62 lines · 3.1 KBmarkdown
Blame HistoryOpen raw

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

  1. Ajoutez un bloc toolRouting à l'agent qui vous répond, avec un groupe par famille d'outils. when est l'affirmation que juge le décideur, matcher une 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).

  2. 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
    
  3. 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 kept signifie qu'aucun groupe n'était sous dropBelow.

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_skill et les outils MCP restent tant que le matcher d'aucun groupe ne les nomme.
  • Un outil dans deux groupes : un outil reste tant qu'un de ses groupes est gardé (read_file dans files et dans docs, par exemple).
  • Un décideur lent à charger : au-delà de timeout, le tour affiche 🧰 tool routing skipped: … context deadline exceeded et tous les outils sont proposés.

Voir aussi

 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
# 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](ask-a-decision-model.md)). Les fichiers complets sont dans `demos/decision-tools/`.

## Étapes

1. Ajoutez un bloc `toolRouting` à l'agent qui vous répond, avec un groupe par famille d'outils. `when` est l'affirmation que juge le décideur, `matcher` une expression régulière sur le nom des outils :

   ```yaml
   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`).

2. 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
   ```

3. 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 kept` signifie qu'aucun groupe n'était sous `dropBelow`.

## 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_skill` et les outils MCP restent tant que le `matcher` d'aucun groupe ne les nomme.
- **Un outil dans deux groupes** : un outil reste tant qu'un de ses groupes est gardé (`read_file` dans `files` et dans `docs`, par exemple).
- **Un décideur lent à charger** : au-delà de `timeout`, le tour affiche `🧰 tool routing skipped: … context deadline exceeded` et tous les outils sont proposés.

## Voir aussi

- Chaque clé et chaque notice de `toolRouting` : [Référence de la configuration](../reference/configuration.md#toolrouting)
- Pourquoi seul un « non » franc retire un outil, et ce que cela coûte : [Modèles de décision](../explanation/decision-models.md#le-routage-doutils-ne-retire-que-lévidemment-inutile)