0Pricing
AI Prompt Engineering · Lección

Schemas de herramientas y funciones

Schemas para llamadas a funciones.

Schemas de herramientas y funciones es una lección gratuita de AI Prompt Engineering 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 AI Prompt Engineering, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Prompt Engineering incluye 4 lecciones en total.

Las herramientas son esquemas más intención

La llamada de funciones permite que un modelo solicite que su código ejecute una acción. Cada herramienta se declara con un nombre, una descripción (que indica cuándo usarla) y un JSON Schema para sus parámetros.

El modelo nunca ejecuta código; emite una solicitud de llamada estructurada que su entorno de ejecución distribuye. El esquema es lo que hace que los argumentos se puedan analizar.

Anatomía de una definición de herramienta

Una definición de herramienta es una declaración de una capacidad respaldada por un esquema.

{
  'type': 'function',
  'function': {
    'name': 'get_weather',
    'description': 'Get current weather for a city. Use when the user asks about weather.',
    'parameters': {
      'type': 'object',
      'properties': {
        'city': {'type': 'string'},
        'units': {'type': 'string', 'enum': ['celsius', 'fahrenheit']}
      },
      'required': ['city', 'units'],
      'additionalProperties': False
    }
  }
}

La descripción guía la selección

Cuando hay muchas herramientas disponibles, el modelo elige principalmente según la descripción. Escriba las descripciones como reglas de decisión:

  • Indique cuándo usarla y cuándo no.
  • Diferénciela de las herramientas similares.
  • Mencione los requisitos previos necesarios.

Las descripciones deficientes provocan una selección incorrecta de herramientas con más frecuencia que los esquemas deficientes provocan errores en los argumentos.

El ciclo de llamada, ejecución y devolución

La llamada de funciones es multiturno. El modelo hace una llamada, usted la ejecuta, añade el resultado y el modelo continúa.

resp = client.chat.completions.create(model='gpt-4o', messages=msgs, tools=tools)
call = resp.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)
result = dispatch(call.function.name, args)
msgs.append(resp.choices[0].message)
msgs.append({'role': 'tool', 'tool_call_id': call.id,
             'content': json.dumps(result)})
# call the model again to continue with the tool result

Llamadas paralelas a herramientas

Los modelos modernos pueden solicitar varias llamadas a herramientas en un mismo turno cuando las acciones son independientes. Su entorno de ejecución debe iterar sobre todas las tool_calls, ejecutarlas (idealmente de forma concurrente) y devolver un mensaje de herramienta por cada tool_call_id.

Nunca dé por hecho que habrá una sola llamada; itere siempre.

for call in resp.choices[0].message.tool_calls:
    args = json.loads(call.function.arguments)
    result = dispatch(call.function.name, args)
    msgs.append({'role': 'tool', 'tool_call_id': call.id,
                 'content': json.dumps(result)})

Forzar y restringir el uso de herramientas

Controle la selección con tool_choice:

  • auto — el modelo decide.
  • required — debe llamar a alguna herramienta.
  • {name: ...} — fuerza una herramienta específica.
  • none — desactiva las herramientas durante este turno.

Forzar una herramienta específica convierte la llamada de funciones en una extracción puramente estructurada.

client.chat.completions.create(
    model='gpt-4o', messages=msgs, tools=tools,
    tool_choice={'type': 'function', 'function': {'name': 'get_weather'}}
)

Validar los argumentos antes de ejecutar

Incluso con esquemas estrictos, trate los argumentos de las herramientas como entradas no confiables. Vuelva a validarlos según el esquema y aplique las reglas de negocio antes de interactuar con sistemas reales (bases de datos, pagos o borrado de archivos).

def dispatch(name, args):
    schema = TOOLS[name]['function']['parameters']
    jsonschema.validate(args, schema)   # defense in depth
    if name == 'refund' and args['amount'] > MAX_AUTO_REFUND:
        return {'error': 'requires human approval'}
    return HANDLERS[name](**args)

Los errores de las herramientas forman parte del protocolo

Cuando una herramienta falla, devuelva un error estructurado como resultado de la herramienta en lugar de lanzar una excepción. El modelo podrá disculparse, reintentar con argumentos corregidos o elegir otra herramienta.

Haga que los errores sean accionables: incluya un motivo y, cuando sea seguro, una indicación para recuperarse.

{'status': 'error',
 'code': 'CITY_NOT_FOUND',
 'message': 'No city named Xyz. Ask the user to clarify the city.'}

Mantenga reducida la superficie de herramientas

Docenas de herramientas degradan la precisión de selección y aumentan el coste en tokens (cada esquema está en el contexto en cada turno). Medidas paliativas:

  • Agrupe acciones relacionadas detrás de una herramienta con un enum action.
  • Exponga dinámicamente solo las herramientas relevantes para el estado actual.
  • Use espacios de nombres para reducir la confusión entre herramientas similares.

Refuerzo de esquemas para efectos secundarios

Para las acciones destructivas, incorpore la seguridad en el propio esquema: exija un campo de confirmación explícito, limite los rangos y evite los identificadores de texto libre en favor de enumeraciones o patrones validados.

{
  'name': 'delete_records',
  'parameters': {
    'type': 'object',
    'properties': {
      'table': {'type': 'string', 'enum': ['logs', 'temp_cache']},
      'confirm': {'type': 'boolean'},
      'max_rows': {'type': 'integer', 'minimum': 1, 'maximum': 1000}
    },
    'required': ['table', 'confirm', 'max_rows'],
    'additionalProperties': False
  }
}

Probar definiciones de herramientas

Trate la selección de herramientas como un comportamiento medible. Cree un conjunto de evaluación de prompts asociados con la herramienta y los argumentos esperados, y compruebe que el modelo elija correctamente. Realice un seguimiento de las regresiones cuando reformule las descripciones o añada herramientas nuevas.

cases = [
  {'prompt': 'Whats it like in Paris?', 'expect_tool': 'get_weather'},
  {'prompt': 'Convert 10 USD to EUR', 'expect_tool': 'fx_convert'}
]
for c in cases:
    assert run(c['prompt']).tool_name == c['expect_tool']

Comprobación rápida

Un modelo emite dos tool_calls independientes en un mismo turno del asistente. ¿Qué debe hacer el entorno de ejecución?

Repaso

Esquemas de herramientas y funciones en la práctica:

  • Las descripciones determinan la selección; los esquemas determinan argumentos analizables.
  • Recorra todas las tool_calls; admita la ejecución en paralelo.
  • Controle el comportamiento con tool_choice; fuerce una herramienta para la extracción pura.
  • Vuelva a validar los argumentos y devuelva errores estructurados.
  • Mantenga reducida la superficie de herramientas y refuerce la seguridad de las acciones destructivas.

A continuación: bucles de reparación y validación para cuando la salida siga siendo incorrecta.

Preguntas frecuentes

¿La lección «Schemas de herramientas y funciones» es gratis?

Sí — el texto completo de «Schemas de herramientas y 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 Prompt Engineering, actualiza a CoddyKit PRO. El curso de AI Prompt Engineering incluye 4 lecciones en total.

¿Qué aprenderé en «Schemas de herramientas y funciones»?

Schemas para llamadas a funciones. Practicas AI Prompt Engineering 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 Prompt Engineering?

No se requiere experiencia previa. AI Prompt Engineering 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 «Schemas de herramientas y 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 Prompt Engineering?

Sí. Cada lección de AI Prompt Engineering 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

  1. Por qué usar salidas estructuradas
  2. JSON Schema en prompts
  3. Schemas de herramientas y funciones
  4. Bucles de reparación y validación
← Volver a AI Prompt Engineering