Cómo funciona la llamada a funciones
Comprenda todo el recorrido: el modelo elige una herramienta, su código la ejecuta, usted envía el resultado y el modelo continúa.
Cómo funciona la llamada a funciones es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 1 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 AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.
Llamadas a funciones: el patrón fundamental
Las llamadas a funciones son el protocolo que convierte un LLM en un agente. El modelo elige una función de una lista que usted proporciona, completa los argumentos y usted la ejecuta.
OpenAI, Anthropic, Google, Cohere, Mistral y la mayoría de los principales modelos OSS admiten este patrón con los fine-tunes adecuados.
El ciclo completo de cinco pasos
- Usted envía los mensajes y las definiciones de herramientas
- El modelo devuelve una respuesta final O un tool_call
- Usted ejecuta la herramienta con los argumentos del modelo
- Añade el resultado como un mensaje de herramienta
- Vuelve a llamar al modelo con el historial actualizado
Repita los pasos 2-5 hasta que el modelo devuelva una respuesta final.
Paso 1: definir las herramientas
Las definiciones de herramientas son esquemas JSON que describen cada función:
tools = [{
'type': 'function',
'function': {
'name': 'get_weather',
'description': 'Current weather for a city',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string'}
},
'required': ['city']
}
}
}]
import json
print(json.dumps(tools, indent=2))
Paso 2: primera llamada al modelo
Envíe los mensajes y las herramientas:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': 'Weather in Paris?'}],
tools=tools,
)
message = response.choices[0].message
print(message.tool_calls)
# [ToolCall(name='get_weather', arguments='{"city": "Paris"}')]Paso 3: ejecutar la herramienta
Envíe la llamada a su función de Python:
import json
def get_weather(city: str) -> dict:
# ...call your weather API...
return {'city': city, 'temp_c': 18, 'condition': 'cloudy'}
tool_call = message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
result = get_weather(**args)Paso 4: añadir el resultado de la herramienta
Añada un mensaje de herramienta con el ID correspondiente:
messages.append(message) # the assistant message with tool_calls
messages.append({
'role': 'tool',
'tool_call_id': tool_call.id,
'content': json.dumps(result)
})Paso 5: segunda llamada al modelo
Vuelva a llamar al modelo: ahora tiene el resultado de la herramienta y produce una respuesta para el usuario:
final = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=tools,
)
print(final.choices[0].message.content)
# 'It is currently 18 degrees and cloudy in Paris.'El bucle del agente
Incluya este proceso en un bucle while; el modelo puede llamar a varias herramientas en secuencia:
while True:
response = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
msg = response.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return msg.content # final answer
for tc in msg.tool_calls:
result = dispatch(tc)
messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})Llamadas paralelas a herramientas
Los modelos modernos devuelven varios tool_calls en una sola respuesta. Ejecútelos en paralelo cuando sea seguro:
import asyncio
async def run_tools(tool_calls):
coros = [dispatch_async(tc) for tc in tool_calls]
return await asyncio.gather(*coros)finish_reason: tool_calls
También puede comprobar finish_reason en lugar de buscar tool_calls:
if response.choices[0].finish_reason == 'tool_calls':
# the model wants to call tools
...
elif response.choices[0].finish_reason == 'stop':
# done
...Errores comunes
- Olvidar añadir el mensaje del asistente antes del resultado de la herramienta
- Usar el tool_call_id incorrecto
- Enviar los resultados de las herramientas como mensajes de usuario
- Dejar que el bucle se ejecute sin límite: establezca MAX_STEPS
Terminación del bucle
¿Cómo sabe cuándo ha terminado el agente?
Repaso
Las llamadas a funciones son el patrón más importante de todo este curso. Domínelo antes de continuar.
Preguntas frecuentes
¿La lección «Cómo funciona la llamada a funciones» es gratis?
Sí — el texto completo de «Cómo funciona la llamada a funciones» 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 AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.
¿Qué aprenderé en «Cómo funciona la llamada a funciones»?
Comprenda todo el recorrido: el modelo elige una herramienta, su código la ejecuta, usted envía el resultado y el modelo continúa. Practicas AI Agents 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 AI Agents?
No se requiere experiencia previa. AI Agents 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 1 de 4.
¿Cuánto tiempo toma la lección «Cómo funciona la llamada a funciones»?
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 AI Agents?
Sí. Cada lección de AI Agents 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
- Cómo funciona la llamada a funciones
- Definir esquemas de herramientas (JSON Schema)
- Elegir herramientas en tiempo de ejecución
- Devolver resultados al modelo