Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Informática# Aprendizaje automático# Inteligencia artificial# Computación y lenguaje

Presentando un nuevo modelo para llamar funciones en modelos de lenguaje

Un nuevo modelo mejora las habilidades de llamada a funciones de los modelos de lenguaje para tareas complejas.

― 7 minilectura


Nuevo modelo mejora laNuevo modelo mejora lallamada a funciones.del mundo real.modelos de lenguaje para aplicacionesMejoras en la llamada de funciones en
Tabla de contenidos

Los modelos de lenguaje grandes (LLMs) han llamado mucho la atención porque pueden manejar tareas complejas, como programar, razonar e interactuar con diferentes tipos de medios. Para hacer que estos modelos sean aún más útiles, necesitan aprender a usar herramientas externas y APIs para completar tareas complicadas. Esta habilidad se llama llamada de funciones.

La llamada de funciones permite a los LLMs acceder a información actual y específica de ciertos campos, y les ayuda a obtener ayuda de herramientas que pueden realizar tareas específicas, como calcular números o ejecutar código. Aunque se ha avanzado en enseñar a los LLMs a usar la llamada de funciones, todavía no hay muchos modelos abiertos que funcionen tan bien como modelos propietarios como GPT o Claude.

Para abordar este problema, presentamos un nuevo modelo que tiene habilidades de llamada de funciones. Este modelo se entrena usando un método llamado Aprendizaje multitarea, que combina diferentes tareas relacionadas con la llamada de funciones. Evaluamos este modelo contra muchos otros y encontramos que funciona muy bien en una variedad de situaciones.

Llamada de Funciones en Modelos de Lenguaje

La llamada de funciones ayuda a los modelos de lenguaje a usar herramientas y recursos fuera de su propio conocimiento. Esto es crucial porque muchas piezas importantes de datos se almacenan en formatos específicos a los que los LLMs no pueden acceder directamente. Usando la llamada de funciones, los LLMs pueden evitar "alucinaciones", o respuestas falsas, al obtener información precisa y relevante.

A medida que los LLMs se aplican más a problemas del mundo real, la necesidad de que actúen como agentes inteligentes se vuelve cada vez más importante. Para cumplir con este rol, los LLMs necesitan ser buenos en dos capacidades clave: razonamiento y planificación, y llamada de funciones.

Importancia de la Llamada de Funciones

La llamada de funciones puede expandir significativamente lo que los modelos de lenguaje pueden hacer. Por ejemplo, pueden resolver problemas que requieren información en tiempo real, matemáticas complejas o habilidades de programación. Investigaciones recientes muestran que los LLMs pueden mejorar sus habilidades al aprender a hacer llamadas de funciones de manera más efectiva.

Para enseñar a los LLMs a llamar funciones con éxito, se han desarrollado varias técnicas. Algunos enfoques se centran en diferentes formas de dar indicaciones al modelo, mientras que otros entrenan al modelo para producir llamadas de funciones directamente.

Hay dos categorías principales de modelos respecto a la llamada de funciones: modelos preentrenados capaces de llamar funciones y modelos que están específicamente afinados para esta tarea. Los modelos preentrenados utilizan una combinación de aprendizaje supervisado y ajuste fino, pero los detalles de los datos que utilizan a menudo no están disponibles. Por otro lado, los modelos especializados para la llamada de funciones dependen principalmente de datos sintéticos generados a partir de modelos líderes.

Resumen del Nuevo Modelo

El nuevo modelo que presentamos está diseñado para ser capaz de realizar llamadas de funciones. Se entrena en varias tareas relacionadas con la llamada de funciones, como detectar nombres de funciones, identificar parámetros y generar respuestas. Usamos un enfoque de entrenamiento multitarea donde los mismos datos se presentan en diferentes formatos para ayudar al modelo a aprender de manera efectiva.

El modelo se evalúa utilizando varios benchmarks y ha mostrado un rendimiento excelente, especialmente en el Berkeley Function Calling Leaderboard.

Entrenando el Modelo

Para entrenar nuestro modelo, utilizamos múltiples conjuntos de datos relacionados con tareas de llamada de funciones. Nos enfocamos en tareas que requieren diferentes habilidades para que el modelo aprenda, agrupándolas en tareas de alto y bajo nivel.

Las tareas de alto nivel son más complejas y requieren que el modelo genere múltiples llamadas de funciones. Estas incluyen:

  1. Llamada de Funciones Anidadas: Esto implica llamar a una función donde la salida se usa como entrada para otra función.

  2. Cadenas de Funciones: Aquí, se pueden llamar múltiples funciones para responder a una consulta, pero no están anidadas.

  3. Funciones Paralelas: Esto requiere que el modelo llame a la misma función varias veces con diferentes parámetros.

Por otro lado, las tareas de bajo nivel son más simples e incluyen:

  1. Siguiente Mejor Función: Elegir la función más adecuada de una lista según la entrada del usuario.

  2. Detección de Nombres de Funciones: Listar los nombres de funciones necesarias para responder a una consulta.

  3. Detección de Parámetros y Valores: Identificar los parámetros relevantes para las consultas de los usuarios.

Además, la Generación de Respuestas es una tarea importante donde el modelo debe crear respuestas en lenguaje natural basadas en las llamadas de funciones realizadas.

Preparación y Unificación de Datos

Para crear un conjunto de datos de entrenamiento sólido, juntamos múltiples conjuntos de datos y los unificamos en un solo formato. Este proceso involucró convertir la información en formato JSON, que es fácil de leer y usado ampliamente en programación. Cada función se escribió de tal manera que incluía su nombre, descripción y parámetros.

