Il tool calling nei modelli linguistici di grandi dimensioni (LLM) è la capacità dell'LLM di interagire con strumenti, servizi o API esterni per eseguire attività. Ciò consente agli LLM di estendere le loro funzionalità, migliorando la loro capacità di gestire attività reali che potrebbero richiedere l'accesso a dati esterni, informazioni in tempo reale o applicazioni specifiche. Quando un LLM utilizza uno strumento di ricerca web, può richiamare il web per recuperare dati in tempo reale che non sono disponibili nei dati di addestramento del modello. Altri tipi di strumenti potrebbero includere Python per i calcoli, l'analisi o la visualizzazione dei dati o la chiamata a un endpoint di servizio per i dati. Il tool calling possono rendere un chatbot più dinamico e adattabile, consentendogli di fornire risposte più accurate, pertinenti e dettagliate sulla base di dati in tempo reale o attività specializzate al di fuori della sua base di conoscenza immediata. I framework più diffusi per il tool calling includono Langchain e ora Ollama.
Ollama è una piattaforma che offre modelli AI open source da utilizzare su dispositivi personali in modo che gli utenti possano eseguire gli LLM direttamente sui propri computer. A differenza di un servizio come l'API OpenAI, non è necessario un account poiché il modello si trova sul computer locale. Ollama si concentra sulla privacy, sulle prestazioni e sulla facilità d'uso, consentendo agli utenti di accedere e interagire con i modelli AI senza inviare dati a server esterni. Questo può essere particolarmente interessante per chi è preoccupato per la privacy dei dati o che vuole evitare di fare affidamento su API esterne. La piattaforma di Ollama è progettata per essere facile da configurare e utilizzare e supporta vari modelli, offrendo agli utenti una gamma di strumenti per l'elaborazione del linguaggio naturale, la generazione di codice e altre attività di AI direttamente sul proprio hardware. È adatto a un'architettura di tool calling perché può accedere a tutte le funzionalità di un ambiente locale, inclusi dati, programmi e software personalizzato.
In questo tutorial imparerai come impostare il tool calling utilizzando Ollama per esaminare un file di sistema locale, un'attività che sarebbe difficile da eseguire con un LLM remoto. Molti modelli Ollama sono disponibili per il tool calling e la creazione di agenti AI come Mistral e Llama 3.2, un elenco completo è disponibile sul sito web Ollama. In questo caso utilizzeremo IBM Granite 3.2 Dense che supporta gli strumenti. I modelli 2B e 8B sono LLM ad alta densità di testo addestrati su cui sono stati addestrati e progettati per supportare casi d'uso basati su strumenti e per la retrieval-augmented generation (RAG), che semplificano la generazione di codice, la traduzione e la correzione dei bug.
Il notebook per questo tutorial può essere scaricato da Github qui.
Per prima cosa scarica ollama da https://ollama.com/download e installalo sul tuo sistema operativo. Su OSX questo avviene tramite un file .dmg, su Linux tramite un singolo comando shell e su Windows con un programma di installazione. Per eseguire il programma di installazione, potrebbe essere necessario l'accesso come amministratore al computer.
Puoi verificare che ollama sia installato correttamente aprendo un terminale o un prompt dei comandi e inserendo:
Aggiungi quindi le importazioni iniziali. Questa demo utilizza la libreria python ollama per comunicare con ollama e la libreria pymupdf per leggere i file PDF nel file system.
Estrai quindi il modello da utilizzare in questo tutorial. Questa operazione scarica i pesi del modello da ollama sul tuo computer locale e li memorizza senza dover effettuare chiamate API remote in un momento successivo.
Ora definisci gli strumenti a cui avrà accesso l'istanza degli strumenti ollama. Poiché l'intento degli strumenti è quello di leggere i file e sfogliare le immagini nel file system locale, dovrai creare due funzioni Python per ciascuno di questi strumenti. Il primo si chiama
Potrebbe usare una semplice corrispondenza di stringhe per vedere se la parola chiave è contenuta nel documento, ma poiché ollama consente di chiamare facilmente gli LLM locali,
Se il modello risponde "yes", la funzione restituisce il nome del file che contiene la parola chiave indicata dall'utente nel prompt. Se nessuno dei file sembra contenere le informazioni, la funzione restituisce "None" come stringa.
Questa funzione potrebbe essere lenta la prima volta perché ollama scarica Granite 3.2 Dense.
Il secondo strumento si chiama
La
funzione restituisce una stringa, che è il nome del file la cui
descrizione contiene la parola chiave indicata dall'utente nel prompt.
Ora che le funzioni da chiamare per ollama sono state definite, bisogna configurare le informazioni sullo strumento per ollama stesso. Il primo passo consiste nel creare un oggetto che mappa il nome dello strumento alle funzioni per la chiamata della funzione ollama:
Configura quindi un array di strumenti per dire a ollama a quali strumenti avrà accesso e cosa richiedono tali strumenti. Si tratta di un array con uno schema di oggetti per strumento che indica al framework di chiamata dello strumento ollama come chiamare lo strumento e cosa esso restituisce.
Nel caso degli strumenti creati in precedenza, si tratta di funzioni che richiedono
Utilizzerai questa definizione degli strumenti per chiamare ollama con l'input dell'utente.
Ora è il momento di passare l'input dell'utente a ollama e fare in modo che restituisca i risultati delle chiamate allo strumento. Innanzitutto, assicurati che ollama sia in esecuzione sul tuo sistema:
Se Ollama è in esecuzione restituirà:
Ora chiedi
l'input all'utente. Puoi anche codificare l'input o recuperarlo da un'interfaccia di chat
a seconda della configurazione dell'applicazione. La funzione
Ad esempio, se l'utente inserisce "Information about dogs" questa cella stamperà:
Ora la query dell'utente viene passata a ollama stesso. I messaggi richiedono un ruolo per l'utente e il contenuto immesso dall'utente. Questo viene passato a ollama usando la
La funzione
Ora che il modello ha generato chiamate allo strumento nell'output, esegui tutte le chiamate allo strumento con i parametri generati dal modello e controlla l'output. In questa applicazione Granite 3.2 Dense viene utilizzato anche per generare l'output finale, quindi i risultati del tool calling vengono aggiunti all'input iniziale dell'utente e quindi passati al modello.
Chiamate multiple possono restituire corrispondenze tra file, quindi le risposte vengono raccolte in un array che viene poi passato a Granite 3.2 per generare una risposta. Il prompt che precede i dati indica al modello come rispondere:
L'output finale viene quindi generato utilizzando i nomi di file restituiti o
Utilizzando i file forniti per questo tutorial, il prompt "Information about dogs" ritornerà:
Come si può vedere, Granite 3.2 ha selezionato la parola chiave corretta dall'input, "dogs", e ha effettuato una ricerca nei file della cartella, trovando la parola chiave in un file PDF. Poiché i risultati LLM non sono puramente deterministici, potresti ottenere risultati leggermente diversi con lo stesso prompt o con prompt molto simili.
Crea, implementa e gestisci assistenti e agenti AI potenti che automatizzano workflow e processi con l'AI generativa.
Costruisci il futuro della tua azienda con soluzioni AI di cui puoi fidarti.
I servizi di AI di IBM Consulting aiutano a reinventare il modo in cui le aziende lavorano con l'AI per la trasformazione.