Toolformer (ES)

From Systems analysis wiki
Jump to navigation Jump to search

Toolformer es un enfoque para la creación de grandes modelos de lenguaje (LLM) que les permite utilizar de forma autónoma herramientas externas a través de llamadas a API[1]. Este método fue propuesto en 2023 por un grupo de investigadores de Meta AI Research en colaboración con la Universidad Pompeu Fabra (España). En su trabajo «Toolformer: Language Models Can Teach Themselves to Use Tools» (Timo Schick et al., 2023), los autores señalan una paradoja: los LLM modernos demuestran capacidades impresionantes para resolver tareas nuevas y complejas a partir de ejemplos textuales, pero a menudo son incapaces de realizar de forma fiable operaciones básicas, como contar o buscar hechos[1]. Para superar estas limitaciones, el equipo desarrolló el modelo Toolformer, que aprende por sí mismo a seleccionar e invocar herramientas externas (como motores de búsqueda, calculadoras o servicios de traducción) para mejorar la calidad en la ejecución de diversas tareas[1]. En febrero de 2023, este modelo fue presentado como un preimpreso en arXiv y, posteriormente, obtuvo reconocimiento y fue aceptado en la conferencia NeurIPS 2023[2].

Idea principal y capacidades del modelo

Toolformer es un modelo de lenguaje reentrenado capaz de decidir qué herramienta invocar, cuándo invocarla, qué parámetros pasar y cómo incorporar el resultado obtenido en el texto generado[3]. El entrenamiento se organiza en un modo autosupervisado (self-supervised): el modelo genera y evalúa por sí mismo ejemplos de uso de API, requiriendo solo un pequeño conjunto de demostraciones (literalmente, unos pocos ejemplos) para cada herramienta[3]. A diferencia de enfoques anteriores, no se requieren extensas anotaciones ni plantillas orientadas a humanos para integrar las herramientas; el modelo aprende por sí mismo cuándo y cómo aplicar una API determinada, conservando sus capacidades lingüísticas generales y sin limitarse a tareas definidas de forma estricta[1].

Los autores integraron en Toolformer una amplia gama de herramientas accesibles a través de simples llamadas a API. En la versión experimental, se utilizaron las siguientes utilidades[3]:

  • Calculadora – para realizar cálculos aritméticos.
  • Sistema de pregunta-respuesta (Q&A) – para buscar respuestas a preguntas factuales en una base de conocimiento.
  • Motores de búsqueda (2 diferentes) – para encontrar información actualizada en internet.
  • Sistema de traducción automática – para traducir textos entre idiomas.
  • Calendario – para obtener información sobre fechas y horas.

Cada herramienta se representa en formato de fragmento de texto (una etiqueta de texto especial), lo que permite al modelo insertar la llamada a la API directamente en el texto que genera[4]. Por ejemplo, el modelo puede insertar una construcción como `[Calculator(...)]` o `[Search("consulta")]` en el contexto actual, señalando la necesidad de una llamada externa. Durante la inferencia de la respuesta, Toolformer genera un símbolo especial (una flecha →), ante el cual el sistema detiene la generación y ejecuta la llamada a la API correspondiente; el resultado obtenido se inserta en el texto, y luego la generación del siguiente fragmento continúa[4]. Este mecanismo permite al modelo utilizar dinámicamente las capacidades de servicios externos, manteniéndose como un único módulo de lenguaje sin modificar su arquitectura.

Entrenamiento del modelo (metodología)

