Tool-Calling in großen Sprachmodellen (LLMs) ist die Fähigkeit des LLM, mit externen Tools, Diensten oder APIs zu interagieren, um Aufgaben auszuführen. Dadurch kann die Funktionalität von LLMs erweitert und ihre Fähigkeit verbessert werden, reale Aufgaben zu bewältigen, die den Zugriff auf externe Daten, Echtzeitinformationen oder bestimmte Anwendungen erfordern. Wenn ein LLM ein Web-Suchtool verwendet, kann es das Web aufrufen, um Echtzeitdaten abzurufen, die in den Trainingsdaten des Modells nicht verfügbar sind. Andere Arten von Tools können Python für Berechnungen, Datenanalysen oder Visualisierung oder das Aufrufen eines Endgeräts für Daten enthalten. Durch Tool-Calling kann ein Chatbot dynamischer und anpassungsfähiger werden, sodass er genauere, relevantere und detailliertere Antworten auf der Grundlage von Live-Daten oder speziellen Aufgaben außerhalb seiner unmittelbaren Wissensbasis geben kann. Beliebte Frameworks für den Tool-Aufruf sind Langchain und jetzt auch ollama.
Ollama ist eine Plattform, die lokale Open-Source-KI-Modelle für den Einsatz auf persönlichen Geräten bereitstellt, sodass Benutzer LLMs direkt auf ihren Computern ausführen können. Im Gegensatz zu einem Dienst wie der OpenAI-API ist kein Konto erforderlich, da sich das Modell auf Ihrem lokalen Computer befindet. Ollama konzentriert sich auf Datenschutz, Leistung und Benutzerfreundlichkeit und ermöglicht Benutzern den Zugriff auf und die Interaktion mit KI-Modellen, ohne Daten an externe Server zu senden. Dies kann besonders für diejenigen attraktiv sein, die sich Gedanken über den Datenschutz machen oder die Abhängigkeit von externen APIs vermeiden möchten. Die Plattform von Ollama ist so konzipiert, dass sie einfach einzurichten und zu bedienen ist. Sie unterstützt verschiedene Modelle, um den Benutzern eine Reihe von Tools für die Verarbeitung natürlicher Sprache, die Generierung von Code und andere KI-Aufgaben direkt auf ihrer eigenen Hardware zur Verfügung zu stellen. Es eignet sich gut für eine Tool-Calling-Architektur, da es auf alle Funktionen einer lokalen Umgebung zugreifen kann, einschließlich Daten, Programme und benutzerdefinierte Software.
In diesem Tutorial erfahren Sie, wie Sie einen Tool-Aufruf einrichten, indem Sie mit ollama ein lokales Dateisystem durchsuchen – eine Aufgabe, die mit einem Remote-LLM nur schwer zu bewerkstelligen wäre. Viele Ollama-Modelle sind für den Aufruf von Tools und die Erstellung von KI-Agenten wie Mistral und Llama 3.2 verfügbar. Eine vollständige Liste finden Sie auf der Ollama-Website. In diesem Fall verwenden wir IBM Granite 3.2 Dense mit Tool-Unterstützung. Bei den 2B- und 8B-Modellen handelt es sich um dichte reine Text-LLMs, die auf toolbasierten Anwendungsfällen und für die Retrieval Augmented Generation (RAG) trainiert wurden, um die Codegenerierung, Übersetzung und Fehlerbehebung zu optimieren.
Das Notebook für dieses Tutorial kann hier von Github heruntergeladen werden.
Zuerst laden Sie ollama von https://ollama.com/download herunter und installieren es für Ihr Betriebssystem. Unter OSX erfolgt dies über eine .dmg-Datei, unter Linux über einen einzelnen Shell-Befehl und unter Windows mit einem Installationsprogramm. Möglicherweise benötigen Sie Administratorzugriff auf Ihren Computer, um das Installationsprogramm ausführen zu können.
Sie können testen, ob ollama korrekt installiert ist, indem Sie ein Terminal oder einen Prompt öffnen und Folgendes eingeben:
Als Nächstes fügen Sie die ersten Importe hinzu. Diese Demo verwendet die Python-Bibliothek ollama, um mit ollama zu kommunizieren, und die PyMUpdf-Bibliothek, um PDF-Dateien im Dateisystem zu lesen.
Als Nächstes rufen Sie das Modell ab, das Sie in diesem Tutorial verwenden werden. Dadurch werden die Modellgewichtungen von ollama auf Ihren lokalen Computer heruntergeladen und gespeichert, ohne dass spätere Remote-API-Aufrufe erforderlich sind.
Jetzt definieren Sie die Tools, auf die die ollama-Tool-Instanz zugreifen kann. Da die Tools dazu gedacht sind, Dateien zu lesen und Bilder im lokalen Dateisystem zu durchsuchen, erstellen Sie für jedes dieser Tools zwei Python-Funktionen. Der erste heißt
Sie könnten einen einfachen Zeichenfolgenabgleich verwenden, um zu sehen, ob das Schlüsselwort im Dokument enthalten ist, aber da ollama das Aufrufen lokaler llms vereinfacht, verwendet
Wenn das Modell mit „Ja“ antwortet, gibt die Funktion den Namen der Datei zurück, die das Schlüsselwort enthält, das der Benutzer im Prompt angegeben hat. Wenn keine der Dateien die Informationen zu enthalten scheint, gibt die Funktion „Keine“ als Zeichenfolge zurück.
Diese Funktion wird beim ersten Mal möglicherweise langsam ausgeführt, da ollama Granite 3.2 Dense herunterlädt.
Das zweite Tool heißt
Die Funktion gibt eine Zeichenfolge zurück. Dies ist der Name der Datei, deren Beschreibung das Schlüsselwort enthält, das der Benutzer im Prompt angegeben hat.
Nachdem die Funktionen, die ollama aufrufen soll, definiert wurden, konfigurieren Sie die Toolinformationen für ollama selbst. Der erste Schritt besteht darin, ein Objekt zu erstellen, das den Namen des Tools den Funktionen für den Aufruf der Ollama-Funktion zuordnet:
Als Nächstes konfigurieren Sie ein Tools-Array, um ollama mitzuteilen, auf welche Tools es Zugriff hat und was diese Tools benötigen. Dabei handelt es sich um ein Array mit einem Objektschema pro Tool, das dem ollama-Toolaufruf-Framework mitteilt, wie das Tool aufgerufen werden soll und was es zurückgibt.
Bei den beiden Tools, die Sie zuvor erstellt haben, handelt es sich um Funktionen, die einen
Sie verwenden diese Tooldefinition, wenn Sie ollama mit einer Benutzereingabe aufrufen.
Jetzt ist es an der Zeit, die Benutzereingabe an ollama weiterzuleiten und es die Ergebnisse der Toolaufrufe zurückgeben zu lassen. Stellen Sie zunächst sicher, dass ollama auf Ihrem System läuft:
Wenn Ollama läuft, wird Folgendes zurückgegeben:
Bitten Sie den Benutzer nun um eine Eingabe. Sie können die Eingabe auch fest codieren oder von einer Chat-Oberfläche abrufen, je nachdem, wie Sie Ihre Anwendung konfigurieren. Die Funktion
Wenn der Benutzer beispielsweise „Informationen über Hunde“ eingibt, wird in dieser Zelle Folgendes angezeigt:
Nun wird die Benutzerabfrage an ollama selbst weitergeben. Die Nachrichten benötigen eine Rolle für den Benutzer und den vom Benutzer eingegebenen Inhalt. Dies wird über die
Die
Nachdem das Modell nun Toolaufrufe in der Ausgabe generiert hat, führen Sie alle Toolaufrufe mit den Parametern aus, die das Modell generiert hat, und überprüfen Sie die Ausgabe. In dieser Anwendung wird Granite 3.2 Dense auch verwendet, um die endgültige Ausgabe zu generieren, sodass die Ergebnisse der Toolaufrufe zur anfänglichen Benutzereingabe hinzugefügt und dann an das Modell weitergegeben werden.
Mehrere Toolaufrufe können Dateiübereinstimmungen zurückgeben, daher werden die Antworten in einem Array gesammelt, das dann an Granite 3.2 weitergeleitet wird, um eine Antwort zu generieren. Der Prompt, der den Daten vorangeht, weist das Modell an, wie es reagieren soll:
Die endgültige Ausgabe wird dann entweder mit den zurückgegebenen Dateinamen generiert oder
Mit den bereitgestellten Dateien für dieses Tutorial gibt der Prompt „Informationen über Hunde“ Folgendes zurück:
Sie können sehen, dass Granite 3.2 das richtige Schlüsselwort aus der Eingabe ausgewählt hat, „Hunde“, die Dateien im Ordner durchsucht und das Schlüsselwort in einer PDF-Datei gefunden hat. Da die LLM-Ergebnisse nicht rein deterministisch sind, können Sie bei demselben Prompt oder sehr ähnlichen Prompts leicht unterschiedliche Ergebnisse erhalten.
Entwickeln, implementieren und verwalten Sie leistungsstarke KI-Assistenten und -Agenten, die Workflows und Prozesse mit generativer KI automatisieren.
Gestalten Sie die Zukunft Ihres Unternehmens mit KI-Lösungen, denen Sie vertrauen können.
Die KI-Services von IBM Consulting unterstützen Sie dabei, die Art und Weise, wie Unternehmen mit KI arbeiten, neu zu denken.