L’appel d’outil dans les grands modèles de langage (LLM) est la capacité du LLM à interagir avec des outils, services ou API externes pour effectuer des tâches. Cela permet aux LLM d’étendre leurs fonctionnalités et d’améliorer leur capacité à gérer des tâches du monde réel qui peuvent nécessiter l’accès à des données externes, à des informations en temps réel ou à des applications spécifiques. Lorsqu’un LLM utilise un outil de recherche Web, il peut appeler le Web pour récupérer des données en temps réel qui ne sont pas disponibles dans les données d’entraînement du modèle. D’autres types d’outils peuvent inclure Python pour les calculs, l’analyse de données ou la visualisation, ou l’appel d’un point de terminaison pour les données. L’appel d’outil peut rendre un chatbot plus dynamique et plus adaptable, lui permettant de fournir des réponses plus précises, pertinentes et détaillées sur la base de données en direct ou de tâches spécialisées ne relevant pas de sa base de connaissances immédiate. Parmi les frameworks populaires d’appel d’outil, citons notamment Langchain et maintenant Ollama.
Ollama est une plateforme qui propose des modèles d’IA open source pour une utilisation sur des appareils personnels qui permet aux utilisateurs d’exécuter des LLM directement sur leurs ordinateurs. Contrairement à un service tel que l’API OpenAI, il n’est pas nécessaire de créer un compte, car le modèle se trouve sur votre ordinateur local. Ollama se concentre sur la confidentialité, la performance et la facilité d’utilisation, permettant aux utilisateurs d’accéder et d’interagir avec des modèles IA sans envoyer de données à des serveurs externes. Cette approche peut être particulièrement intéressante pour les personnes soucieuses de la confidentialité des données ou qui souhaitent éviter de dépendre d’API externes. Facile à configurer et à utiliser, la plateforme d’Ollama prend en charge divers modèles, offrant aux utilisateurs une gamme d’outils pour le traitement automatique du langage naturel, la génération de code et d’autres tâches d’IA, directement sur leur propre matériel. Elle convient bien aux architectures d’appel d’outil, car elle permet d’accéder à toutes les capacités d’un environnement local, y compris les données, les programmes et les logiciels personnalisés.
Dans ce tutoriel, vous apprendrez à configurer l’appel d’outil en utilisant Ollama pour examiner un système de fichiers local, une tâche qui serait difficile à effectuer avec un LLM distant. De nombreux modèles Ollama sont disponibles pour l’appel d’outil et la création d’agents d’IA comme Mistral et Llama 3.2. Une liste complète est disponible sur le site Web d’Ollama. Dans ce cas, nous utiliserons IBM Granite 3.2 Dense qui est compatible avec les outils. Les modèles 2B et 8B sont des LLM denses textuels entraînés spécifiquement pour prendre en charge les cas d’utilisation basés sur des outils et pour la génération augmentée par récupération (RAG), rationalisant la génération de code, la traduction et la correction des bugs.
Le notebook pour ce tutoriel peut être téléchargé sur Github ici.
D’abord, téléchargez Ollama à partir de https://ollama.com/download et installez-le sur votre système d’exploitation. Sur OSX, cela se fait via un fichier .dmg, sur Linux via une seule commande shell, et sur Windows avec un programme d’installation. Vous aurez peut-être besoin d’un accès administrateur sur votre ordinateur pour exécuter le programme d’installation.
Vous pouvez vérifier qu’Ollama est correctement installé en ouvrant un terminal ou une invite de commandes et en saisissant :
Ensuite, ajoutez les importations initiales. Cette démo utilise la bibliothèque Ollama Python pour communiquer avec Ollama et la bibliothèque PyMuPDF pour lire des fichiers PDF dans le système de fichiers.
Ensuite, extrayez le modèle que vous utiliserez tout au long de ce tutoriel. Cela télécharge les poids de modèle d’Ollama vers votre ordinateur local et les stocke pour les utiliser sans avoir besoin d’effectuer des appels d’API à distance plus tard.
Définissez maintenant les outils auxquels l’instance d’outils Ollama aura accès. Comme l’objectif des outils est de lire des fichiers et de parcourir des images dans le système local de fichiers, vous allez créer deux fonctions Python pour chacun de ces outils. La première est
Vous pouvez utiliser une simple mise en correspondance des chaînes pour voir si le mot-clé se trouve dans le document, mais comme Ollama facilite l’appel de LLM locaux,
Si le modèle répond « oui », la fonction renvoie le nom du fichier contenant le mot-clé indiqué par l’utilisateur dans le prompt. Si aucun des fichiers ne semble contenir les informations, la fonction renvoie « Aucun » sous forme de chaîne.
Cette fonction peut s’exécuter lentement la première fois car Ollama téléchargera Granite 3.2 Dense.
Le deuxième outil est
La fonction renvoie une chaîne, qui correspond au nom du fichier dont la description contient le mot-clé indiqué par l’utilisateur dans le prompt.
Maintenant que les fonctions qu’Ollama doit appeler ont été définies, configurez les informations sur l’outil pour Ollama lui-même. La première étape consiste à créer un objet qui associe le nom de l’outil aux fonctions de l’appel de fonction d’Ollama :
Ensuite, configurez un tableau d’outils pour indiquer à Ollama les outils auxquels il aura accès et ce dont ces outils ont besoin. Il s’agit d’un tableau contenant un schéma d’objet par outil, qui indique au cadre d’appel d’outil d’Ollama comment appeler l’outil et ce qu’il renvoie.
Dans le cas des deux outils créés précédemment, il s’agit de fonctions qui nécessitent un paramètre
Vous utiliserez cette définition d’outils pour appeler Ollama avec une entrée utilisateur.
Il est maintenant temps de transmettre l’entrée utilisateur à Ollama et de lui faire renvoyer les résultats des appels d’outil. Tout d’abord, vérifiez qu’Ollama fonctionne sur votre système :
Si Ollama est en cours d’exécution, vous obtiendrez :
Demandez maintenant à l’utilisateur de fournir une entrée. Vous pouvez également coder l’entrée en dur ou la récupérer à partir d’une interface de chat en fonction de la configuration de votre application. La fonction
Par exemple, si l’utilisateur saisit « Informations sur les chiens », cette cellule affichera :
La requête de l’utilisateur est maintenant transmise à Ollama lui-même. Les messages ont besoin du rôle de l’utilisateur et du contenu qu’il a saisi. Cela est transmis à Ollama en utilisant la fonction
La fonction
Maintenant que le modèle a généré des appels d’outil dans la production, exécutez tous les appels d’outil avec les paramètres générés par le modèle et vérifiez la production. Dans cette application, Granite 3.2 Dense est également utilisé pour générer la production finale, de sorte que les résultats des appels d’outil sont ajoutés à l’entrée initiale de l’utilisateur, puis transmis au modèle.
Étant donné que plusieurs appels d’outil peuvent renvoyer des fichiers correspondants, les réponses sont regroupées dans un tableau qui est ensuite transmis à Granite 3.2 pour générer une réponse. Le prompt qui précède les données indique au modèle comment répondre :
La production finale est ensuite générée en utilisant les noms de fichiers renvoyés ou
À l’aide des fichiers fournis pour ce tutoriel, le prompt « Informations sur les chiens » renverra :
Vous pouvez constater que Granite 3.2 a choisi le bon mot-clé dans l’entrée (« chiens »), l’a recherché dans les fichiers du dossier et l’a trouvé dans un fichier PDF. Comme les résultats du LLM ne sont pas purement déterministes, vous pouvez obtenir des résultats légèrement différents avec le même prompt ou des prompts très similaires.
Créez, déployez et gérez de puissants assistants et agents IA qui automatisent les workflows et les processus grâce à l’IA générative.
Construisez l’avenir de votre entreprise avec des solutions d’IA en lesquelles vous pouvez avoir confiance.
IBM Consulting et ses services d'IA accompagnent les entreprises dans la redéfinition de leurs activités avec l'intelligence artificielle pour mener leur transformation.