Los desarrolladores describieron el proceso de entrenamiento de Toolformer en varias etapas[4], utilizando la técnica de aprendizaje en contexto (in-context learning) para generar datos sintéticos[1]:

  1. Generación de candidatos para llamadas a API. Primero, se toman textos de un gran corpus (por ejemplo, artículos o páginas web) y se insertan artificialmente llamadas a herramientas que podrían ayudar a continuar o complementar el texto. El modelo genera estas inserciones por sí mismo mediante prompting con N ejemplos, basándose en unas pocas muestras de uso de cada API definidas manualmente[1]. Por ejemplo, el modelo podría recibir el fragmento: «En 2024, la población de la ciudad era de [QA("¿Cuál es la población de esta ciudad?") → ...] personas», donde QA() es una llamada al sistema de pregunta-respuesta que debe devolver los datos faltantes. Para cada herramienta, se seleccionan contextos adecuados; por ejemplo, para la calculadora, el modelo elige oraciones que contienen varios números y palabras como «igual» o «total»[4], donde un resultado aritmético sería realmente necesario.
  2. Ejecución de llamadas a API y enriquecimiento de los datos. A continuación, todas las llamadas generadas por el modelo se ejecutan realmente: por ejemplo, se envían consultas a un motor de búsqueda o se calculan expresiones en la calculadora. Las respuestas obtenidas se insertan de nuevo en los textos, formando versiones completas de las oraciones con inserciones del tipo `{respuesta}`[4][4]. Al mismo tiempo, se conservan las variantes «vacías» (sin la inserción de la respuesta), así como los textos originales sin ninguna llamada, para su posterior comparación.
  3. Filtrado y autoevaluación de la utilidad. En esta etapa, Toolformer evalúa de forma autónoma cuáles de las inserciones de API generadas son realmente útiles para predecir la continuación del texto[4]. Se compara la probabilidad del modelo de lenguaje de continuar el texto en tres escenarios: (a) sin ninguna llamada, (b) con una llamada a la herramienta sin el resultado insertado, y (c) con la llamada y el resultado insertado[4]. Si la adición de una respuesta de API específica aumenta la probabilidad del modelo de predecir correctamente la continuación de la frase (es decir, realmente ayuda al modelo a predecir las siguientes palabras), dicho ejemplo se considera útil. Solo las inserciones que proporcionan una ganancia en la probabilidad permanecen en el conjunto de datos. De esta manera, se descartan los casos en que la llamada a la herramienta fue redundante o no aportó nueva información. Finalmente, el modelo se reentrena (fine-tuning) con el conjunto de datos filtrado resultante, que contiene ejemplos reales de texto con llamadas a API insertadas de manera óptima[1]. El entrenamiento se realiza siguiendo el objetivo estándar del modelado de lenguaje: predecir el siguiente token de la secuencia, incluyendo los tokens que representan los resultados de las llamadas a las herramientas.

Es importante destacar que para implementar cada nueva herramienta solo se necesitaron unos pocos ejemplos manuales de su uso; a partir de ahí, la generación de datos de entrenamiento se realizó de forma automática[3]. Gracias a esto, el enfoque de Toolformer es prácticamente independiente de la disponibilidad de corpus anotados especializados y minimiza el esfuerzo de anotación de datos. El modelo aprende por sí mismo el formato y la pertinencia de las llamadas a API y, al mismo tiempo, conserva su universalidad: utiliza las herramientas solo cuando es realmente necesario para resolver la tarea planteada[1].

Resultados experimentales

Para la verificación experimental del método, los investigadores utilizaron un modelo de lenguaje ya existente, GPT-J (6,7 mil millones de parámetros), un LLM de código abierto entrenado en el corpus The Pile[4]. Este modelo fue reentrenado siguiendo el procedimiento descrito, obteniendo un Toolformer basado en GPT-J. El rendimiento del nuevo enfoque se evaluó en modo zero-shot (sin ejemplos) en una serie de tareas estándar, incluyendo la resolución de problemas matemáticos de texto, la búsqueda de hechos y la respuesta a preguntas de conocimiento (QA), así como la traducción y el rellenado de espacios en blanco en el texto. Como datos de prueba se utilizaron, por ejemplo, los conjuntos de preguntas abiertos Natural Questions y TriviaQA (para evaluar el conocimiento factual) y los conjuntos de problemas ASDiv, MAWPS y SVAMP (problemas matemáticos de texto sobre aritmética), así como los benchmarks de QA multilingües MLQA y LAMA[5].

Los resultados mostraron que Toolformer supera significativamente al modelo original del mismo tamaño en muchas tareas[1]. Además, gracias a la conexión con herramientas, un modelo relativamente pequeño (6,7 mil millones de parámetros) logró, en varios indicadores, superar a un modelo mucho más grande, GPT-3 (175 mil millones de parámetros)[1][6]. Por ejemplo, en problemas matemáticos de texto que requerían cálculos precisos, Toolformer demostró un progreso especialmente notable en comparación con los LLM convencionales, resolviendo tales problemas con precisión gracias a la calculadora, mientras que incluso GPT-3 cometía errores[1]. En las pruebas de preguntas factuales (QA), Toolformer basado en GPT-J también mostró una calidad de respuesta comparable o superior a la de GPT-3, ya que podía realizar búsquedas en internet para obtener información actualizada[1]. Al mismo tiempo, es importante señalar que el nuevo enfoque no deterioró las capacidades generales del modelo de lenguaje, como la continuación coherente de texto en datos ordinarios: Toolformer mantuvo el nivel de generación de lenguaje natural sin herramientas al mismo nivel que el GPT-J original[3]. En otras palabras, la adición de la funcionalidad de llamada a API no «quitó» al modelo sus habilidades básicas, sino que las amplió con capacidades adicionales.

Importancia del trabajo e investigaciones futuras

