Function calling (LLM)

From Systems analysis Wiki
Jump to navigation Jump to search

Function Calling (Llamada de funciones) es un mecanismo en los modelos de lenguaje grandes (LLM) que permite al modelo interactuar con herramientas externas y API, generando datos estructurados (generalmente JSON) para llamar a funciones en lugar de una respuesta de texto directa[1].

En otras palabras, el modelo determina, basándose en la solicitud del usuario, qué función de un conjunto predefinido debe ser llamada y con qué parámetros. Este mecanismo amplía el alcance de los LLM, permitiéndoles servir como una interfaz entre el lenguaje natural y acciones prácticas. Esto abre posibilidades para integrar la IA con sistemas externos: el modelo puede solicitar datos actualizados, realizar operaciones o utilizar servicios, lo cual es especialmente valioso para crear asistentes inteligentes y agentes autónomos. El uso de herramientas externas también reduce el riesgo de alucinaciones (hechos ficticios) al recurrir a fuentes confiables[2].

Historia y enfoques de implementación

Enfoques iniciales (prompting y Toolformer)

La idea de enseñar a los modelos de lenguaje a llamar a herramientas se consolidó entre 2022 y 2023. Los primeros enfoques se basaban en técnicas de prompting complejo. Así, en 2022 se propuso el esquema ReAct, donde el modelo, durante el diálogo, alternaba entre razonamiento y acciones (llamadas a herramientas), codificados en un solo texto.

Un paso clave fue la aparición del modelo Toolformer, presentado por investigadores de Meta a principios de 2023. Toolformer demostró que un LLM puede ser específicamente reentrenado para llamar de forma autónoma a herramientas externas (calculadora, motor de búsqueda, calendario) a partir de indicaciones textuales, insertando tokens especiales de llamada a API en el texto generado[3].

Soporte oficial y desarrollo

Un hito importante fue marcado por OpenAI, que en junio de 2023 implementó oficialmente el soporte para Function Calling en sus API para los modelos GPT-3.5 y GPT-4[4]. Las nuevas versiones de los modelos fueron reentrenadas para reconocer situaciones en las que una solicitud del usuario implica una llamada a una función externa y para generar un objeto JSON estructurado con precisión con los argumentos. OpenAI describió esta capacidad como "una nueva forma de conectar de manera fiable los GPT con herramientas y API externas".

Iniciativas de código abierto

Tras las implementaciones comerciales, surgieron modelos de código abierto reentrenados para generar llamadas a funciones correctas.

  • Gorilla: Un proyecto de UC Berkeley, una versión reentrenada de LLaMA, capaz de formular llamadas a miles de API diferentes. Para evaluar tales modelos, se creó el benchmark Berkeley Function-Calling Leaderboard[5].
  • ToolAlpaca, ToolLLaMA, Hermes: Series de modelos de código abierto reentrenados con ejemplos sintéticos de llamadas a funciones, a menudo generados por modelos más potentes.

Mecanismo de funcionamiento

El proceso de uso de Function Calling generalmente incluye varios pasos:

  1. Definición de funciones. El desarrollador define de antemano el conjunto de funciones disponibles para el modelo (por ejemplo, API externas) y describe sus signaturas y propósitos, generalmente en formato JSON Schema.
  2. Análisis de la solicitud. Durante el diálogo, el modelo analiza la intención del usuario y decide de forma autónoma si debe llamar a una de las funciones definidas para responder.
  3. Generación de la llamada. Si se requiere una acción, el LLM, en lugar de texto plano, genera una salida estructurada especial (por ejemplo, un JSON con el nombre de la función y los argumentos). Si no se necesita una llamada, el modelo devuelve una respuesta de texto normal.
  4. Ejecución de la función. Un programa externo (el contenedor del chatbot o agente) recibe el JSON, ejecuta la llamada real a la función especificada con los parámetros propuestos y devuelve el resultado al modelo.
  5. Formulación de la respuesta final. El modelo utiliza los datos recibidos para generar la respuesta final al usuario[4].

Para gestionar este proceso de múltiples pasos durante el entrenamiento de los modelos, se utilizan formatos de diálogo especiales, como el marcado ChatML de OpenAI, donde además de los roles de "usuario" y "asistente", se introduce el rol de "función" para transmitir los resultados de las llamadas.

Aplicaciones y ventajas

La capacidad de llamar a funciones amplía notablemente el espectro de tareas que se pueden resolver con LLM.

  • Integración con API externas. El modelo puede responder a solicitudes que requieren información actualizada llamando a servicios externos (por ejemplo, para obtener el clima, tasas de cambio, noticias).
  • Automatización de acciones del usuario. El LLM puede realizar tareas rutinarias: enviar correos electrónicos, crear eventos en el calendario, realizar pedidos en tiendas en línea.
  • Acceso a bases de datos y análisis. Las consultas en lenguaje natural pueden traducirse en llamadas a API internas o consultas SQL para extraer y analizar datos.
  • Extracción de información estructurada. El LLM puede extraer por sí mismo hechos de un texto largo (por ejemplo, nombres, fechas, direcciones) y devolverlos en forma de un array JSON estructurado, conveniente para su posterior procesamiento programático.

Problemas de seguridad

Al ampliar las capacidades de los modelos, Function Calling también introduce nuevos riesgos.

  • Salidas no verificadas. La interacción del modelo con herramientas externas debe ser protegida cuidadosamente. Si el modelo recibe un valor malicioso o erróneo de una API, puede incluirlo en su respuesta o llamar a otra función basándose en él, lo que podría llevar a consecuencias impredecibles.
  • Ataques a través de los argumentos de las funciones. Los investigadores han descubierto vulnerabilidades específicas del modo de Function Calling. En 2025, se demostró un ataque denominado "El lado oscuro de Function Calling". Su esencia consiste en proponer al modelo una "función" especial, dentro de cuyos argumentos se oculta una instrucción prohibida (un payload de jailbreak). El modelo, siguiendo el principio de llamada a función, genera argumentos que contienen contenido que viola las reglas, eludiendo así los filtros de moderación. Las pruebas mostraron que el ataque tuvo éxito en más del 90 % de los casos en seis modelos modernos, incluidos GPT-4 y Claude[2].

Para prevenir tales incidentes, se recomienda proporcionar al modelo solo herramientas de confianza, implementar la confirmación del usuario antes de ejecutar acciones críticas, y utilizar prompts "defensivos" especiales y una validación estricta de los argumentos para detectar contenido peligroso.

Enlaces externos

Bibliografía

  • Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. ACL 2025.
  • OpenAI (2023). Function Calling and Other API Updates. OpenAI Blog.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Liu, W. et al. (2024). ToolACE: Winning the Points of LLM Function Calling. arXiv:2409.00920.
  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.

Referencias

  1. «What is Function Calling with LLMs?». Hopsworks. [1]
  2. 2.0 2.1 Wu, Z. et al. «The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models». Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing, 2025. [2]
  3. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv:2302.04761, 2023. [3]
  4. 4.0 4.1 «Function calling and other API updates». OpenAI, 2023. [4]
  5. «Gorilla: Large Language Model Connected to Massive APIs». University of California, Berkeley. [5]