Large Language Models: Tool Calling

Posted on December 18, 2025
Profile
Gastón Gaitan
December 18, 2025 · 3 days, 14 hours ago
Large Language Models: Tool Calling

Tool Calling con OpenAI y Python: el flujo real

Orquestación backend explícita, sin magia ni ejecución implícita

Concepto clave

El modelo de lenguaje no ejecuta funciones. Solo devuelve una estructura indicando qué debería ejecutarse.

El backend en Python es quien: valida, ejecuta y controla.

Tool real (código ejecutable)

Esta función nunca se envía al modelo.

from datetime import datetime

def get_server_time():
    return datetime.utcnow().isoformat()

Declaración de la Tool (metadata)

Esto es lo único que OpenAI recibe.

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_server_time",
            "description": "Devuelve la hora actual del servidor",
            "parameters": {
                "type": "object",
                "properties": {}
            }
        }
    }
]

Primera llamada al LLM

from openai import OpenAI

client = OpenAI()

messages = [
    {"role": "user", "content": "¿Qué hora es en el servidor?"}
]

response = client.chat.completions.create(
    model="gpt-4.1-mini",
    messages=messages,
    tools=tools
)

El LLM solicita la Tool

{
  finish_reason: "tool_calls",
  tool_calls: [
    {
      name: "get_server_time",
      arguments: {}
    }
  ]
}

Ejecución explícita de la Tool

tool_call = response.choices[0].message.tool_calls[0]

if tool_call.function.name == "get_server_time":
    result = get_server_time()

Reinyección del resultado (role=tool)

messages.append(response.choices[0].message)

messages.append({
    "role": "tool",
    "tool_call_id": tool_call.id,
    "content": result
})

Segunda llamada al LLM

final_response = client.chat.completions.create(
    model="gpt-4.1-mini",
    messages=messages
)

print(final_response.choices[0].message.content)

Respuesta final

"La hora actual del servidor es 2025-12-18T03:10:00 UTC."

Roles involucrados

  • user: intención
  • assistant: razonamiento
  • tool: datos reales

Conclusión

Tool Calling es un patrón de orquestación backend, no una feature mágica del modelo.

El LLM sugiere. Python ejecuta. Vos controlás.

Otro ejemplo pero con un diagrama de flujo del flujo de tool calling

Diagrama de flujo con un ejemplo alternativo del proceso