Instructor / Outlines para garantizar la estructura
Instructor (Python) y Outlines restringen la decodificación para que el modelo no pueda generar literalmente un JSON no válido.
Instructor / Outlines para garantizar la estructura es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 4 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.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
Dos bibliotecas principales
Dos enfoques destacados para obtener salidas estructuradas garantizadas:
- Instructor (Jason Liu): envoltorio de Pydantic para OpenAI, Anthropic y muchos otros proveedores
- Outlines (.txt): decodificado restringido para modelos de código abierto
Instructor Basics
# pip install instructor openai
import instructor
from openai import OpenAI
from pydantic import BaseModel
client = instructor.from_openai(OpenAI())
class User(BaseModel):
name: str
age: int
user = client.chat.completions.create(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)
print(user.name, user.age)La magia de Instructor
Internamente, Instructor:
- Genera un JSON Schema a partir de su modelo de Pydantic
- Lo añade como herramienta a la llamada a OpenAI
- Fuerza la llamada a esa herramienta
- Analiza los argumentos y devuelve una instancia de Pydantic
- Reintenta la operación reparando los errores de validación
Instructor with Validation
from pydantic import field_validator
class User(BaseModel):
name: str
age: int
@field_validator('age')
@classmethod
def positive(cls, v):
if v <= 0:
raise ValueError('Age must be positive')
return v
# Instructor catches ValidationError and retries automaticallyStreaming Instructor
for partial in client.chat.completions.create_partial(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
):
print(partial)
# Streams partial Pydantic instances as fields fill in.Instructor with Anthropic
from anthropic import Anthropic
client = instructor.from_anthropic(Anthropic())
user = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=1024,
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)Outlines para modelos de código abierto
Outlines utiliza decodificado restringido por gramática. Funciona con HuggingFace, vLLM y llama.cpp:
# pip install outlines
import outlines
model = outlines.models.transformers('mistralai/Mistral-7B-Instruct-v0.2')
generator = outlines.generate.json(model, User)
user = generator('Alice, 30')¿Por qué usar decodificado restringido?
Outlines determina qué tokens son válidos en cada paso según el esquema y enmascara los tokens no válidos. El modelo literalmente no puede emitir JSON no válido.
Expresiones regulares y opciones en Outlines
Puede restringir la salida a una expresión regular o a una lista de opciones:
import outlines.text.generate as g
yes_no = g.choice(model, ['yes', 'no'])
result = yes_no('Are bananas fruits?') # 'yes'Combinar ambos
Para obtener la máxima fiabilidad:
- Use Instructor para modelos gestionados o cerrados (OpenAI, Anthropic)
- Use Outlines para modelos alojados por usted
- Comparta los modelos de Pydantic entre ambos
Comparación de costes
- Structured Outputs (nativas de OpenAI): incluidas en el precio
- Instructor: pequeña sobrecarga por los reintentos tras la validación
- Outlines: ligera reducción del rendimiento por el enmascaramiento, pero sin llamadas adicionales
Cuándo usar cada opción
| Caso de uso | Herramienta |
|---|---|
| OpenAI/Anthropic | Instructor + Pydantic |
| OSS alojado por usted | Outlines |
| Latencia crítica | OpenAI Structured Outputs (nativas) |
Enfoque de Outlines
¿Cómo garantiza Outlines las salidas estructuradas?
Resumen
Para OpenAI y Anthropic, use Structured Outputs nativas o Instructor. Para modelos de código abierto, use Outlines. Los modelos de Pydantic lo conectan todo.
Preguntas frecuentes
¿La lección «Instructor / Outlines para garantizar la estructura» es gratis?
Sí — el texto completo de «Instructor / Outlines para garantizar la estructura» 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 «Instructor / Outlines para garantizar la estructura»?
Instructor (Python) y Outlines restringen la decodificación para que el modelo no pueda generar literalmente un JSON no válido. 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 4 de 4.
¿Cuánto tiempo toma la lección «Instructor / Outlines para garantizar la estructura»?
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