- Introdução de "Structured Outputs" na API
- Novo recurso que faz a saída do modelo corresponder exatamente ao esquema JSON fornecido pelo desenvolvedor
- No DevDay do ano passado, foi apresentado o modo JSON, mas ele não garantia respostas em conformidade com um esquema específico
- As saídas estruturadas restringem a saída do modelo ao esquema fornecido pelo desenvolvedor e treinam o modelo para compreender melhor esquemas complexos
- Necessidade de saídas estruturadas
- Gerar dados estruturados a partir de entradas não estruturadas é um dos principais casos de uso de IA
- Com a API da OpenAI, é possível realizar várias tarefas, como busca de dados, respostas a perguntas, extração de dados e construção de fluxos de trabalho em várias etapas
- Antes, era necessário esforço com ferramentas open source, prompts e novas tentativas para fazer a saída do modelo se adequar a formatos interoperáveis com os sistemas
- As saídas estruturadas resolvem esse problema ao restringir a saída do modelo ao esquema fornecido pelo desenvolvedor
- Avaliação de desempenho
- Em uma avaliação de conformidade com esquemas JSON complexos, o modelo gpt-4o-2024-08-06 obteve 100% de pontuação
- O modelo gpt-4-0613 ficou abaixo de 40%
- Como usar saídas estruturadas
- Saídas estruturadas via chamada de função: definir
strict: true dentro da definição da função
- Disponível em modelos que oferecem suporte a ferramentas
- Saídas estruturadas seguras
- Seguem as políticas de segurança já existentes da OpenAI
- O modelo pode recusar solicitações inseguras
- A resposta da API inclui um valor de string de recusa, permitindo detectar programaticamente se o modelo gerou uma recusa
- Suporte nativo em SDKs
- Os SDKs de Python e Node oferecem suporte nativo a saídas estruturadas
- É possível fornecer objetos Pydantic ou Zod para convertê-los em esquema JSON e serializar/analisar automaticamente a resposta JSON
- Restrições
- Apenas parte do JSON Schema é suportada
- A primeira resposta da API com um novo esquema pode ter latência adicional
- O modelo pode recusar solicitações inseguras
- Não é compatível com chamadas paralelas de função
- Saídas estruturadas não estão cobertas por Zero Data Retention (ZDR)
- Disponibilidade
- Saídas estruturadas já estão disponíveis de forma geral na API
- Saídas estruturadas via chamada de função podem ser usadas em todos os modelos que oferecem suporte a function calling
- A opção de formato de resposta está disponível nos modelos mais recentes
Resumo do GN⁺
- O novo recurso da OpenAI, saídas estruturadas, permite fazer a saída do modelo corresponder exatamente a um esquema JSON
- Com isso, desenvolvedores podem executar com mais confiabilidade tarefas como busca de dados, resposta a perguntas e extração de dados
- Há suporte nativo nos SDKs de Python e Node, o que facilita o desenvolvimento
- Também há vários casos de uso adicionais, como extração de dados estruturados a partir de dados não estruturados
- Usa a técnica de constrained decoding para restringir a saída do modelo e gerar apenas JSON válido
2 comentários
Que funcionalidade interessante.
Comentários no Hacker News
Construindo UI dinâmica e código com GPT-4o
Principais mudanças no gpt-4o-2024-08-06
Experiência usando o Structured Output do Outlines no vLLM
Opiniões sobre desempenho de IA
Opiniões sobre a abordagem da OpenAI
Confusão sobre a opção
"strict: true"Opinião de que codificar JSON de forma fixa no modelo vai na direção oposta da meta de AGI
Preocupações com efeito de lock-in ao usar recursos da OpenAI
Observação sobre erro de formato JSON
Dúvida sobre por que o nível mais alto precisa ser um objeto