Zum Hauptinhalt springen
FlexInference akzeptiert OpenAI-kompatible Anfragen. Verwenden Sie das offizielle OpenAI SDK oder curl, setzen Sie die Basis-URL auf FlexInference, authentifizieren Sie sich mit Ihrem flex_live_-Schlüssel und senden Sie das erforderliche start_within-Feld bei jeder Anfrage mit. Wenn Sie es weglassen, erhalten Sie 400 missing_start_within.
FlexInference unterstützt vier POST-Endpunkte und übersetzt jede Aufruferform in die vom Planer ausgewählte provider-Oberfläche:
  • POST /v1/responses: die Responses API
  • POST /v1/chat/completions: die Chat Completions API
  • POST /v1/interactions: die Interactions API (funktioniert mit OpenAI-, Gemini- und Anthropic-Modellen)
  • POST /v1/messages: die Anthropic Messages API (funktioniert mit jedem Modell)
Jeder Endpunkt akzeptiert auch das optionale geordnete provider-Array, um die Route festzulegen; siehe Route festlegen unten. Das OpenAI SDK deckt /v1/responses und /v1/chat/completions ab. Es stellt /v1/interactions oder /v1/messages nicht zur Verfügung, daher erreichen Sie diese mit curl oder den nativen FlexInference SDKs (Python, TypeScript).

Client konfigurieren

start_within übergeben

start_within teilt FlexInference mit, wie lange es warten darf, bis die Anfrage beginnt, Ergebnisse zurückzugeben. Verwenden Sie eine Dauer wie 00h-01m-00s für eine Minute. Eine Dauer startet den flex-Wettlauf: Der Planer versucht, innerhalb dieses Budgets einen günstigeren flex-Tier zu nutzen, und wechselt dann zu standard, wenn flex nicht rechtzeitig starten kann. Die OpenAI SDKs typisieren start_within nicht, daher übergeben Sie es in Python mit extra_body und in Node mit einem untypisierten Anfrageobjekt.
Eine vollständige Liste der Werte finden Sie unter Deadline routing.

Das flex-Ergebnis lesen

Lesen Sie service_tier im Antworttext sowie die x-flexinference-flex-*-Antwortheader. x-flexinference-flex-applied gibt an, ob flex die Antwort bereitgestellt hat. x-flexinference-flex-reason liefert das maschinenlesbare Ergebnis, einschließlich flex_committed und flex_lost_race. Eine Dauer, die keinen flex-Wettlauf ausführen kann, gibt 400 flex_unsupported_for_anthropic oder 400 flex_model_not_capable zurück. Unter Deadline routing erfahren Sie, wie Sie die Header lesen, und unter Errors finden Sie die vollständige Liste.

Streaming

Setzen Sie stream: true und verarbeiten Sie Ereignisse wie bei OpenAI. Streaming ändert das Routing nicht. FlexInference legt sich zuerst auf einen Tier fest und streamt dann Tokens, nachdem dieser Tier zu antworten beginnt.

Timeouts

start_within begrenzt den Startzeitpunkt der Anfrage, nicht die gesamte Generierungszeit. FlexInference hält die HTTP-Antwort zurück, bis ein Tier zugesagt hat. Nachdem flex zugesagt hat, wird die Anfrage vollständig ausgeführt; FlexInference wechselt eine zugesagte Anfrage nicht zu standard, nur weil die Generierung langsam ist. Stellen Sie Ihr Client-Timeout so ein, dass es das Wartefenster plus die Zeit abdeckt, die das Modell zum Antworten benötigt. Das OpenAI SDK hat standardmäßig ein Timeout von 10 Minuten, was der längsten zulässigen start_within-Dauer entspricht. Wenn die Generierung gegen Ende eines langen Fensters beginnen kann, erhöhen Sie das Timeout über den Standardwert hinaus. Ein kürzeres Timeout kann die Anfrage abbrechen, bevor FlexInference ein Ergebnis zurückgibt. Siehe client_closed_request.
Die nativen FlexInference SDKs (Python, TypeScript) handhaben dies automatisch. Sie dimensionieren die Wartezeit auf die erste Antwort anhand von start_within, begrenzen blockierte Streams mit einem Idle-Timeout und lassen Streams ohne Gesamtbegrenzung, damit lange Antworten abgeschlossen werden können. Nicht-Streaming-Aufrufe behalten ein Gesamtbudget bei. Jedes Timeout ist auf Client-Ebene und pro Anfrage konfigurierbar.

