# Function Calling: cómo hacer que una IA utilice APIs y herramientas

**Categoría:** Inteligencia artificial · **Nivel:** Intermedio · **Lectura:** 16 min
**Publicada:** 2026-07-28 · **Actualizada:** 2026-07-28 · **Autoría:** Underc0de
**Versión HTML (canónica):** https://underc0de.org/guias/inteligencia-artificial/function-calling-como-una-ia-usa-apis-y-herramientas/

## Respuesta rápida

Un modelo de lenguaje, por sí solo, **solo genera texto**: no puede saber el tiempo de hoy, consultar tu base de datos, enviar un correo ni hacer un cálculo fiable. El **function calling** (o *tool use*, «uso de herramientas») es el mecanismo que le da esa capacidad. La idea, que sorprende por lo elegante, es esta: le describís al modelo **qué herramientas** tiene disponibles —su nombre, qué hacen y qué parámetros necesitan— y, cuando para responder haga falta una de ellas, el modelo **no la ejecuta**: devuelve un mensaje estructurado diciendo «quiero llamar a obtener_clima con la ciudad "Buenos Aires"». Tu código recibe esa petición, **ejecuta la función de verdad** (llama a la API del clima), y le **devuelve el resultado** al modelo, que entonces redacta la respuesta final para el usuario con ese dato real. El punto crucial de seguridad y diseño: **el modelo solo pide, tu código decide y ejecuta**. El modelo nunca toca tus sistemas directamente; propone la llamada y tú controlás si se hace y cómo. Las herramientas se describen normalmente con **JSON Schema** (nombre, descripción y parámetros con sus tipos), y una buena descripción es clave para que el modelo elija bien. Esto es lo que transforma un chatbot que *habla* en una aplicación que *actúa*: reservar, consultar, calcular, buscar. Y es el **cimiento de los agentes de IA**: un agente es, en esencia, un modelo que en un bucle decide qué herramienta usar, ve el resultado y decide el siguiente paso hasta cumplir un objetivo. Sin function calling no hay agentes; con él, la IA se conecta al mundo real.

## Qué es function calling

El **function calling** es la capacidad de un modelo de lenguaje de **solicitar el uso de herramientas externas** para completar una tarea. El nombre puede confundir: el modelo no *ejecuta* funciones. Lo que hace es **reconocer** que, para responder bien, necesita algo que él no tiene, y **pedir** que se ejecute la herramienta adecuada con los datos correctos.

> **El modelo pide; tu código ejecuta**
>
> Esta separación es el corazón del mecanismo. Le das al modelo un **catálogo de herramientas** (funciones que *tu* aplicación sabe ejecutar: consultar el clima, buscar un pedido, sumar cifras). Cuando el modelo decide que necesita una, devuelve una **petición estructurada** —qué herramienta y con qué argumentos—, pero **no pasa nada** hasta que tu código la atiende. Tu aplicación ejecuta la función real, obtiene el resultado y se lo devuelve al modelo. Así, el modelo aporta el *razonamiento* (qué hace falta y con qué datos) y tu código aporta la *ejecución* (hacerlo de verdad, de forma controlada). El modelo nunca toca tus sistemas por su cuenta.

## El ciclo de llamada

El function calling funciona como un **ciclo** de ida y vuelta entre tu aplicación y el modelo:

1. **Describir las herramientas.** La app envía la pregunta del usuario *y* el catálogo de herramientas disponibles (nombre, descripción, parámetros).
2. **El modelo decide.** Si puede responder solo, lo hace. Si necesita una herramienta, devuelve una petición: qué función y con qué argumentos.
3. **La app ejecuta.** Tu código —no el modelo— ejecuta la función real: llama a la API, consulta la base de datos, hace la acción.
4. **Devolver el resultado.** La app le pasa al modelo lo que devolvió la función.
5. **El modelo responde.** Con ese dato real, redacta la respuesta final para el usuario.

