AI Agents · Lección

Modo JSON y salidas de llamadas a herramientas

Use response_format={'type':'json_object'} o una única llamada a herramienta para forzar una salida que las máquinas puedan analizar.

Lección 1 de 414 pasos

Modo JSON y salidas de llamadas a herramientas 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.

La necesidad de estructura

El texto libre de los LLM es incompatible con el código. Los agentes de producción necesitan resultados analizables: JSON, XML y argumentos de función; nunca «la respuesta es...»

Modo JSON (OpenAI)

Dígale al modelo «devuelva siempre JSON»:

from openai import OpenAI
client = OpenAI()

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[
        {'role': 'system', 'content': 'Return a JSON object with name and age.'},
        {'role': 'user', 'content': 'Alice, 30 years old.'}
    ],
    response_format={'type': 'json_object'}
)
import json
data = json.loads(response.choices[0].message.content)

Advertencia sobre el modo JSON

El modo JSON solo garantiza que el JSON sea válido, no su ESTRUCTURA. El modelo podría devolver {} o {"foo": "bar"}. Valide siempre también la estructura.

Structured Outputs (modo estricto)

OpenAI Structured Outputs garantiza que la respuesta coincida con un JSON Schema:

schema = {
    'name': 'person',
    'schema': {
        'type': 'object',
        'properties': {
            'name': {'type': 'string'},
            'age': {'type': 'integer'}
        },
        'required': ['name', 'age'],
        'additionalProperties': False
    },
    'strict': True
}

response = client.chat.completions.create(
    model='gpt-4o-2024-08-06',
    messages=...,
    response_format={'type': 'json_schema', 'json_schema': schema}
)

Cómo funciona el modo estricto

El modo estricto restringe el decodificador para que el modelo literalmente no pueda producir un token no válido. La salida coincide al 100 % con el esquema.

Llamadas a herramientas como salida estructurada

Puede forzar una llamada específica a una herramienta para extraer datos estructurados:

tools = [{'type': 'function', 'function': {
    'name': 'submit_person',
    'parameters': {
        'type': 'object',
        'properties': {'name': {'type': 'string'}, 'age': {'type': 'integer'}},
        'required': ['name', 'age']
    }
}}]

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=...,
    tools=tools,
    tool_choice={'type': 'function', 'function': {'name': 'submit_person'}}
)
args = json.loads(response.choices[0].message.tool_calls[0].function.arguments)

Uso de herramientas de Anthropic como salida

Anthropic utiliza el mismo patrón con tool_choice="tool":

tool_choice = {'type': 'tool', 'name': 'submit_person'}
print(tool_choice)

JSON mediante precompletado (Anthropic)

Para usar Claude sin herramientas, precomplete el turno del asistente con {

messages = [
    {'role': 'user', 'content': 'Give me JSON for Alice, 30.'},
    {'role': 'assistant', 'content': '{'}
]
# Output starts with { and likely produces valid JSON.
for m in messages:
    print(f"{m['role']}: {m['content']}")
print("Output starts with { and likely produces valid JSON.")

Pydantic + modo estricto

El SDK de OpenAI para Python ofrece un atajo con Pydantic:

from pydantic import BaseModel

class Person(BaseModel):
    name: str
    age: int

response = client.beta.chat.completions.parse(
    model='gpt-4o-2024-08-06',
    messages=...,
    response_format=Person
)
person = response.choices[0].message.parsed
# Pydantic instance, type-safe

Errores frecuentes

  • Usar el modo JSON sin modo estricto: el modelo puede devolver una estructura incorrecta
  • Olvidar additionalProperties: false en el modo estricto
  • No incluir los campos obligatorios en el array "required"
  • El modo estricto solo está disponible a partir de gpt-4o-2024-08-06

Coste de las salidas estructuradas

El modo estricto añade una pequeña sobrecarga debido al decodificado restringido por gramática, insignificante frente al beneficio de calidad. Actívelo siempre que la estructura sea importante.

Combinar con validación

Incluso las salidas estrictas deben validarse posteriormente con Pydantic. Es una defensa en profundidad que detecta casos límite, como enteros fuera de rango.

Garantía del modo estricto

¿Qué garantiza OpenAI Structured Outputs (modo estricto)?

Resumen

Use el modo JSON para estructuras permisivas, Structured Outputs para estructuras garantizadas, y llamadas a herramientas para obtener el mismo efecto. Valide siempre después.

Gratis para empezar

Aprende AI Agents con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
60
Lecciones
239

Preguntas frecuentes

¿La lección «Modo JSON y salidas de llamadas a herramientas» es gratis?

Sí — el texto completo de «Modo JSON y salidas de llamadas a herramientas» 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 «Modo JSON y salidas de llamadas a herramientas»?

Use response_format={'type':'json_object'} o una única llamada a herramienta para forzar una salida que las máquinas puedan analizar. 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 «Modo JSON y salidas de llamadas a herramientas»?

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

  1. Modo JSON y salidas de llamadas a herramientas
  2. Validación de esquemas con Pydantic
  3. Bucles de reparación para salidas malformadas
  4. Instructor / Outlines para garantizar la estructura
← Volver a AI Agents