Reduza a latência quando já souber grande parte do conteúdo que o modelo vai retornar.
Saídas previstas permitem obter respostas mais rápidas da API chat completions quando você já conhece muitos dos tokens de saída. Isso é mais comum quando você precisa gerar novamente um arquivo de texto ou de código com pequenas alterações. Para fornecer sua previsão, use o parâmetro de requisição prediction da API chat completions.
As saídas previstas estão disponíveis nas versões mais recentes dos modelos gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini e gpt-4.1-nano. Veja como usá-las para reduzir a latência nos seus aplicativos.
Exemplo de refatoração de código
As saídas previstas são especialmente úteis para gerar novamente documentos de texto e arquivos de código com pequenas alterações. Suponha que você queira que o modelo GPT-4o refatore um trecho de código JavaScript e renomeie a propriedade username da classe User para email.
Apenas a linha 4 do exemplo acima vai mudar. Se você usar o conteúdo atual do arquivo de código como previsão, poderá gerar o arquivo inteiro novamente com menor latência. Em arquivos maiores, o tempo economizado aumenta rapidamente.
No exemplo a seguir, usamos o parâmetro prediction nos nossos SDKs para indicar que a saída final do modelo deve ser muito parecida com o código original. O próprio conteúdo do arquivo serve como texto da previsão.
Refatore uma classe JavaScript com uma saída prevista
Observe os campos accepted_prediction_tokens e rejected_prediction_tokens no objeto usage. Neste exemplo, o modelo usou 14 tokens da previsão para acelerar a resposta e rejeitou 2.
A API cobra pelos tokens rejeitados a mesma tarifa que cobra pelos demais tokens de saída que gera. Por isso, usar saídas previstas pode aumentar o custo das requisições.
Exemplo com streaming
As saídas previstas reduzem ainda mais a latência quando você recebe as respostas da API por streaming. O exemplo a seguir mostra a mesma refatoração de código, desta vez com streaming nos SDKs da OpenAI.
O texto que você fornece como previsão pode aparecer em qualquer parte da resposta gerada e ainda assim reduzir a latência. Suponha que o texto previsto seja o código do servidor simples em Hono mostrado a seguir.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25import { serve } from"@hono/node-server";import { serveStatic } from"@hono/node-server/serve-static";import { Hono } from"hono";constapp=newHono();app.get("/api", (c) => {return c.text("Hello Hono!");});// You will need to build the client code first: `pnpm run ui:build`.app.use("/*",serveStatic({rewriteRequestPath: (path) =>`./dist${path}`, }));constport=3000;console.log(`Server is running on port ${port}`);serve({ fetch: app.fetch, port,});
Você pode pedir ao modelo que gere o arquivo novamente com um prompt como este:
Adicione a este aplicativo uma rota GET que responda como texto "hello world". Gere novamente o arquivo inteirodo aplicativo com essa rota incluída, sem acrescentarnenhuma formatação em Markdown.
A resposta ao prompt poderia ser semelhante a esta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29import { serve } from"@hono/node-server";import { serveStatic } from"@hono/node-server/serve-static";import { Hono } from"hono";constapp=newHono();app.get("/api", (c) => {return c.text("Hello Hono!");});app.get("/hello", (c) => {return c.text("hello world");});// You will need to build the client code first: `pnpm run ui:build`.app.use("/*",serveStatic({rewriteRequestPath: (path) =>`./dist${path}`, }));constport=3000;console.log(`Server is running on port ${port}`);serve({ fetch: app.fetch, port,});
Mesmo com trechos do texto previsto antes e depois do novo conteúdo na resposta, a versão abreviada da resposta do modelo, sem o campo choices, ainda mostraria tokens aceitos da previsão.
Desta vez, o modelo usou todo o conteúdo do arquivo previsto na resposta final e, por isso, não rejeitou nenhum token da previsão. Boa! 🔥
Limitações
Ao usar saídas previstas, leve em conta os seguintes fatores e limitações.
Apenas as famílias de modelos GPT-4o, GPT-4o-mini, GPT-4.1, GPT-4.1-mini e GPT-4.1-nano oferecem suporte a saídas previstas.
A API cobra a tarifa de tokens de saída mesmo pelos tokens que você fornece na previsão e que ficam de fora da resposta final. Consulte a propriedade rejected_prediction_tokens do objeto usage para saber quantos tokens ficaram de fora.
Ao usar saídas previstas, aplicam-se as seguintes restrições aos parâmetros da API:
n: a API não aceita valores maiores que 1
logprobs: sem suporte
presence_penalty: a API não aceita valores maiores que 0
frequency_penalty: a API não aceita valores maiores que 0