El desarrollo de Toolformer demostró la posibilidad fundamental de entrenar a un modelo para usar herramientas externas prácticamente sin anotación manual, mediante la generación de datos sintéticos y la autoevaluación de su utilidad. Este logro abre el camino hacia grandes modelos de lenguaje más eficientes y fiables: en lugar de aumentar los miles de millones de parámetros para memorizar hechos o reglas matemáticas, un modelo relativamente compacto puede utilizar dinámicamente recursos externos (bases de datos de conocimiento, calculadoras, servicios) para suplir sus propias deficiencias[1]. Este enfoque permite reducir el número de «alucinaciones» (cuando el modelo inventa información inexistente), aumentar la precisión de las respuestas y la actualidad del conocimiento sin una revisión total de todo el modelo. En esencia, Toolformer logra «lo mejor de ambos mundos», combinando las habilidades lingüísticas de un gran modelo con la precisión de herramientas especializadas[3].

El trabajo de Schick y sus colegas fue uno de los primeros en demostrar el dominio autónomo de API externas por parte de un LLM, y generó un gran interés en la comunidad. Han surgido investigaciones posteriores que desarrollan esta idea. Por ejemplo, en 2023 se propuso el modelo Graph-ToolFormer, que adapta los principios de Toolformer para trabajar con datos de grafos. Basándose en sugerencias generadas por ChatGPT, Graph-ToolFormer enseña a un modelo de lenguaje a invocar herramientas externas para resolver tareas de análisis de grafos (por ejemplo, obtener propiedades de un grafo, trabajar con redes de conocimiento, etc.)[7]. Otro desarrollo notable es el modelo Gorilla (Univ. of California, Berkeley, 2023), que se centra en el uso preciso de múltiples API de software de terceros[8]. Gorilla es un modelo LLaMA reentrenado en un amplio conjunto de funciones documentadas; es capaz de generar llamadas a API correctas a partir de la descripción de una tarea, con tanto éxito que en los experimentos superó incluso a GPT-4 en la precisión de la formulación de llamadas a bibliotecas y servicios[8]. En Gorilla se ha implementado la integración con un mecanismo de búsqueda de documentación, lo que permite actualizar la información sobre cambios en las API y reduce significativamente los errores y las alucinaciones al usar herramientas[8]. Estos trabajos confirman la importancia de la dirección iniciada por Toolformer: la combinación de LLM con herramientas externas se considera un camino prometedor hacia la creación de sistemas de IA más potentes y fiables.

Se observa que la idea de integrar herramientas en los modelos de lenguaje se está desarrollando no solo en la investigación, sino también en la industria. Así, en marzo de 2023, la empresa OpenAI presentó un sistema de plugins para ChatGPT, una interfaz especial que permite conectar el modelo a servicios externos (navegador web, bases de conocimiento, motores de cálculo, etc.) para obtener información actualizada y realizar cálculos[9]. Los usuarios llevaban tiempo solicitando una funcionalidad similar, y la aparición de los plugins implementa en la práctica un concepto similar al de Toolformer: el modelo se complementa con «herramientas» para ampliar sus capacidades al resolver diversas solicitudes de los usuarios[9]. De este modo, Toolformer se inscribe en la tendencia general del desarrollo de la IA, donde los grandes modelos de lenguaje se convierten en una plataforma capaz de utilizar conocimientos y cálculos externos bajo demanda. La investigación realizada por el equipo de Meta AI y la UPF sentó una base importante para esta dirección, mostrando cómo los LLM pueden aprender a trabajar con herramientas prácticamente sin instrucción manual, acercándose así a un asistente intelectual más universal y seguro[1][3].

Enlaces

Bibliografía

  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS 2023. OpenReview.
  • Li, M. et al. (2023). API-Bank: A Comprehensive Benchmark for Tool-Augmented LLMs. arXiv:2304.08244.
  • Zhang, T. et al. (2023). Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT. arXiv:2304.11116.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Qin, Y. et al. (2023). ToolLLM: Facilitating Large Language Models to Master 16 000+ Real-World APIs. arXiv:2307.16789.
  • Li, Y. et al. (2024). Tool Learning with Large Language Models: A Survey. arXiv:2405.17935.
  • OpenAI (2023). ChatGPT Plugins. OpenAI Blog.
  • Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Schick, T. et al. (2023). Meta AI & UPF’s Toolformer: Enabling Language Models to Teach Themselves to Use External Tools. Synced Review.


Referencias

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 Schick, T. et al. «Meta AI & UPF's Toolformer: Enabling Language Models to Teach Themselves to Use External Tools». Synced. [1]
  2. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». OpenReview. [2]
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv. [3]
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 OXEN AI. «Arxiv Dives Toolformer: Language models can teach themselves to use tools». Medium. [4]
  5. «Toolformer: Language Models Can Teach Themselves to Use Tools». Papers With Code. [5]
  6. Brown, Tom B. et al. «Language Models are Few-Shot Learners». arXiv. [6]
  7. Zhang, Tingkai et al. «Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT». arXiv. [7]
  8. 8.0 8.1 8.2 Patil, Shishir G. et al. «Gorilla: Large Language Model Connected with Massive APIs». arXiv. [8]
  9. 9.0 9.1 «ChatGPT plugins». OpenAI. [9]