Reduziere die Latenz bei Modellantworten, deren Inhalt größtenteils schon im Voraus bekannt ist.
Mit vorhergesagten Ausgaben kannst du API-Antworten von Chat Completions beschleunigen, wenn viele der Ausgabetokens bereits im Voraus bekannt sind. Das ist besonders häufig der Fall, wenn du eine Text- oder Codedatei mit kleinen Änderungen neu generierst. Deine Vorhersage kannst du über den Anfrageparameter prediction in Chat Completions übergeben.
Vorhergesagte Ausgaben sind bereits mit den neuesten Modellen gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini und gpt-4.1-nano verfügbar. Im Folgenden erfährst du, wie du damit die Latenz in deinen Anwendungen reduzierst.
Beispiel für Code-Refactoring
Vorhergesagte Ausgaben sind besonders nützlich, um Textdokumente und Codedateien mit kleinen Änderungen neu zu generieren. Angenommen, du möchtest mit dem Modell GPT-4o JavaScript-Code überarbeiten und dabei die Eigenschaft username der Klasse User in email umbenennen:
Abgesehen von Zeile 4 oben bleibt der Großteil der Datei unverändert. Wenn du den aktuellen Inhalt der Codedatei als Vorhersage verwendest, kannst du die gesamte Datei mit geringerer Latenz neu generieren. Bei größeren Dateien summieren sich diese Zeitersparnisse schnell.
Das folgende Beispiel zeigt, wie du den Parameter prediction in unseren SDKs verwendest. Damit gibst du vor, dass die endgültige Modellausgabe unserer ursprünglichen Codedatei sehr ähnlich sein wird. Deren Inhalt verwenden wir als Vorhersagetext.
Eine JavaScript-Klasse mit einer vorhergesagten Ausgabe überarbeiten
Beachte die beiden Felder accepted_prediction_tokens und rejected_prediction_tokens im Objekt usage. In diesem Beispiel wurden 14 Token aus der Vorhersage verwendet, um die Antwort zu beschleunigen, während 2 verworfen wurden.
Beachte, dass auch verworfene Token wie andere von der API generierte Ausgabetokens abgerechnet werden. Vorhergesagte Ausgaben können daher die Kosten deiner Anfragen erhöhen.
Streaming-Beispiel
Vorhergesagte Ausgaben senken die Latenz noch stärker, wenn du API-Antworten per Streaming überträgst. Das folgende Beispiel zeigt dasselbe Code-Refactoring, diesmal mit Streaming in den OpenAI SDKs.
Wenn du Vorhersagetext übergibst, kann dieser an beliebiger Stelle in der generierten Antwort erscheinen und trotzdem deren Latenz reduzieren. Angenommen, dein vorhergesagter Text ist der unten gezeigte einfache Hono-Server:
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,});
Du könntest das Modell mit einem Prompt wie diesem auffordern, die Datei neu zu generieren:
Add a get route to this application that responds withthe text "hello world". Generate the entire applicationfile again with this route added, and with no othermarkdown formatting.
Die Antwort auf den Prompt könnte etwa so aussehen:
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,});
Eine gekürzte Modellantwort ohne das Feld choices würde weiterhin akzeptierte Vorhersagetokens ausweisen, obwohl der Vorhersagetext sowohl vor als auch nach dem neu eingefügten Inhalt in der Antwort erscheint:
Diesmal wurden keine Vorhersagetokens verworfen, da der gesamte als Vorhersage übergebene Dateiinhalt in der endgültigen Antwort verwendet wurde. Schön! 🔥
Einschränkungen
Wenn du vorhergesagte Ausgaben verwendest, solltest du die folgenden Faktoren und Einschränkungen berücksichtigen.
Vorhergesagte Ausgaben werden nur von den Modellreihen GPT-4o, GPT-4o-mini, GPT-4.1, GPT-4.1-mini und GPT-4.1-nano unterstützt.
Wenn du eine Vorhersage übergibst, werden auch die darin enthaltenen Token, die nicht in der endgültigen Ausgabe vorkommen, zum Preis für Ausgabetokens abgerechnet. Die Eigenschaft rejected_prediction_tokens des Objekts usage zeigt dir, wie viele Token nicht in der endgültigen Antwort verwendet wurden.
Die folgenden API-Parameter werden bei vorhergesagten Ausgaben nicht unterstützt:
n: Werte größer als 1 werden nicht unterstützt
logprobs: nicht unterstützt
presence_penalty: Werte größer als 0 werden nicht unterstützt
frequency_penalty: Werte größer als 0 werden nicht unterstützt