Wiederholung temporärer Upstream-Fehler

Fügen Sie ein optionales retry-Objekt hinzu, um den Tier, der Ihre Anfrage bedient, erneut aufzurufen, wenn dieser mit einem temporären 429 oder 5xx nicht startet. Übergeben Sie es auf die gleiche Weise wie start_within.
count reicht von 1 bis 5, backoff ist "exponential" (Standard) oder "linear", und jitter ist standardmäßig true. Die Wiederholung erfolgt nur, bevor die Antwort zugesagt wird, berücksichtigt den Retry-After-Header des providers und wird mit den eigenen Wiederholungsversuchen Ihres Client-SDKs kombiniert. Unter Deadline routing finden Sie das vollständige Verhalten und den x-flexinference-retries-Antwortheader.

Route festlegen

Ein optionales geordnetes provider-Array legt fest, welche provider-Route Ihre Anfrage bedient. Dies gilt für jeden Endpunkt: /v1/responses, /v1/chat/completions, /v1/interactions und /v1/messages. Element 0 ist die primäre Route und das einzige flex-Gate; die Elemente 1 bis n bilden die Fallback-Kette für dasselbe Modell, die der Reihe nach versucht wird, wenn eine Route temporär fehlschlägt. Wenn Sie es weglassen, verwendet FlexInference die native Route des Modells. Übergeben Sie es auf die gleiche Weise wie start_within. Jede von Ihnen benannte Route benötigt zuerst ihren konfigurierten Schlüssel. Ein fehlender Schlüssel gibt einen 400-Fehler für diese Route zurück und fällt niemals auf die nächste zurück. Fügen Sie daher den Schlüssel jeder Route im Dashboard hinzu, bevor Sie sie benennen. Siehe provider routing.
google, openai und anthropic sind direkte Routen. vertex (Gemini) und bedrock (Claude) sind Cloud-Routen, die dasselbe Modell auf Google Vertex AI und Amazon Bedrock bereitstellen; jede benötigt den eigenen BYOK-Schlüssel dieser Cloud. Ein ungültiges Array gibt 400 invalid_provider_chain zurück, eine Route, die das Modell nicht bedienen kann, gibt 400 provider_model_mismatch zurück, und eine Dauer start_within mit einer Cloud-Route zuerst gibt 400 flex_unsupported_on_cloud zurück. Die nativen FlexInference SDKs typisieren provider und prüfen dessen Form lokal, bevor die Anfrage Ihren Prozess verlässt; das OpenAI SDK typisiert es nicht, daher übergeben Sie es über extra_body oder ein untypisiertes Objekt. Unter provider routing finden Sie die Matrix der gültigen Ketten.

Chat Completions

Chat Completions verwendet dieselben start_within-Regeln. Eine Dauer startet den flex-Wettlauf, wenn die Anfrage über kanonische Responses geroutet werden kann. OpenAI Chat-Anfragen werden über kanonische Responses geroutet, es sei denn, ein nativer Chat-Parameter erfordert ein OpenAI Chat-Passthrough; nur native Chat-Parameter können nicht mit einer Dauer start_within kombiniert werden.

Interactions

