La llamada a herramientas en modelos de lenguaje grandes (LLM) es la capacidad del LLM para interactuar con herramientas, servicios o API externos 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 local de código abierto para su uso en dispositivos personales para que los usuarios puedan ejecutar LLM directamente en sus computadoras. A diferencia de un servicio como la API de OpenAI, no es necesario tener 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 privacidad 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, lo que brinda a los usuarios una gama de herramientas para el procesamiento de 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 de 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 mediante el uso de Ollama para examinar un sistema de archivos local, una tarea que sería difícil de realizar con un LLM remoto. Muchos modelos de Ollama están disponibles para llamar a herramientas y crear agentes de IA como Mistral y Llama 3.2. Una lista completa está disponible 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 para este tutorial se puede descargar desde Github aquí.
Primero descargará ollama desde https://ollama.com/download y lo instalará para su sistema operativo. En OSX, esto se hace a través de un archivo .dmg en Linux a través de un único comando de shell y en Windows con un instalador. Es posible que necesite acceso de administrador en su máquina para ejecutar el instalador.
Puede probar que ollama está instalado correctamente abriendo una terminal o una instrucción y escribiendo:
A continuación, agregará las importaciones iniciales. Esta demostración utilizará la biblioteca python de ollama para comunicarse con ollama y la biblioteca pymupdf para leer archivos PDF en el sistema de archivos.
A continuación, extraerá el modelo que utilizará a lo largo de este tutorial. Esto descarga los pesos del modelo de ollama a su computadora local y los almacena para su uso sin necesidad de realizar llamadas remotas a la API más adelante.
Ahora definirá las herramientas a las que tendrá acceso la instancia de ollama tools. Dado que la intención de las herramientas es leer archivos y buscar imágenes en el sistema de archivos local, creará dos funciones de Python para cada una de esas herramientas. El primero se llama
Podría usar una simple coincidencia de cadenas para ver si la palabra clave está en el documento, pero debido a que ollama facilita la llamada a llms 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 porque 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 para que ollama llame, configurará 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 llamar a la función ollama:
A continuación, configure una matriz de herramientas para decirle a ollama a qué herramientas tendrá acceso y qué requieren esas herramientas. Esta es una matriz con un esquema de objeto por herramienta que le dice a la infraestructura de llamada de herramientas de ollama cómo llamar a la herramienta y qué devuelve.
En el caso de las dos herramientas que creó anteriormente, son 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. Primero, asegúrese de que ollama se esté ejecutando en su sistema:
Si Ollama se está ejecutando, esto devolverá:
Ahora pídale al usuario que ingrese. También puede codificar la entrada o recuperarla desde una interfaz de chat dependiendo de la configuración de su aplicación. El
Por ejemplo, si el usuario ingresa "Información sobre perros", esta celda imprimirá:
Ahora la consulta del usuario se pasa a la propia ollama. Los mensajes necesitan un rol para el usuario y el contenido que el usuario da entrada. Esto se pasa a ollama usando la
El
Ahora que el modelo ha generado llamadas a herramientas en la salida, ejecute todas las llamadas a herramientas con los parámetros que generó el modelo y verifique la salida. En esta aplicación, Granite 3.2 Dense también se utiliza para generar el resultado final, por lo que los Resultados de las llamadas a la herramienta se agregan 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:
A continuación, la salida final se genera utilizando los nombres de archivo devueltos o
Con los archivos proporcionados para este tutorial, la instrucción "Información sobre perros" devolverá:
Puede ver que Granite 3.2 eligió la palabra clave correcta de la entrada, "perros", y buscó 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 instrucciones muy similares.
Cree, implemente y gestione poderosos 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 pueda confiar.
Los servicios de IA de IBM Consulting ayudan a reinventar la forma en que las empresas trabajan con IA para la transformación.