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.
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-safeErrores frecuentes
- Usar el modo JSON sin modo estricto: el modelo puede devolver una estructura incorrecta
- Olvidar
additionalProperties: falseen 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.
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
- Modo JSON y salidas de llamadas a herramientas
- Validación de esquemas con Pydantic
- Bucles de reparación para salidas malformadas
- Instructor / Outlines para garantizar la estructura