Llamadas a funciones y uso de herramientas con LLM
Definición de herramientas mediante esquemas JSON, gestión de tool_calls en la respuesta, ejecución y devolución de resultados.
Llamadas a funciones y uso de herramientas con LLM es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué es la llamada a funciones?
La llamada a funciones (también denominada uso de herramientas) permite que un LLM solicite a su código la ejecución de una función. El modelo no ejecuta nada por sí mismo; devuelve una solicitud estructurada que indica «llame a esta función con estos argumentos». Su programa la ejecuta y le devuelve el resultado.
Así es como los LLM obtienen datos en tiempo real, realizan cálculos o activan acciones reales.
Describir una herramienta
Proporcione al modelo una lista de herramientas. Cada herramienta tiene un name, una description y parameters definidos mediante JSON Schema. La descripción es fundamental, ya que el modelo la utiliza para decidir cuándo corresponde aplicar la herramienta.
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "City name"}
},
"required": ["city"]
}
}
}]JSON Schema para los parámetros
El campo parameters sigue el estándar JSON Schema. Debe declarar un objeto con properties, cada una con un type y una descripción, además de un array required. Esto indica al modelo exactamente qué argumentos debe producir.
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"},
"units": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["city"]
}Pasar herramientas al modelo
Envíe la lista tools a chat.completions.create(). Ahora el modelo puede responder con texto O con una llamada a una herramienta, según la solicitud del usuario.
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Weather in Tokyo?"}],
tools=tools
)Detectar una llamada a una herramienta
Cuando el modelo necesita una herramienta, la respuesta contiene message.tool_calls en lugar de texto normal. Compruebe si existe esta lista antes de asumir que tiene una respuesta simple.
msg = response.choices[0].message
if msg.tool_calls:
print("Model wants to call a tool")
else:
print(msg.content)Analizar los argumentos
Cada llamada a una herramienta tiene un function.name y unos function.arguments. Los argumentos llegan como una cadena JSON, así que debe analizarlos con json.loads() antes de utilizarlos.
import json
call = msg.tool_calls[0]
name = call.function.name
args = json.loads(call.function.arguments)
print(name, args) # get_weather {"city": "Tokyo"}Ejecutar la función
Ahora ejecute SU función real de Python con los argumentos analizados. El LLM solo ha decidido qué debe llamarse; su código realiza el trabajo real.
def get_weather(city):
return {"city": city, "temp_c": 18, "condition": "Cloudy"}
result = get_weather(**args)Devolver el resultado al modelo
Devuelva el resultado para que el modelo pueda redactar una respuesta en lenguaje natural. Añada el mensaje original del asistente y, después, un mensaje con el rol tool que contenga el resultado y el tool_call_id correspondiente.
messages.append(msg) # the assistant tool-call message
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result)
})Generar la respuesta final
Vuelva a llamar al modelo con los messages actualizados. Ahora que tiene el resultado de la herramienta, producirá una respuesta final cordial para el usuario.
final = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools
)
print(final.choices[0].message.content)El ciclo completo de uso de herramientas
El ciclo completo es: (1) enviar las herramientas, (2) el modelo devuelve una llamada a una herramienta, (3) analizar los argumentos, (4) ejecutar la función, (5) devolver el resultado como un mensaje de herramienta y (6) el modelo redacta la respuesta. El modelo puede solicitar varias llamadas a herramientas antes de terminar, así que debe repetir el ciclo hasta que tool_calls esté vacío.
Controlar la elección de herramientas
Utilice el parámetro tool_choice para orientar el comportamiento. "auto" (valor predeterminado) permite que el modelo decida; "none" prohíbe las herramientas; pasar el nombre de una herramienta concreta obliga a utilizar esa función exacta. Esto resulta útil cuando debe garantizar una salida estructurada.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
tool_choice={"type": "function", "function": {"name": "get_weather"}}
)Comprobación rápida
Compruebe sus conocimientos sobre el uso de herramientas.
Resumen: llamada a funciones
Ha definido herramientas con un nombre, una descripción y parámetros de JSON Schema, y después las ha pasado al modelo. Ha detectado tool_calls, ha analizado function.arguments con json.loads(), ha ejecutado su función real y ha devuelto el resultado como un mensaje con el rol tool y el tool_call_id correspondiente.
Una llamada final al modelo convierte el resultado sin procesar en una respuesta natural y completa el ciclo de uso de herramientas.
Preguntas frecuentes
¿La lección «Llamadas a funciones y uso de herramientas con LLM» es gratis?
Sí — el texto completo de «Llamadas a funciones y uso de herramientas con LLM» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Llamadas a funciones y uso de herramientas con LLM»?
Definición de herramientas mediante esquemas JSON, gestión de tool_calls en la respuesta, ejecución y devolución de resultados. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Llamadas a funciones y uso de herramientas con LLM»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- API de OpenAI: chat.completions y streaming
- API de Anthropic Claude en Python
- Llamadas a funciones y uso de herramientas con LLM
- Ingeniería de prompts para aplicaciones LLM en producción