Skip to main content

Llamada a Funciones (Function Calling / Tool Calling)

PARA AGENTE IAChatGPTClaude

Protocolo técnico y estándar de interacción entre LLM y software externo. En lugar de texto libre, el modelo devuelve un JSON válido con el nombre de la función y argumentos tipados según el esquema JSON Schema, permitiendo al backend ejecutar acciones de manera determinista en APIs reales.

1. Visión general del concepto y problema sistémico

El modelo de lenguaje está encerrado en su propio contexto: no conoce la hora exacta actual, no puede retirar fondos de una cuenta o verificar el estado de un contenedor en Docker.

Sin un mecanismo de interacción con el código, el chatbot solo podría simular acciones, devolviendo texto vago: “He revisado su saldo, hay $50” (incluso si el saldo es $0).

Function Calling (Llamada a funciones o Tool Calling) transforma al generador de texto en un orquestador de sistemas. El modelo analiza el prompt, entiende que le faltan datos y en lugar de texto genera un JSON legible por máquina:

{
  "name": "fetch_user_balance",
  "arguments": "{\"account_id\": \"ACC-9481\"}"
}

Modelo mental: si LLM es el cerebro, Function Calling son los impulsos nerviosos que envían comandos a los músculos (su código y API) para ejecutar una acción física.

┌─────────────────────────────────────────────────────────────┐
│                 ARQUITECTURA FUNCTION CALLING               │
├─────────────────────────────────────────────────────────────┤
│ 1. SOLICITUD DEL USUARIO:                                   │
│    «¿Cuál es el clima en Lviv?»                             │
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│                          ▼ Solicitud a LLM (junto con el esquema) │
├─────────────────────────────────────────────────────────────┤
│ 2. RESPUESTA DE LLM (finish_reason: "tool_calls"):         │
│    { "name": "get_weather", "args": { "city": "Lviv" } }  │
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│                          ▼ Backend ejecuta la solicitud API real │
├─────────────────────────────────────────────────────────────┤
│ 3. SU SERVIDOR ➔ OpenWeatherMap ➔ Recibe { temp: 18, rain: 0}│
├─────────────────────────────────────────────────────────────┤
│                          │                                  │
│                          ▼ Envío del resultado de vuelta a LLM │
├─────────────────────────────────────────────────────────────┤
│ 4. RESPUESTA FINAL AL HUMANO:                               │
│    «En Lviv ahora hay +18°C, sin precipitaciones, ¡que tenga un buen día!» │
└─────────────────────────────────────────────────────────────┘

2. Taxonomía arquitectónica y modelo mental

Así es como se registra una herramienta en el estándar OpenAI / Anthropic Tool Calling:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o",
    "messages": [
      {"role": "user", "content": "Bloquea la tarjeta del usuario 5501"}
    ],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "block_payment_card",
          "description": "Bloqueo seguro de la tarjeta bancaria del usuario en caso de pérdida",
          "parameters": {
            "type": "object",
            "properties": {
              "card_id": {
                "type": "integer",
                "description": "Identificador único de la tarjeta en el sistema"
              },
              "reason": {
                "type": "string",
                "enum": ["lost", "stolen", "fraud"],
                "description": "Razón del bloqueo"
              }
            },
            "required": ["card_id", "reason"]
          }
        }
      }
    ],
    "tool_choice": "auto"
  }'

Lo que devuelve el modelo:

{
  "role": "assistant",
  "content": null,
  "tool_calls": [
    {
      "id": "call_abc123",
      "type": "function",
      "function": {
        "name": "block_payment_card",
        "arguments": "{\"card_id\": 5501, \"reason\": \"lost\"}"
      }
    }
  ]
}

3. Cuatro reglas de seguridad al trabajar con Function Calling

  1. Validación estricta de argumentos (Pydantic / Zod): Nunca confíe ciegamente en los argumentos del modelo JSON. Siempre analícelos a través de un esquema de validación antes de ejecutar una consulta SQL o retirar fondos.
  2. Puerta de control para acciones destructivas (Human-in-the-Loop): Si la función ejecuta una operación irreversible (delete_database, transfer_funds), el backend debe detener la ejecución y solicitar la confirmación de una persona real.
  3. Limitación del contexto de herramientas: No pase cientos de funciones al modelo al mismo tiempo. Esto diluye la atención (Attention Saturation) y aumenta la probabilidad de una llamada errónea. Utilice filtrado dinámico o MCP.
  4. Protección contra bucles infinitos (Infinite Tool Loop): Siempre establezca un límite estricto en la cantidad de llamadas a funciones consecutivas (por ejemplo, no más de 5 iteraciones por solicitud).

4. Escenarios prácticos de ingeniería en producción

Function Calling es el puente que conecta el mundo del modelado estadístico del lenguaje con el mundo determinista de la programación. Este mecanismo es el núcleo de todos los modernos AI-agents, servidores MCP y asistentes autónomos para desarrolladores.

/ Preguntas frecuentesSchema.org FAQPage

FAQ: Llamada a Funciones (Function Calling / Tool Calling)

¡Categoricamente no! El modelo es un procesador textual y matemático aislado. No tiene acceso directo a su base de datos o red. Solo genera tokens en formato JSON con una solicitud a su servidor: 'Ejecuta get_user_balance(user_id=42)'. El código real siempre se ejecuta en su backend alojado.
/ Enlaces internos
Todos los términos

Recursos relacionados del ecosistema

Guías prácticas, terminología clave y habilidades de agentes

Concepto del glosario

Esquemas de Herramientas (Tools & JSON Schema)

Estándar de descripción formalizada de interfaces de herramientas (Tools) para grandes modelos de lenguaje utilizando el estándar JSON Schema. Incluye el nombre de la función, una descripción detallada de su propósito, una lista de parámetros obligatorios y tipos de valores.

Concepto del glosario

Tool Calling (Function Calling)

Mecanismo de bajo nivel en modelos de lenguaje que permite generar parámetros validados en formato JSON para ejecutar funciones en un entorno de programación externo.

Guía práctica

Guía completa de Higgsfield Cinema Studio 4.0: gestión de escenas, Soul 2.0 y automatización vía API

Análisis práctico detallado de la gran actualización de Higgsfield: Cinema Studio 4.0, personajes consistentes con Soul 2.0, generación mediante API y un pipeline UGC listo para producción.

Guía práctica

Cómo crear un sistema de diseño propio en Claude Design: de moodboard a mascota animada

Guía práctica para construir un sistema de diseño de marca en Claude Design: referencias visuales, 4 conceptos contrastantes, tokenización, pruebas y mascota animada en SVG.

Noticia

Claude Code reduce un 99% el coste de actualizar el estado de los subagentes en segundo plano

En la versión CLI de Claude Code, Haiku 5.5 ahora actualiza el estado de los subagentes en segundo plano a partir de notas breves, lo que reduce el consumo de límites.

Noticia

OpenCode afirma obtener 30 veces más uso de DeepSeek por el mismo precio

El cofundador de OpenCode, Dax, dijo que el equipo encontró una forma de mejorar significativamente la eficiencia de uso de DeepSeek: ahora $10 rinden lo que antes costaba $300.