Dans la sélection d’un outil par le LLM, il apparaît que le nom de l’outil est prioritaire, et que la description est secondaire. De toute évidence, la description ne sert au LLM qu’en deuxième intention, le plus souvent sur une reprise après erreur. La première sélection de l’outil est fondée sur une base trop sommaire.
La carte des intentions (Intent Map)
Puisque le LLM ne fait pas le travail avec suffisamment de discernement, il va falloir opérer une pré-sélection des outils au niveau de l’orchestrateur, avant de les passer au LLM. C’est ici qu’apparaît la carte des intentions (Intent Map)
L’Intent Map fait le lien entre les noms techniques des outils et leur intention métier explicite. C’est un dictionnaire de la forme :
intent_map = {
"readable_dates_to_timestamps_ms": "Convert a list of human-readable dates into a list of UNIX timestamp expressed in milliseconds."
"extract_dates": "Extraire une plage de dates à partir d’un texte",
"filter_by_range": "Filtrer une liste d’interventions selon une période",
"summarize_notes": "Résumer une série de notes médicales",
}
Pour les toolbox que nous gérons, l’Intent Map pourra être générée automatiquement à partir d’une métadonnée ’intent’ des outils, ou de la propriété ’intent_map’ de la toolbox. Sinon, l’Intent Map devra être écrite manuellement.
L’Intent Map permet à l’orchestrateur (classe ToolRouter) de sélectionner les outils selon l’intention.
De plus, notre outil de création de macro-outil (classe MacroToolBuilder) pourra créer automatiquement la Docstring macroscopique en se fondant sur les intentions des outils qui la composent.
Bonnes pratiques pour la rédaction des Intensions :
- Les valeurs doivent être des descriptions métier claires, pas des signatures techniques.
- Elles doivent être formulées à l’infinitif.
- Elles doivent éviter les termes ambigus.
- Idéalement, l’Intent d’un outil devrait être identique à la première ligne de sa Docstring.
- bien définir le vocabulaire (les mots et leur sémantique) dans un lexique du métier, et s’y conformer.
Des cas où l’Intent Map est essentielle !
ToolFactory : Dans cet article ReAct : ToolFactory nous montrons comment la classe ToolFactory peut créer automatiquement des outils à partir de fonctions des bibliothèques Python. On peut constater que les descriptions des fonctions sont particulièrement pauvres et totalement inadaptées à la sélection par un LLM. Dans ce cas, une Intent Map sera essentielle à la bonne sélection des outils. Il est à craindre qu’il faille la construire manuellement !
MCP : Dans le cas des outils MCP (Model Context Protocole), les noms d’outils et leur description sont gérés du côté du serveur MCP, possiblement hors de portée de l’organisation. Si les descriptions sont mal rédigées, ou rédigées avec un vocabulaire hors du métier, une Intent Map sera essentielle à la bonne sélection des outils. Il faudra évidemment la construire manuellement.
Sur ce sujet, voir également :
– ReAct : le nommage des outils.