Der Interactions-Endpunkt ist ein weiteres Aufruferformat für OpenAI-, Gemini- und Anthropic-Modelle. start_within wird auf die gleiche Weise angewendet. Senden Sie input als String, ein Content-Array von Teilen oder eine Multi-Turn-Schrittliste. system_instruction, tools und response_format werden auf dieselben Upstream-Funktionen abgebildet.
Die Antwort ist ein interaction-Objekt. Die Ausgabe befindet sich in steps. usage teilt die Token-Anzahl auf input, output, thought, cached, tool-use und total auf.
status ist requires_action, wenn ein Schritt ein function_call ist, incomplete, wenn die Ausgabe abgeschnitten wird, failed bei einem Fehler und completed ansonsten. generation_config.thinking_level wird auf reasoning.effort abgebildet. Zusätzliche generation_config.*-Schlüssel werden bei Gemini-Modellen durchgereicht. Bei Nicht-Gemini-Modellen führt jeder nicht abgebildete generation_config.*-Schlüssel zu einem Fehler mit unsupported_generation_config. Ein vom Aufrufer bereitgestellter service_tier wird mit service_tier_not_allowed abgelehnt; siehe Errors. FlexInference leitet die Tier-Auswahl von start_within ab. Wenn Sie service_tier senden, schlägt die Anfrage mit service_tier_not_allowed fehl. Entfernen Sie das Feld und drücken Sie den Tier über start_within aus. Unter Errors finden Sie die vollständige Liste und Beispiel-Bodies.

Messages

Der Messages-Endpunkt verwendet die Anthropic Messages Anfrage- und Antwortform. Er funktioniert mit jedem Modell, da FlexInference über die kanonische Form übersetzt. start_within ist erforderlich. Anthropic erfordert max_tokens; FlexInference leitet es weiter, wenn Sie es setzen, und synthetisiert keinen Standardwert, wenn Sie es weglassen. Senden Sie messages als {role, content}-Turns, wobei content ein String oder ein Array von Content-Blöcken ist. system, tools, tool_choice und thinking werden auf dieselben Upstream-Funktionen abgebildet.
Die Antwort ist ein Anthropic message-Objekt. Die Ausgabe befindet sich in content als text-, thinking- und tool_use-Blöcke. usage.service_tier ist der bediente Tier, entweder flex oder standard.
stop_reason ist end_turn bei normalem Abschluss, max_tokens bei Trunkierung, tool_use, wenn das Modell ein Tool aufruft, und refusal, wenn es ablehnt. thinking wird pro Modell auf reasoning.effort abgebildet. Bei Claude-Modellen werden native Anthropic-Felder wie top_k, stop_sequences, cache_control-Blöcke, Zitate und document- oder file-Content-Blöcke durchgereicht. Bei OpenAI- oder Gemini-Modellen werden document- und file-Content-Blöcke mit base64-Quellen in kanonische input_file übersetzt und nicht abgelehnt. Remote-URL-Dokumente hängen weiterhin von der Unterstützung des jeweiligen Ziel-providers ab. Andere Anthropic-native Felder, einschließlich top_k, stop_sequences, cache_control-Blöcke und Zitate, schlagen providerübergreifend mit unsupported_parameter fehl. Ein vom Aufrufer bereitgestellter service_tier schlägt immer mit service_tier_not_allowed fehl; siehe Errors.

Alles andere funktioniert unverändert

Tool Calling, strukturierte Ausgaben (response_format), Vision und Reasoning werden an den ausgewählten provider weitergeleitet. Verwenden Sie die normalen Felder des providers für diese Funktionen.
Chat-native Parameter werden bei OpenAI-Modellen durchgereicht, wenn ein natives Chat-Passthrough erforderlich ist: presence_penalty, frequency_penalty, logit_bias, logprobs, top_logprobs, seed, stop, prediction, audio, nicht-textuelle modalities und web_search_options. Bei Gemini- oder Claude-Modellen führt das Setzen eines dieser Felder auf einen realen Wert zu einem Fehler mit unsupported_parameter. Chat Completions n > 1 schlägt immer mit unsupported_value fehl. Für die Websuche auf dem kanonischen Pfad verwenden Sie ein Responses web_search-Tool.