Les outils du modèle

Les outils exposés au modèle sont exactement les tâches du moteur de workflows. Le schéma d'entrées et de sorties d'une tâche est un schéma d'outil : la conversion est mécanique. Une tâche apportée par un plugin devient appelable par l'assistant sans une ligne de code supplémentaire.

API

AppelRenvoie
K.tools.schemas()Les tâches converties en JSON Schema, prêtes à être offertes au modèle.
K.tools.tache(nom)La tâche correspondant à un nom d'outil, ou null.
K.tools.appeler(nom, args, ctx)Une promesse. Ne lève jamais : les erreurs sont renvoyées dans le résultat.
// Erreur rendue AU MODELE, pas levee { "erreur": "Outil inconnu : core.suprimer" }
Un outil inconnu, ou un appel qui échoue, produit un objet erreur transmis au modèle. L'erreur est rendue au modèle plutôt que levée : il peut corriger son appel au tour suivant, alors qu'une exception interromprait la session sans message pour l'utilisateur.

Le champ notice

Le modèle lit la description d'un outil au moment de décider s'il l'appelle, pas le prompt système en entier. Une consigne d'usage placée dans le prompt système est fréquemment ignorée ; la même consigne dans notice est lue à la décision.

notice: "Rend n, moyenne, 2SD, min et max PAR GROUPE, calculés sur la totalité " + "des lignes. Ne calcule jamais une statistique toi-même : utilise cette tâche."

Le déplacement de la consigne du prompt système vers notice a nettement augmenté le taux d'appel des outils à l'essai. Quand la consigne reste dans le prompt, le modèle répond parfois qu'il ne sait pas faire une opération dont l'outil existe.

Aucun exemple chiffré dans une notice, ni dans un libellé de paramètre, ni dans une consigne système. Le modèle les recopie mot pour mot sur des questions sans rapport : une valeur d'exemple laissée dans une notice se retrouve dans une réponse à un utilisateur qui ne l'a jamais saisie. Décrire le paramètre, jamais l'illustrer.

Ce que le modèle reçoit d'un résultat

Le résultat d'un outil est résumé avant d'être transmis. Le modèle reçoit la forme, l'utilisateur voit le fond.

DestinataireContenu
Le modèle Nombre de lignes, noms et types de colonnes, statistiques, douze lignes d'exemple.
L'utilisateur Le tableau complet à l'écran, triable et exportable.

Le gain est d'environ un facteur neuf sur les jetons consommés. Sans lui, un seul appel d'outil sur une requête un peu large pousserait le modèle hors de sa fenêtre de 32k, et le début de la conversation disparaitrait sans avertissement.

La consigne associée est explicite : le modèle ne recopie pas le tableau, il le commente et renvoie l'utilisateur aux valeurs qu'il a sous les yeux.

core.graphique

L'outil de tracé est le plus utilisé, et le plus spécifié.

ParamètreValeurs
typebar, line, scatter, histogram
couleurDégradé continu sur une variable numérique, par exemple depth_m, avec l'échelle OCEAN
erreursDétection automatique des colonnes d'incertitude
axesTitres et unités renseignés depuis les métadonnées de l'élément

Les échantillons dupliqués sont agrégés automatiquement : une barre par échantillon, et non une barre par analyse, avec le 2SD des réplicats en barre d'erreur.

Export des figures

Toute figure produite par l'assistant ou par un workflow s'exporte dans les formats attendus par une revue.

FormatDétail
PNG 300 dpi, rendu à nouveau et non agrandi, fond blanc, aux largeurs de colonne de journal (90 mm et 180 mm).
SVG Rendu séparé. Le fait qu'il s'agisse d'un second rendu, et non d'une conversion, est indiqué explicitement.
CSV BOM UTF-8 et séparateur point-virgule, pour ouverture directe dans Excel en environnement francophone.
LaTeX Tableau formaté, prêt à inclure dans un manuscrit.

Recherche documentaire

L'assistant consulte les sources déclarées dans le panneau Connaissances par un appel d'outil, visible dans le fil comme n'importe quel autre. Il ne lit rien en dehors des sources actives, et une source dont le chemin est faux se voit à son compteur à zéro, pas à une réponse évasive du modèle.

Les documentations d'outils, que le modèle connait déjà en partie, apportent moins que le wiki et les procédures internes du laboratoire. Ces derniers ne sont pas publics et ne figurent dans aucun corpus d'entrainement.

Inspecter les workflows

L'assistant peut lire l'automatisation sans y toucher. Quatre tâches en lecture seule lui permettent de répondre aux questions sur les workflows et leurs passages : core.workflow_liste, core.workflow_detail, core.workflow_passages et core.workflow_simuler. Il peut dire pourquoi un workflow a échoué cette nuit, ou ce qu'un workflow ferait ; il ne peut ni l'armer, ni le lancer, ni le modifier.

En mode conversation, le jeu d'outils offert au modèle est réduit. Les outils LIMS, alertes et inspection de workflows en sont retirés, un jeu trop large saturant un petit modèle au point qu'il cesse d'appeler quoi que ce soit. L'ensemble complet est disponible en mode agent, où la tâche est explicite.

Ajouter un outil par plugin

Aucune API spécifique à l'IA n'est nécessaire. Déclarer une tâche suffit : elle apparait dans le moteur de workflows et dans la liste d'outils du modèle au même moment.

K.workflows.declarerTache({ id: 'phreeqc.saturation', source: 'phreeqc', title: { fr: 'PHREEQC : indices de saturation', en: 'PHREEQC: saturation indices' }, notice: "Rend les indices de saturation des minéraux pour une solution. " + "Utilise cette tâche plutôt que d'estimer une précipitation.", entrees: [ { nom: 'solution', type: 'string', requis: true, libelle: { fr: 'Solution', en: 'Solution' } }, { nom: 'mineraux', type: 'array', requis: false, defaut: [], libelle: { fr: 'Minéraux', en: 'Minerals' } } ], sorties: [ { nom: 'si', type: 'object' } ], executer: function (args, ctx) { /* ... */ } });
Une tâche déclarée par un plugin est immédiatement appelable par le modèle. La liste des outils est donc la liste des tâches installées : auditer ce que l'assistant peut faire revient à auditer les plugins actifs, dans l'Inspecteur du noyau, filtre task.

Ce qu'aucun outil ne fait

  • Aucune tâche du noyau ne supprime de données.
  • Aucun outil n'expose fetch, le disque, ni un accès direct à la base.
  • Le modèle ne calcule aucune statistique : elles passent toutes par core.resume ou core.analyses.