- A OpenAI revelou recentemente um recurso poderoso chamado Predicted Outputs
- Embora não tenha recebido grande destaque na mídia de tecnologia, vale muito a pena prestar atenção nele
- Esse recurso pode reduzir a latência das respostas da API e acelerar bastante a geração de saídas previsíveis com antecedência
O que é Predicted Outputs?
- É um recurso da Chat Completion API que acelera a resposta principalmente quando há uma resposta previsível
- Usando o parâmetro
prediction, é possível fornecer ao modelo a saída esperada para gerar o resultado com mais eficiência
- Atualmente, ele é compatível apenas com os modelos gpt-4o e gpt-4o-mini
Como Predicted Outputs funciona
- Quando a maior parte do conteúdo já é previsível, esse conteúdo pode ser fornecido ao modelo como valor previsto
- O modelo usa esse valor previsto para acelerar a geração da resposta e melhorar o desempenho
Exemplo: atualização de arquivo de configuração
- É possível usar Predicted Outputs em uma situação de atualização de um arquivo JSON Conf
- Em vez de gerar novamente todo o arquivo existente, você fornece o arquivo atual como valor previsto e solicita apenas as mudanças necessárias
import OpenAI from "openai";
const config = `
{
"appName": "MyApp",
"version": "1.0.0",
"settings": {
"enableFeatureX": false,
"maxUsers": 100
}
}
`.trim();
const openai = new OpenAI();
const updatePrompt = `
Change "enableFeatureX" to true in the following JSON configuration. Respond only with the updated JSON, without any additional text.
`;
const completion = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
{ role: "user", content: updatePrompt },
{ role: "user", content: config }
],
prediction: {
type: "content",
content: config
}
});
console.log(completion.choices[0].message.content);
Exemplo: streaming e Predicted Outputs
- Em aplicações que precisam de respostas em streaming, Predicted Outputs reduz ainda mais a latência
import OpenAI from "openai";
const config = `...`; // arquivo de configuração JSON existente
const openai = new OpenAI();
const updatePrompt = `...`; // prompt de solicitação existente
const completion = await openai.chat.completions.create({
model: "gpt-4o",
messages: [ /* ... */ ],
prediction: {
type: "content",
content: config
},
stream: true
});
for await (const chunk of completion) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
Dicas para desenvolvedores
- O mais legal é que quase nada é necessário para usar esse recurso
- Basta adicionar um novo parâmetro à requisição existente da API
Limitações
- Compatibilidade de modelo: só pode ser usado nos modelos gpt-4o e gpt-4o-mini
- Custo: tokens de previsão rejeitados também são cobrados com o mesmo custo dos tokens gerados. Para controlar os custos, é preciso monitorar
rejected_prediction_tokens
- Parâmetros sem suporte:
- n (valor maior que 1)
- logprobs
- presence_penalty (valor maior que 0)
- frequency_penalty (valor maior que 0)
- max_completion_tokens
- tools (não é possível fazer function calling)
- Limitação de modalidade: apenas a modalidade de texto é compatível; entrada e saída de áudio não são possíveis
Conclusão
- O Predicted Outputs da OpenAI é uma ferramenta inovadora para resolver problemas de latência comuns em aplicações de IA
- Ao fornecer saídas previsíveis, ele reduz o tempo de resposta e melhora a experiência do usuário
1 comentários
Parece algo semelhante ao LMQL.