> **Atención**
>
> El modelo elige qué herramienta usar y qué argumentos pasarle **solo a partir de la descripción** que le das. Por eso, describir cada herramienta con claridad —un nombre significativo, una descripción precisa de *cuándo* usarla y parámetros bien tipados con [JSON Schema](https://json-schema.org/)— es lo que separa un function calling que funciona de uno que llama a la herramienta equivocada o con datos mal formados. Una descripción vaga como «busca cosas» hace que el modelo la use mal; una precisa como «busca un pedido por su número de identificación; úsala cuando el usuario pregunte por el estado de un pedido» lo guía. Es, en esencia, escribir un buen *prompt* para cada herramienta.

## La base de los agentes

El function calling es la pieza que convierte la IA de **conversacional** en **accional**. Y es, literalmente, el **cimiento de los agentes de IA**.

> **Un agente es function calling en bucle**
>
> Un [agente de IA](../agentes-de-ia-y-model-context-protocol/index.md) no es magia: es un modelo que, dado un objetivo, entra en un **bucle** de function calling. Decide qué herramienta usar, ve el resultado, decide la siguiente, ve ese resultado, y así hasta cumplir la meta. «Reservá una mesa para cuatro el viernes» se convierte en: consultar disponibilidad (herramienta 1), ver el resultado, hacer la reserva (herramienta 2), confirmar. El modelo **orquesta** los pasos; las herramientas **hacen** el trabajo. Por eso el function calling y su evolución estandarizada —el [Model Context Protocol](../agentes-de-ia-y-model-context-protocol/index.md), que define una forma común de exponer herramientas— son la base de todo lo que hoy se llama «agentes». Y por eso la **seguridad** importa tanto: darle a un modelo herramientas que *actúan* (borrar, pagar, enviar) exige controlar qué puede ejecutar y con qué límites, como se ve en [seguridad de agentes y aplicaciones de IA](../seguridad-de-agentes-y-aplicaciones-de-ia/index.md).

## Errores frecuentes

- **Creer que el modelo ejecuta las funciones.** Solo pide; tu código ejecuta y controla qué se hace.
- **Describir las herramientas de forma vaga.** El modelo elige por la descripción; una imprecisa provoca llamadas erróneas.
- **No validar los argumentos que propone el modelo.** Pueden venir mal formados o fuera de rango; validar antes de ejecutar.
- **Dar herramientas peligrosas sin límites.** Acciones que borran, pagan o envían necesitan controles y confirmación.
- **No manejar los errores de la herramienta.** Si la API falla, hay que devolver el error al modelo, no romper el ciclo.
- **Confiar en el resultado sin comprobar.** El modelo puede interpretar mal lo que devuelve la herramienta.
- **Exponer demasiadas herramientas a la vez.** Un catálogo enorme confunde al modelo; dar solo las relevantes.

## Preguntas frecuentes

**¿Qué es el function calling en inteligencia artificial?**
El function calling, también conocido como uso de herramientas, es un mecanismo que permite a un modelo de lenguaje solicitar la utilización de herramientas externas para completar una tarea que no podría resolver por sí solo, ya que un modelo de lenguaje, en esencia, únicamente sabe generar texto. Por sí mismo, un modelo no puede consultar información actual como el tiempo de hoy, acceder a una base de datos, enviar un correo electrónico, realizar un cálculo fiable ni ejecutar acciones en el mundo real, porque su capacidad se limita a producir texto a partir de patrones aprendidos. El function calling resuelve esta limitación de una forma elegante. Se le describe al modelo un conjunto de herramientas disponibles, indicando para cada una su nombre, qué hace y qué parámetros necesita, y cuando el modelo determina que para responder correctamente necesita una de esas herramientas, no la ejecuta él mismo, sino que devuelve un mensaje estructurado indicando qué herramienta quiere usar y con qué argumentos. Por ejemplo, ante la pregunta sobre el tiempo en una ciudad, el modelo puede responder pidiendo que se llame a una función de obtención del clima con esa ciudad como parámetro. A partir de ahí, es la aplicación la que ejecuta realmente la función correspondiente, obtiene el resultado y se lo devuelve al modelo, que entonces redacta la respuesta final para el usuario incorporando ese dato real. El aspecto más importante de este mecanismo, tanto por diseño como por seguridad, es que el modelo solo propone la llamada, mientras que el código de la aplicación decide si se ejecuta y la ejecuta; el modelo nunca accede directamente a los sistemas. Gracias al function calling, el modelo aporta el razonamiento sobre qué se necesita y con qué datos, y la aplicación aporta la ejecución controlada. Esto es lo que transforma un chatbot que simplemente conversa en una aplicación que puede actuar, consultar información en tiempo real y realizar tareas, y constituye además la base sobre la que se construyen los agentes de inteligencia artificial.

**¿El modelo ejecuta las funciones directamente?**
No, el modelo no ejecuta las funciones directamente, y este es probablemente el punto más importante y a la vez más malentendido del function calling. A pesar de que el nombre pueda sugerir que el modelo llama y ejecuta funciones, lo que realmente ocurre es que el modelo se limita a solicitar o proponer la ejecución de una herramienta, pero es el código de la aplicación quien la ejecuta de verdad. El flujo es el siguiente: cuando el modelo, al procesar una pregunta, determina que necesita usar una herramienta para responder, devuelve un mensaje estructurado que indica qué herramienta quiere usar y con qué argumentos, pero en ese momento no sucede nada más; la herramienta no se ejecuta hasta que la aplicación recibe esa petición y decide atenderla. Es entonces la aplicación la que ejecuta la función real, por ejemplo llamando a una interfaz de programación, consultando una base de datos o realizando la acción solicitada, y después devuelve el resultado al modelo para que este redacte la respuesta final. Esta separación entre proponer y ejecutar es fundamental por varias razones. En primer lugar, por seguridad y control, ya que significa que el modelo nunca accede por su cuenta a los sistemas, datos o servicios, sino que todo pasa por el código de la aplicación, que puede validar la petición, comprobar los argumentos, aplicar permisos, exigir confirmaciones para acciones sensibles o rechazar la ejecución si algo no es correcto. En segundo lugar, porque permite mantener la responsabilidad de las acciones peligrosas o importantes en manos del desarrollador y no del modelo, que podría equivocarse o ser manipulado. En tercer lugar, porque hace posible manejar adecuadamente los errores, reintentar o registrar lo que ocurre. En definitiva, el modelo aporta la inteligencia de decidir qué herramienta hace falta y con qué datos, mientras que la aplicación conserva siempre el control sobre qué se ejecuta realmente y cómo, lo cual es esencial para construir aplicaciones de inteligencia artificial seguras y fiables.

**¿Cómo se describen las herramientas al modelo?**
Las herramientas se describen al modelo mediante una especie de catálogo o lista en el que cada herramienta se define con tres elementos fundamentales: un nombre, una descripción de para qué sirve y cuándo debe usarse, y una especificación de los parámetros que necesita junto con sus tipos. Esta descripción se proporciona habitualmente en un formato estructurado, siendo muy común el uso de un esquema estandarizado para describir datos, que permite indicar de forma precisa qué argumentos acepta cada función, de qué tipo son, cuáles son obligatorios y cuáles opcionales. Por ejemplo, una herramienta para consultar el estado de un pedido tendría un nombre identificativo, una descripción que explique que sirve para buscar un pedido y en qué situaciones conviene usarla, y un parámetro para el número de identificación del pedido definido como texto o número. La razón por la que esta descripción es tan importante es que el modelo elige qué herramienta usar y qué argumentos pasarle basándose únicamente en la información que se le ha dado sobre ellas; el modelo no ve el código de las funciones ni sabe lo que hacen internamente, solo dispone de esas descripciones. Por ello, describir bien las herramientas es una parte decisiva del éxito del function calling. Una descripción vaga o ambigua, como decir simplemente que una herramienta busca cosas, hace probable que el modelo la use en momentos inadecuados o le pase argumentos incorrectos, mientras que una descripción precisa que explique claramente qué hace la herramienta, en qué circunstancias debe emplearse y qué parámetros necesita, guía al modelo para que la utilice de forma acertada. En cierto sentido, redactar la descripción de cada herramienta es como escribir un buen prompt para ella, y merece el mismo cuidado. Además, conviene definir bien los tipos de los parámetros para reducir la probabilidad de que el modelo genere argumentos mal formados, y aun así es recomendable que la aplicación valide los argumentos recibidos antes de ejecutar la función, ya que el modelo puede cometer errores. En resumen, la calidad y claridad de las descripciones de las herramientas determinan en gran medida lo bien que funcionará el sistema.

**¿Para qué sirve el function calling en la práctica?**
El function calling sirve en la práctica para transformar un modelo de lenguaje, que por sí solo únicamente genera texto, en una aplicación capaz de acceder a información real y de realizar acciones, ampliando enormemente lo que se puede construir con inteligencia artificial. Sus aplicaciones prácticas son muy variadas. Permite que un asistente consulte información en tiempo real o específica que el modelo no posee, como el tiempo actual, el precio de un producto, el estado de un pedido, la disponibilidad de una cita o datos guardados en la base de datos de una empresa, de modo que el modelo pueda responder con información verdadera y actualizada en lugar de con lo que recuerda, que podría estar desfasado o ser inventado. Permite también realizar cálculos u operaciones fiables delegándolos en herramientas especializadas, en lugar de confiar en el modelo para tareas donde puede equivocarse. Y, muy importante, permite ejecutar acciones en el mundo real o en los sistemas de una organización, como crear una reserva, enviar un mensaje, registrar una incidencia, actualizar un registro o iniciar un proceso, siempre bajo el control del código de la aplicación. Gracias a ello, se pueden construir asistentes de atención al cliente que consultan y gestionan pedidos, asistentes personales que agendan citas o envían recordatorios, herramientas internas que buscan y actualizan información corporativa, o sistemas que integran la inteligencia artificial con servicios externos a través de sus interfaces de programación. En todos estos casos, el patrón es el mismo: el modelo entiende la petición del usuario en lenguaje natural, decide qué herramientas necesita y con qué datos, la aplicación las ejecuta de forma controlada, y el modelo redacta una respuesta natural con los resultados. Esto convierte al modelo en un intermediario inteligente entre el lenguaje humano y los sistemas informáticos, capaz de traducir peticiones expresadas de forma libre en llamadas concretas a funciones y de presentar los resultados de manera comprensible. Además, el function calling es la base sobre la que se construyen los agentes de inteligencia artificial, que encadenan múltiples llamadas a herramientas para cumplir objetivos más complejos, por lo que dominarlo es un paso clave para pasar de usar la inteligencia artificial como un simple generador de texto a integrarla de forma útil en aplicaciones reales.

**¿Qué relación tiene el function calling con los agentes de IA?**
El function calling tiene una relación fundamental con los agentes de inteligencia artificial, hasta el punto de que constituye su cimiento técnico: un agente de inteligencia artificial es, en esencia, un modelo de lenguaje que utiliza el function calling de forma repetida y en bucle para alcanzar un objetivo. Para entender esta relación conviene recordar que el function calling permite a un modelo solicitar el uso de una herramienta, recibir su resultado y continuar a partir de él. Un agente lleva esta idea un paso más allá al aplicarla de manera iterativa: dado un objetivo, el modelo entra en un ciclo en el que decide qué herramienta usar primero, la aplicación la ejecuta y le devuelve el resultado, el modelo analiza ese resultado y decide cuál es el siguiente paso, que puede ser usar otra herramienta, y así sucesivamente hasta que considera cumplida la meta. Por ejemplo, ante el objetivo de reservar una mesa para una fecha, el agente podría primero usar una herramienta para consultar la disponibilidad, examinar el resultado, después usar otra herramienta para efectuar la reserva y finalmente confirmar al usuario. En este esquema, el modelo actúa como el orquestador que razona y decide la secuencia de acciones, mientras que las herramientas, invocadas mediante function calling y ejecutadas por la aplicación, son las que realizan el trabajo real. Por eso se dice que sin function calling no habría agentes, ya que es el mecanismo que les permite pasar de generar texto a interactuar con sistemas y actuar sobre el mundo de forma encadenada. Existe además una evolución estandarizada de esta idea, que consiste en definir una forma común y estándar de exponer y describir herramientas a los modelos, lo que facilita construir agentes que puedan usar herramientas de distintos orígenes de manera uniforme. Esta relación tan estrecha también explica por qué la seguridad es especialmente importante en los agentes: al encadenar acciones de forma autónoma y usar herramientas que pueden modificar datos, enviar información o realizar operaciones sensibles, es imprescindible controlar cuidadosamente qué herramientas se ponen a disposición del agente, con qué límites y con qué salvaguardas, para evitar que un error o una manipulación deriven en acciones no deseadas.

**¿Es seguro dar herramientas a un modelo de IA?**
Dar herramientas a un modelo de inteligencia artificial mediante function calling puede ser seguro, pero exige tomar precauciones importantes, y el nivel de riesgo depende directamente de qué tipo de herramientas se le proporcionan y de los controles que se establezcan alrededor de su ejecución. El principio de partida que juega a favor de la seguridad es que, en el function calling, el modelo nunca ejecuta las herramientas por sí mismo, sino que solo propone su uso, y es el código de la aplicación quien decide si las ejecuta y las ejecuta realmente; esto significa que el desarrollador conserva siempre el control y puede interponer todas las validaciones y salvaguardas que considere necesarias entre la propuesta del modelo y la acción efectiva. Sin embargo, ese control hay que ejercerlo activamente, ya que dar herramientas a un modelo también introduce riesgos que conviene gestionar. En primer lugar, las herramientas que solo consultan información, como leer el clima o buscar un dato, son mucho menos peligrosas que las que realizan acciones con consecuencias, como borrar registros, realizar pagos, enviar mensajes o modificar datos, por lo que estas últimas requieren controles más estrictos, como validaciones, límites, registros de auditoría y, en muchos casos, una confirmación humana antes de ejecutarse. En segundo lugar, es imprescindible validar los argumentos que propone el modelo antes de ejecutarlos, porque pueden venir mal formados, fuera de rango o ser inadecuados, y no deben pasarse a ciegas a la función. En tercer lugar, hay que aplicar el principio de mínimo privilegio, poniendo a disposición del modelo solo las herramientas estrictamente necesarias y con los permisos más acotados posibles, para reducir el alcance de un posible error o abuso. En cuarto lugar, conviene tener en cuenta el riesgo de que entradas maliciosas manipulen al modelo para que intente usar las herramientas de forma no deseada, por lo que la aplicación no debe confiar ciegamente en las peticiones del modelo. En definitiva, sí es posible dar herramientas a un modelo de forma segura, pero solo si se diseña el sistema con estos controles, tratando al modelo como un componente capaz pero falible y potencialmente manipulable, y manteniendo siempre en el código de la aplicación la autoridad final sobre qué acciones se ejecutan realmente.

## Fuentes

Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.

### Aportes de la comunidad Underc0de

1. **Underc0de, foro.** [Sección Inteligencia artificial](https://underc0de.org/foro/inteligencia-artificial/). Aplicaciones con LLM.
2. **Underc0de, foro.** [Sección Programación](https://underc0de.org/foro/programacion/). Integración de APIs.

### Documentación oficial

1. **OpenAI.** [Function calling](https://platform.openai.com/docs/guides/function-calling). Documentación de referencia.
2. **Anthropic.** [Tool use](https://docs.anthropic.com/en/docs/build-with-claude/tool-use). Uso de herramientas con Claude.
3. **Google.** [Function calling with Gemini](https://ai.google.dev/gemini-api/docs/function-calling). Function calling en Gemini.
4. **JSON Schema.** [JSON Schema](https://json-schema.org/). El formato para describir los parámetros de las herramientas.

## Guías relacionadas

- [Agentes de IA y MCP](../agentes-de-ia-y-model-context-protocol/index.md)
- [Crear un chatbot con IA](../como-crear-un-chatbot-con-inteligencia-artificial/index.md)
- [Seguridad de agentes de IA](../seguridad-de-agentes-y-aplicaciones-de-ia/index.md)
- [Crear y consumir una API REST](../../programacion/como-crear-y-consumir-una-api-rest/index.md)
- [Índice de Inteligencia artificial](../index.md)
