Instructor / Outlines para estrutura garantida
Instructor (Python) e Outlines restringem a decodificação para que o modelo literalmente não possa produzir JSON inválido.
Instructor / Outlines para estrutura garantida é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Duas bibliotecas principais
Duas abordagens principais para obter saídas estruturadas garantidas:
- Instructor (Jason Liu) — camada Pydantic para OpenAI, Anthropic e muitos provedores
- Outlines (.txt) — decodificação restringida para modelos OSS
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)A mágica do Instructor
Nos bastidores, o Instructor:
- Gera um esquema JSON a partir do seu modelo Pydantic
- Adiciona-o como ferramenta à chamada da OpenAI
- Força a chamada dessa ferramenta
- Analisa os argumentos e retorna uma instância do Pydantic
- Faz novas tentativas com reparo em caso de erros de validação
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 OSS
Outlines usa decodificação restringida por gramática. Ele funciona com HuggingFace, vLLM e 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 que usar decodificação restringida?
Outlines identifica quais tokens são válidos em cada etapa (de acordo com o esquema) e mascara os tokens inválidos. O modelo literalmente não consegue emitir JSON inválido.
Expressão regular / escolha no Outlines
Você pode restringir a uma expressão regular ou a uma lista de escolhas:
import outlines.text.generate as g
yes_no = g.choice(model, ['yes', 'no'])
result = yes_no('Are bananas fruits?') # 'yes'Combinando ambos
Para obter a máxima confiabilidade:
- Use Instructor para modelos gerenciados/fechados (OpenAI, Anthropic)
- Use Outlines para modelos auto-hospedados
- Os modelos Pydantic são compartilhados entre ambos
Comparação de custos
- Saídas Estritas (OpenAI nativo) — incluídas no preço
- Instructor — pequena sobrecarga decorrente de novas tentativas durante a validação
- Outlines — pequena redução na vazão devido à aplicação de máscaras, mas sem chamadas adicionais
Quando usar cada um
| Caso de uso | Ferramenta |
|---|---|
| OpenAI/Anthropic | Instructor + Pydantic |
| OSS auto-hospedado | Outlines |
| Crítico para a latência | Saídas Estruturadas da OpenAI (nativas) |
Abordagem do Outlines
Como o Outlines garante uma saída estruturada?
Recapitulação
Para OpenAI/Anthropic, use as Saídas Estruturadas nativas ou o Instructor. Para OSS, use o Outlines. Os modelos Pydantic conectam tudo.
Perguntas Frequentes
A aula “Instructor / Outlines para estrutura garantida” é grátis?
Sim — o texto completo de “Instructor / Outlines para estrutura garantida” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Instructor / Outlines para estrutura garantida”?
Instructor (Python) e Outlines restringem a decodificação para que o modelo literalmente não possa produzir JSON inválido. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Instructor / Outlines para estrutura garantida”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Modo JSON e saídas de chamadas de ferramentas
- Validação de esquemas com Pydantic
- Loops de reparo para saídas malformadas
- Instructor / Outlines para estrutura garantida