Esta unificación permite que el modelo aprenda de tareas diversas sin la confusión de formatos variados. Mantener los datos consistentes es clave para un entrenamiento exitoso.

Evaluando el Modelo

Después de entrenar el modelo, realizamos evaluaciones exhaustivas usando varios benchmarks para probar su rendimiento. La evaluación es esencial para ver qué tan bien generaliza el modelo a tareas que no ha visto antes.

Usamos varios conjuntos de datos para la evaluación, incluyendo el Berkeley Function Calling Leaderboard y otros que evalúan diferentes aspectos de las habilidades de llamada de funciones.

Resultados de la Evaluación

Los resultados de nuestras evaluaciones muestran que el nuevo modelo se desempeña muy bien en comparación con otros modelos. En particular, ocupa un lugar alto en el Berkeley Function Calling Leaderboard y muestra un rendimiento sólido en diferentes tareas.

Uno de los hallazgos significativos es que nuestro modelo se desempeña de manera comparable a modelos propietarios más grandes, a pesar de ser más pequeño en tamaño. Esto indica que se puede lograr eficiencia y efectividad sin necesidad de modelos masivos.

Desafíos y Limitaciones

Aunque el modelo muestra excelentes capacidades, hay desafíos a considerar. Algunas áreas específicas, como la llamada de funciones en Java y JavaScript, resultaron difíciles debido a los requisitos únicos de esos lenguajes de programación. Además, ciertas tareas enfrentaron problemas debido a la falta de APIs o limitaciones en su llamada.

Las métricas de evaluación difieren entre varios conjuntos de datos, lo que puede complicar las comparaciones entre modelos. Algunos conjuntos de datos tienen información faltante o requisitos diferentes, lo que lleva a resultados variados.

Direcciones Futuras

Mirando hacia el futuro, hay muchas maneras de mejorar aún más el modelo. Una idea es incluir especificaciones más detalladas para cada función para mejorar su comprensión. Explorar opciones para mayores longitudes de contexto podría permitir que el modelo considere más información durante las llamadas de funciones.

Además, la investigación continua en ajuste de instrucciones podría ayudar a refinar la capacidad del modelo para entender mejor las consultas de los usuarios y producir llamadas de funciones más precisas.

Conclusión

El nuevo modelo representa un avance significativo en las capacidades de llamada de funciones para modelos de lenguaje. Con su enfoque de aprendizaje multitarea y un fuerte rendimiento en varios benchmarks, sirve como una herramienta valiosa para desarrollar sistemas inteligentes que pueden abordar problemas del mundo real. Al aprovechar tanto conjuntos de datos existentes como nuevos métodos de entrenamiento, este modelo puede mejorar la efectividad de los modelos de lenguaje en hacer llamadas y respuestas de funciones precisas, allanando el camino para futuras innovaciones en el campo.

Fuente original

Título: Granite-Function Calling Model: Introducing Function Calling Abilities via Multi-task Learning of Granular Tasks

Resumen: Large language models (LLMs) have recently shown tremendous promise in serving as the backbone to agentic systems, as demonstrated by their performance in multi-faceted, challenging benchmarks like SWE-Bench and Agent-Bench. However, to realize the true potential of LLMs as autonomous agents, they must learn to identify, call, and interact with external tools and application program interfaces (APIs) to complete complex tasks. These tasks together are termed function calling. Endowing LLMs with function calling abilities leads to a myriad of advantages, such as access to current and domain-specific information in databases and knowledge sources, and the ability to outsource tasks that can be reliably performed by tools, e.g., a Python interpreter or calculator. While there has been significant progress in function calling with LLMs, there is still a dearth of open models that perform on par with proprietary LLMs like GPT, Claude, and Gemini. Therefore, in this work, we introduce the GRANITE-20B-FUNCTIONCALLING model under an Apache 2.0 license. The model is trained using a multi-task training approach on seven fundamental tasks encompassed in function calling, those being Nested Function Calling, Function Chaining, Parallel Functions, Function Name Detection, Parameter-Value Pair Detection, Next-Best Function, and Response Generation. We present a comprehensive evaluation on multiple out-of-domain datasets comparing GRANITE-20B-FUNCTIONCALLING to more than 15 other best proprietary and open models. GRANITE-20B-FUNCTIONCALLING provides the best performance among all open models on the Berkeley Function Calling Leaderboard and fourth overall. As a result of the diverse tasks and datasets used for training our model, we show that GRANITE-20B-FUNCTIONCALLING has better generalizability on multiple tasks in seven different evaluation datasets.

Autores: Ibrahim Abdelaziz, Kinjal Basu, Mayank Agarwal, Sadhana Kumaravel, Matthew Stallone, Rameswar Panda, Yara Rizk, GP Bhargav, Maxwell Crouse, Chulaka Gunasekara, Shajith Ikbal, Sachin Joshi, Hima Karanam, Vineet Kumar, Asim Munawar, Sumit Neelam, Dinesh Raghu, Udit Sharma, Adriana Meza Soria, Dheeraj Sreedhar, Praveen Venkateswaran, Merve Unuvar, David Cox, Salim Roukos, Luis Lastras, Pavan Kapanipathi

Última actualización: 2024-06-27 00:00:00

Idioma: English

Fuente URL: https://arxiv.org/abs/2407.00121

Fuente PDF: https://arxiv.org/pdf/2407.00121

Licencia: https://creativecommons.org/licenses/by/4.0/

Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.

Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.

Más de autores

Artículos similares