La llamada a herramientas en modelos de lenguaje de gran tamaño (LLM) es la capacidad del LLM para interactuar con herramientas externas, servicios o API para realizar tareas. Esto permite a los LLM ampliar su funcionalidad, mejorando su capacidad para manejar tareas del mundo real que pueden requerir acceso a datos externos, información en tiempo real o aplicaciones específicas. Cuando un LLM utiliza una herramienta de búsqueda web, puede llamar a la web para obtener datos en tiempo real que no están disponibles en los datos de entrenamiento del modelo. Otros tipos de herramientas pueden incluir Python para cálculos, análisis de datos o visualización, o llamar a un endpoint de servicio para obtener datos. Las llamadas a herramientas pueden hacer que un chatbot sea más dinámico y adaptable, lo que le permite proporcionar respuestas más precisas, relevantes y detalladas basadas en datos en vivo o tareas especializadas fuera de su base de conocimientos inmediata. Los marcos populares para la llamada a herramientas incluyen Langchain y ahora ollama.
Ollama es una plataforma que ofrece modelos de IA locales de código abierto para su uso en dispositivos personales, de modo que los usuarios puedan ejecutar LLM directamente en sus ordenadores. A diferencia de un servicio como la API de OpenAI, no hay necesidad de una cuenta, ya que el modelo está en su máquina local. Ollama se centra en la privacidad, el rendimiento y la facilidad de uso, lo que permite a los usuarios acceder e interactuar con modelos de IA sin enviar datos a servidores externos. Esto puede ser particularmente atractivo para aquellos preocupados por la protección de datos o que desean evitar la dependencia de API externas. La plataforma de Ollama está diseñada para ser fácil de configurar y usar, y admite varios modelos, brindando a los usuarios una gama de herramientas para el procesamiento del lenguaje natural, la generación de código y otras tareas de IA directamente en su propio hardware. Se adapta bien a una arquitectura de llamada a herramientas porque puede acceder a todas las capacidades de un entorno local, incluidos datos, programas y software personalizado.
En este tutorial aprenderá a configurar la llamada a herramientas utilizando ollama para examinar un sistema de archivos local, una tarea que sería difícil de realizar con un LLM remoto. Hay muchos modelos de ollama disponibles para llamar a herramientas y crear agentes de IA como Mistral y Llama 3.2. Puede consultar una lista completa en el sitio web de Ollama. En este caso, utilizaremos IBM® Granite 3.2 Dense, que tiene soporte para herramientas. Los modelos 2B y 8B son LLM densos de solo texto entrenados y diseñados para admitir casos de uso y para la generación aumentada por recuperación (RAG), agilizando la generación de código, la traducción y la corrección de errores.
El cuaderno de este tutorial se puede descargar desde Github aquí.
Primero, descargue ollama desde https://ollama.com/download e instálelo en su sistema operativo. En OSX, esto se hace mediante un archivo .dmg; en Linux, mediante un único comando de shell; y en Windows, con un instalador. Es posible que necesite acceso de administrador en su equipo para ejecutar el instalador.
Puede comprobar que ollama está correctamente instalado abriendo un terminal o símbolo del sistema e introduciendo:
A continuación, añada las importaciones iniciales. Esta demo utilizará la biblioteca ollama python para comunicarse con ollama y la biblioteca pymupdf para leer archivos PDF en el sistema de archivos.
A continuación, extraiga el modelo que utilizará a lo largo de este tutorial. Con esto, se descargan los pesos del modelo desde ollama a su ordenador local y se almacenan para su uso sin necesidad de realizar llamadas API remotas más adelante.
Ahora defina las herramientas a las que tendrá acceso la instancia de ollama tools. Dado que la finalidad de las herramientas es leer archivos y examinar imágenes en el sistema de archivos local, cree dos funciones Python para cada una de esas herramientas. La primera se llama
Podría utilizar una simple coincidencia de cadenas para ver si la palabra clave está en el documento, pero como ollama facilita la llamada a los LLM locales,
Si el modelo responde "sí", la función devuelve el nombre del archivo que contiene la palabra clave que el usuario indicó en la instrucción. Si ninguno de los archivos parece contener la información, la función devuelve "Ninguno" como una cadena.
Esta función puede ejecutarse lentamente la primera vez, ya que ollama descargará Granite 3.2 Dense.
La segunda herramienta se llama
La
función devuelve una cadena, que es el nombre del archivo cuya
descripción contiene la palabra clave que el usuario indicó en la instrucción.
Ahora que se han definido las funciones que debe llamar la ollama, configure la información de la herramienta para la propia ollama. El primer paso es crear un objeto que asigne el nombre de la herramienta a las funciones para la llamada de funciones de ollama:
A continuación, configure una matriz de herramientas para indicar a ollama a cuáles tendrá acceso y qué requisitos tienen. Se trata de una matriz con un esquema de objeto por herramienta que indica al marco de llamada de herramientas de ollama cómo llamar a la herramienta y qué devuelve.
En el caso de las dos herramientas que ha creado anteriormente, se trata de funciones que requieren un
Utilizará esta definición de herramientas cuando llame a ollama con la entrada del usuario.
Ahora es el momento de pasar la entrada del usuario a ollama y hacer que devuelva los resultados de las llamadas a la herramienta. En primer lugar, asegúrese de que ollama se está ejecutando en su sistema:
Si Ollama se está ejecutando, devolverá lo siguiente:
Ahora solicite la entrada
al usuario. También puede codificar la entrada o recuperarla desde una interfaz
de chat, dependiendo de cómo haya configurado su aplicación. La función
Por ejemplo, si el usuario introduce "Información sobre perros", esta celda mostrará:
Ahora la consulta del usuario se pasa al propio ollama. Los mensajes necesitan una función para el usuario y el contenido que este introduce. Esto se pasa a ollama utilizando la
La función
Ahora que el modelo ha generado llamadas a herramientas en la salida, ejecute todas las llamadas a herramientas con los parámetros que ha generado el modelo y compruebe la salida. En esta aplicación, Granite 3.2 Dense se utiliza también para generar la salida final, por lo que los resultados de las llamadas a herramientas se añaden a la entrada inicial del usuario y luego se pasan al modelo.
Varias llamadas a herramientas pueden devolver coincidencias de archivos, por lo que las respuestas se recopilan en una matriz que luego se pasa a Granite 3.2 para generar una respuesta. La instrucción que precede a los datos indica al modelo cómo responder:
El resultado final se genera utilizando los nombres de archivo devueltos o
Utilizando los archivos proporcionados para este tutorial, la instrucción "Información sobre perros" devolverá:
Puede ver que Granite 3.2 ha seleccionado la palabra clave correcta de la entrada, "perros", y ha buscado en los archivos de la carpeta, encontrando la palabra clave en un archivo PDF. Dado que los resultados de LLM no son puramente deterministas, es posible que obtenga resultados ligeramente diferentes con la misma instrucción o con instrucciones muy similares.
Cree, implemente y gestione potentes asistentes y agentes de IA que automaticen flujos de trabajo y procesos con IA generativa.
Construya el futuro de su empresa con soluciones de IA en las que puede confiar.
Los servicios de IA de IBM Consulting ayudan a reinventar la forma de trabajar de las empresas usando IA para la transformación.