Réduisez la latence lorsque vous connaissez à l’avance une grande partie de la réponse du modèle.
Les sorties prédites permettent d’accélérer les réponses de l’API Chat Completions lorsque vous connaissez à l’avance une grande partie des tokens de sortie. C’est notamment le cas lorsque vous régénérez un fichier texte ou un fichier de code en y apportant de petites modifications. Pour transmettre votre prédiction, utilisez le paramètre de requête prediction de Chat Completions.
Les sorties prédites sont actuellement disponibles avec les dernières versions des modèles gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini et gpt-4.1-nano. Les exemples suivants montrent comment les utiliser pour réduire la latence dans vos applications.
Exemple de refactorisation de code
Les sorties prédites sont particulièrement utiles pour régénérer des documents texte et des fichiers de code en y apportant de petites modifications. Supposons que vous souhaitiez demander au modèle GPT-4o de refactoriser du code JavaScript pour renommer la propriété username de la classe User en email :
Seule la ligne 4 du fichier ci-dessus changera. Si vous fournissez le contenu actuel du fichier comme prédiction, vous pouvez régénérer le fichier entier avec une latence réduite. Pour les fichiers volumineux, le gain de temps devient vite important.
L’exemple suivant montre comment utiliser le paramètre prediction avec nos SDK. Comme la réponse finale du modèle devrait être très proche du code d’origine, nous utilisons le contenu du fichier d’origine comme texte de prédiction.
Refactoriser une classe JavaScript avec une sortie prédite
Les champs accepted_prediction_tokens et rejected_prediction_tokens de l’objet usage indiquent combien de tokens de la prédiction ont été acceptés ou rejetés. Dans cet exemple, 14 tokens de la prédiction ont servi à accélérer la réponse et 2 ont été rejetés.
Les tokens rejetés sont facturés au même tarif que les autres tokens de sortie
générés par l’API. Les sorties prédites peuvent donc augmenter le coût de vos
requêtes.
Exemple de réponse en streaming
Les sorties prédites réduisent encore davantage la latence lorsque vous recevez les réponses de l’API en streaming. L’exemple suivant reprend la même refactorisation de code en utilisant cette fois le streaming dans les SDK d’OpenAI.
Le texte que vous fournissez comme prédiction peut apparaître n’importe où dans la réponse générée et en réduire la latence. Supposons que votre prédiction soit le code du serveur Hono ci-dessous :
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,});
Pour demander au modèle de régénérer le fichier, vous pouvez utiliser un prompt comme celui-ci :
Ajoutez à cette application une route GET qui renvoie le texte « hello world ».Régénérez le fichier complet de l’application en y incluant cette route,sans ajouter de mise en forme Markdown.
Voici à quoi pourrait ressembler la réponse à ce prompt :
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 réponse abrégée du modèle, sans le champ choices, indique là aussi que des tokens de la prédiction ont été acceptés, même si le texte prédit se retrouve en partie avant et en partie après le contenu ajouté :
Cette fois, aucun token de la prédiction n’a été rejeté, car la réponse finale reprend tout le contenu du fichier fourni comme prédiction. Parfait ! 🔥
Limites
Lorsque vous utilisez les sorties prédites, tenez compte des limites et des conditions suivantes.
Seules les familles de modèles GPT-4o, GPT-4o-mini, GPT-4.1, GPT-4.1-mini et GPT-4.1-nano prennent en charge les sorties prédites.
Les tokens que vous fournissez dans la prédiction et qui ne figurent pas dans la réponse finale sont tout de même facturés au tarif des tokens de sortie. Consultez la propriété rejected_prediction_tokens de l’objet usage pour connaître le nombre de tokens inutilisés dans la réponse finale.
Les paramètres de l’API suivants sont soumis à des restrictions lorsque vous utilisez les sorties prédites :
n : les valeurs supérieures à 1 ne sont pas prises en charge.
logprobs : ce paramètre n’est pas pris en charge.
presence_penalty : les valeurs supérieures à 0 ne sont pas prises en charge.
frequency_penalty : les valeurs supérieures à 0 ne sont pas prises en charge.