Reduce la latencia cuando ya conoces gran parte de la respuesta del modelo.
Las salidas predichas te permiten obtener respuestas más rápidas de la API de Chat Completions cuando ya conoces muchos de los tokens de salida. El caso más común es cuando vuelves a generar un archivo de texto o de código con cambios menores. Puedes proporcionar tu predicción con el parámetro de solicitud prediction de Chat Completions.
Las salidas predichas están disponibles en las versiones más recientes de los modelos gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini y gpt-4.1-nano. Sigue leyendo para aprender a usarlas y reducir la latencia en tus aplicaciones.
Ejemplo de refactorización de código
Las salidas predichas son especialmente útiles para volver a generar documentos de texto y archivos de código con cambios menores. Supongamos que quieres que el modelo GPT-4o refactorice un fragmento de código JavaScript y cambie el nombre de la propiedad username de la clase User a email:
La línea 4 es la única que cambiará en el archivo anterior. Si usas el contenido actual del archivo de código como predicción, puedes volver a generar todo el archivo con menor latencia. En archivos más grandes, el ahorro de tiempo se acumula rápidamente.
El siguiente ejemplo muestra cómo usar el parámetro prediction en nuestros SDK para predecir que la salida final del modelo será muy similar al archivo de código original. Usamos el contenido de ese archivo como texto de la predicción.
Refactoriza una clase de JavaScript con una salida predicha
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20curl https://api.openai.com/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "gpt-4.1", "messages": [ { "role": "user", "content": "Replace the username property with an email property. Respond only with code, and with no markdown formatting." }, { "role": "user", "content": "$CODE_CONTENT_HERE" } ], "prediction": { "type": "content", "content": "$CODE_CONTENT_HERE" } }'
Además del código refactorizado, la respuesta del modelo incluye datos de uso como los que se muestran en esta versión abreviada, que omite el campo choices:
Observa los campos accepted_prediction_tokens y rejected_prediction_tokens del objeto usage. En este ejemplo, se usaron 14 tokens de la predicción para acelerar la respuesta y se rechazaron 2.
Los tokens rechazados se cobran a la misma tarifa que los demás tokens de salida
que genera la API, por lo que usar salidas predichas puede aumentar el costo de
tus solicitudes.
Ejemplo con streaming
Las salidas predichas reducen aún más la latencia cuando recibes las respuestas de la API mediante streaming. Este ejemplo muestra la misma refactorización de código, esta vez con streaming en los SDK de OpenAI.
El texto que proporcionas como predicción puede aparecer en cualquier parte de la respuesta generada y aun así reducir la latencia. Supongamos que el texto predicho es el código de este servidor sencillo de Hono:
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,});
Puedes pedirle al modelo que vuelva a generar el archivo con un prompt como este:
Agrega a esta aplicación una ruta GET que responda con el texto“hello world”. Vuelve a generar el archivo completo de la aplicacióncon la nueva ruta y sin agregar formato Markdown.
La respuesta al prompt podría ser similar 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,});
La respuesta abreviada del modelo, sin el campo choices, seguiría mostrando tokens aceptados de la predicción, aunque el texto predicho aparezca tanto antes como después del contenido nuevo en la respuesta:
Esta vez no se rechazó ningún token de la predicción porque la respuesta final incluyó todo el contenido del archivo que usamos como predicción. ¡Genial! 🔥
Limitaciones
Al usar salidas predichas, ten en cuenta los siguientes factores y limitaciones.
Solo las series de modelos GPT-4o, GPT-4o-mini, GPT-4.1, GPT-4.1-mini y GPT-4.1-nano admiten salidas predichas.
Si proporcionas una predicción, los tokens de esa predicción que no aparezcan en la respuesta final también se cobran a la tarifa de los tokens de salida. Consulta la propiedad rejected_prediction_tokens del objeto usage para saber cuántos tokens no se usaron en la respuesta final.
Al usar salidas predichas, se aplican las siguientes restricciones a los parámetros de la API:
n: no se admiten valores mayores que 1
logprobs: no se admite
presence_penalty: no se admiten valores mayores que 0
frequency_penalty: no se admiten valores mayores que 0