Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure OpenAI-Reasoning-Modelle sind darauf ausgelegt, Aufgaben im Bereich des logischen Denkens und der Problemlösung mit gesteigertem Fokus und erweiterten Fähigkeiten anzugehen. Diese Modelle verbringen mehr Zeit damit, die Anforderung des Benutzers zu verarbeiten und zu verstehen, wodurch sie im Vergleich zu früheren Iterationen außergewöhnlich stark in Bereichen wie Wissenschaft, Codierung und Mathematik sind.
Wichtige Funktionen von Reasoning-Modellen:
- Komplexe Codegenerierung: Fähig, Algorithmen zu generieren und erweiterte Codierungsaufgaben zu behandeln, um Entwickler zu unterstützen.
- Erweiterte Problemlösung: Ideal für umfassende Brainstorming-Sitzungen und die Bewältigung vielfältiger Herausforderungen.
- Komplexer Dokumentvergleich: Perfekt für die Analyse von Verträgen, Falldateien oder juristischen Dokumenten, um subtile Unterschiede zu identifizieren.
- Anweisungsfolge und Workflowverwaltung: Besonders effektiv für die Verwaltung von Workflows, die kürzere Kontexte erfordern.
Durchsuchen Sie Reasoning-Modelle von OpenAI im Foundry-Modellkatalog.
Voraussetzungen
Ein Azure OpenAI-Begründungsmodell bereitgestellt.
Wenn Sie die REST-Beispiele verwenden:
Installieren Sie die Azure CLI. Weitere Informationen finden Sie unter Install the Azure CLI.
Melden Sie sich mit
az login, und generieren Sie dann ein Bearertoken, und speichern Sie es in derAZURE_OPENAI_AUTH_TOKENUmgebungsvariable.az account get-access-token --resource https://cognitiveservices.azure.com --query accessToken -o tsv
Verwendung
Diese Modelle unterstützen derzeit nicht den gleichen Satz von Parametern wie andere Modelle, die die Chatabschluss-API verwenden.
API für Chatabschlusse
using Azure.Identity;
using OpenAI;
using OpenAI.Chat;
using System.ClientModel.Primitives;
#pragma warning disable OPENAI001 //currently required for token based authentication
BearerTokenPolicy tokenPolicy = new(
new DefaultAzureCredential(),
"https://ai.azure.com/.default");
ChatClient client = new(
model: "o4-mini",
authenticationPolicy: tokenPolicy,
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
ChatCompletionOptions options = new ChatCompletionOptions
{
MaxOutputTokenCount = 100000
};
ChatMessage[] messages =
[
new DeveloperChatMessage("You are a helpful assistant"),
new UserChatMessage("Tell me about the bitter lesson")
];
ChatCompletion completion = client.CompleteChat(messages, options);
Console.WriteLine($"[ASSISTANT]: {completion.Content[0].Text}");
Funktionsweise von Gründen
Reasoning-Modelle erzeugen zusätzlich zu den Eingabe- und Ausgabetokens, mit denen Sie bereits vertraut sind, reasoning tokens. Das Modell verwendet diese Token, um Ihren Prompt zu verarbeiten: indem es das Problem in Teilprobleme zerlegt, Ansätze abwägt und solche wieder verwirft, die sich nicht als tragfähig erweisen. Die Begründungstoken werden niemals im Nachrichteninhalt angezeigt, aber sie belegen Platz im Kontextfenster und werden als Ausgabetoken abgerechnet.
Um zu sehen, wie viele Reasoning-Token eine Anfrage verbraucht hat, prüfen Sie completion_tokens_details.reasoning_tokens in einer Chat Completions API-Antwort oder output_tokens_details.reasoning_tokens in einer Responses API-Antwort.
Die gpt-5.4 und gpt-5.5 Modelle unterstützen verschachteltes Denken mit der Responses API. Sie können vor und zwischen Argumentationsphasen sichtbare Ausgaben erzeugen und zwischen Tool-Aufrufen argumentieren.
Über eine mehrteilige Unterhaltung hinweg werden Eingabe- und Ausgabetoken von einer Runde zur nächsten mitgeführt. Was mit der Begründung aus früheren Wendungen passiert, hängt vom Modell und vom reasoning.context von Ihnen festgelegten Wert ab.
Informationen zum Auswählen eines Modus finden Sie unter Beibehalten von Gründen für Anrufe.
Verwalten des Kontextfensters
Die Begründungstoken teilen das Kontextfenster mit Ihrer Eingabe und der sichtbaren Ausgabe. Eine einzelne Anfrage kann je nachdem, wie schwierig das Problem ist, zwischen einigen hundert und mehreren zehntausend Reasoning-Token verbrauchen; berücksichtigen Sie dafür also genügend Spielraum bei der Dimensionierung einer Anfrage.
Das Verwendungsobjekt meldet die genaue Anzahl für jede Anforderung:
{
"usage": {
"input_tokens": 75,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 1186,
"output_tokens_details": {
"reasoning_tokens": 1024
},
"total_tokens": 1261
}
}
Kontextfenstergrößen unterscheiden sich je nach Modell. Informationen zu den Grenzwerten, die für Ihre Bereitstellung gelten, finden Sie unter API- und Featureunterstützung.
Kostenkontrolle
Reasoning-Token werden als Output-Token abgerechnet, daher kostet eine Anfrage, die länger nachdenkt, mehr, auch wenn die sichtbare Antwort kurz ist. Um die insgesamt vom Modell generierte Menge zu begrenzen, setzen Sie max_output_tokens mit der Responses API oder max_completion_tokens mit der Chat Completions API. Beide Grenzwerte umfassen Begründungstoken, sichtbare Ausgabetoken und Formatierungstoken.
Die Begrenzung der Ausgabe deckt nur die Hälfte einer mehrstufigen Arbeitslast ab. Argumentationsmodelle senden zudem bei jeder Interaktion eine immer länger werdende Konversation erneut und all_turns fügt zusätzlich frühere Argumentationselemente hinzu. Um die Kosten für diese wiederholten Eingabe-Token zu senken, siehe Prompt-Caching.
Raum zur Begründung zuordnen
Wenn die Generierung den Grenzwert des Kontextfensters oder die von Ihnen festgelegte Tokengrenze erreicht, wird die Antwort unvollständig zurückgegeben:
{
"status": "incomplete",
"incomplete_details": {
"reason": "max_output_tokens"
}
}
Diese Bedingung kann auftreten, bevor das Modell eine sichtbare Ausgabe erzeugt. Sie zahlen für Eingabe- und Begründungstoken, erhalten aber keine Antwort. Überprüfen Sie status jede Antwort, damit Ihre Anwendung diesen Fall behandelt, anstatt sie als leeres Ergebnis zu behandeln.
Um zu vermeiden, dass Ihnen der Platz ausgeht, reservieren Sie mindestens 25.000 Token für die Argumentation und die Ausgabe, während Sie sich mit einer Workload vertraut machen. Sobald Sie wissen, wie viele Begründungstoken Ihre Eingabeaufforderungen in der Regel nutzen, optimieren Sie den Puffer entsprechend.
Begründungselemente im Kontext behalten
Wenn ein Reasoning-Modell Funktionen über die Responses API aufruft, geben Sie die Reasoning-Elemente aus der vorherigen Antwort zusammen mit Ihrem Funktionsoutput an die API zurück. Wenn das Modell mehrere Funktionen nacheinander aufgerufen hat, senden Sie alle Reasoning-Elemente, Funktionsaufrufelemente und Ausgabeelemente von Funktionsaufrufen seit der letzten Nutzernachricht. Das Modell führt dann dieselbe Argumentationslinie fort, anstatt von vorn zu beginnen, wodurch es mit weniger Token zu einer guten Antwort gelangt.
Der einfachste Ansatz besteht darin, alle Ausgabeelemente aus der vorherigen Antwort an die nächste Anforderung zu übergeben, entweder mit previous_response_id oder durch Kopieren der Elemente in das nächste input Array. Die Begründung von Elementen, die für Ihre Funktionen nicht relevant sind, werden ignoriert, und die relevanten Elemente werden beibehalten.
Wenn Sie den Kontext vor dem Senden kürzen oder neu anordnen, behalten Sie alles zwischen der letzten Benutzernachricht und der Ausgabe des Funktionsaufrufs intakt.
Begründungsaufwand
Der reasoning_effort Parameter teilt dem Modell mit, wie viel man denken muss, bevor er antworten kann. Unterstützte Werte variieren je nach Modell und enthalten none, , minimal, low, medium, , high, und xhighmax. Die Standardwerte variieren auch je nach Modell. Die Werte, die jedes Modell akzeptiert, finden Sie unter API - und Featureunterstützung.
| Aufwand | Am besten geeignet für: |
|---|---|
none |
Latenzkritische Aufgaben, die nicht von Schlussfolgern oder verketteten Tool-Aufrufen profitieren, wie etwa Sprache, schnelle Informationsabfrage und Klassifizierung. |
low |
Effizientes Denken mit einer geringen Latenzsteigerung. Passt zu Werkzeugnutzung, Planung, Suche und mehrstufigen Entscheidungen, bei denen Geschwindigkeit und Kosten wichtig sind. |
medium |
Ein ausgewogener Ausgangspunkt für die meisten Workloads, insbesondere wenn der Vorgang planung, komplexes Denken oder Urteil umfasst. |
high |
Hartes Denken, komplexes Debuggen, umfassende Planung und hochwertige Aufgaben, bei denen Qualität wichtiger als Latenz ist. |
xhigh |
Umfassende Recherche, asynchrone Workflows und agentische Aufgaben mit langen Läufen. Verwenden Sie sie, wenn Ihre Auswertungen einen Gewinn zeigen, der die zusätzliche Latenz und Kosten rechtfertigt. |
max |
Ihre komplexesten Aufgaben. Wenn Sie derzeit verwenden xhigh, vergleichen Sie beide Einstellungen, bevor Sie wechseln. |
Reasoning-Modelle passen sich je nach Kontext an, verwenden für einfache Aufgaben weniger Token und wenden bei komplexen mehr Rechenaufwand auf. Je höher der Aufwand ist, desto länger verbringt das Modell für die Anforderung, was in der Regel mehr Begründungstoken erzeugt.
Hinweis
o1-mini unterstützt nicht reasoning_effort.
Damit in latenzempfindlichen Anwendungen das erste sichtbare Token schneller ausgegeben wird, fordern Sie das Modell auf, vor dem eingehenderen Weiterdenken eine kurze Präambel zu erstellen.
Entwicklernachrichten
Entwicklernachrichten ("role": "developer") sind funktionell mit Systemmeldungen identisch.
Das Hinzufügen einer Entwicklernachricht zum vorherigen Codebeispiel würde wie folgt aussehen:
using Azure.Identity;
using OpenAI;
using OpenAI.Chat;
using System.ClientModel.Primitives;
#pragma warning disable OPENAI001 //currently required for token based authentication
BearerTokenPolicy tokenPolicy = new(
new DefaultAzureCredential(),
"https://ai.azure.com/.default");
ChatClient client = new(
model: "o4-mini",
authenticationPolicy: tokenPolicy,
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
ChatCompletionOptions options = new ChatCompletionOptions
{
ReasoningEffortLevel = ChatReasoningEffortLevel.Low,
MaxOutputTokenCount = 100000
};
ChatMessage[] messages =
[
new DeveloperChatMessage("You are a helpful assistant"),
new UserChatMessage("Tell me about the bitter lesson")
];
ChatCompletion completion = client.CompleteChat(messages, options);
Console.WriteLine($"[ASSISTANT]: {completion.Content[0].Text}");
Tool-Aufrufe mit Schlussfolgerungsmodellen
Verwenden Sie die Antwort-API , wenn Sie die Gründe mit Funktionen oder benutzerdefinierten Tools kombinieren. Die gpt-5.6 und spätere Modelle unterstützen die Chatabschluss-API und unterstützen Tools, aber die Chatabschluss-API unterstützt die beiden nicht zusammen. Eine Anforderung an Chat Completions, die tools enthält, schlägt mit der folgenden Fehlermeldung fehl:
Function tools with reasoning_effort are not supported for gpt-5.6-sol in /v1/chat/completions. To use function tools, use /v1/responses or set reasoning_effort to 'none'.
Die Anfrage schlägt auch dann fehl, wenn Sie reasoning_effort nicht senden, da diese Modelle standardmäßig medium verwenden. Das Senden tools reicht aus, um den Fehler auszulösen. Eine Anwendung, die Tools über Chatvervollständigungen aufruft, kann nach der Aktualisierung ihrer Bereitstellung von einem früheren Argumentationsmodell an nicht mehr funktionieren.
Sie haben zwei Möglichkeiten, sie zu beheben:
-
Empfohlen: Senden von Toolaufrufanforderungen an die Antwort-API. Dieser Pfad unterstützt die gesamte Bandbreite der
reasoning_effort-Werte, gibt Argumentationselemente zurück, die Sie über mehrere Gesprächsrunden hinweg mitführen können, und ist die Oberfläche, auf der neue Argumentationsfunktionen zuerst eingeführt werden. Eine exemplarische Vorgehensweise für die Migration finden Sie unter Upgrade Ihrer Azure OpenAI-App von Chat-Fertigstellungen auf die Antwort-API. - Wenn Sie bei Chatvervollständigungen bleiben müssen, setzen Sie bei jeder Anfrage, die
toolssendet,reasoning_effortaufnone. Das Modell ruft dann Tools ohne Reasoning auf, wodurch die Planungsqualität verloren geht, die Reasoning bietet.
Die folgende Anfrage zeigt den Workaround für Chat Completions:
curl -X POST "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "gpt-5.6-sol",
"messages": [
{"role": "user", "content": "What is the weather in Seattle?"}
],
"reasoning_effort": "none",
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}
]
}'
Legen Sie in .NET denselben Wert über ChatCompletionOptions.ReasoningEffortLevel fest:
using OpenAI.Chat;
ChatTool getWeatherTool = ChatTool.CreateFunctionTool(
functionName: "get_weather",
functionDescription: "Get the current weather for a city.",
functionParameters: BinaryData.FromString("""
{
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
"""));
ChatCompletionOptions options = new ChatCompletionOptions
{
ReasoningEffortLevel = ChatReasoningEffortLevel.None,
MaxOutputTokenCount = 100000
};
options.Tools.Add(getWeatherTool);
Die vollständige Typoberfläche finden Sie in der OpenAI-.NET-Bibliothek.
Hinweis
ChatReasoningEffortLevelist in der OpenAI-.NET-Bibliothek als experimentell gekennzeichnet, sodass die OPENAI001 Diagnose ausgegeben wird. Unterdrücken Sie sie mit #pragma warning disable OPENAI001, wie in den vorherigen Beispielen gezeigt, oder fügen Sie <NoWarn>$(NoWarn);OPENAI001</NoWarn> Ihrer Projektdatei hinzu. Die tokenbasierte Authentifizierung verwendet dieselbe Diagnose.
Begründungsmodus
Die gpt-5.6 Modelle unterstützen zwei Ausführungsmodi in der Antwort-API. Der Standardmodus ist die Standardeinstellung für Azure OpenAI. Setzen Sie reasoning.mode für schwierige Aufgaben, die mehr Rechenaufwand des Modells rechtfertigen und die zusätzliche Latenz verkraften können, auf pro.
Modus und Aufwand sind unabhängige Steuerelemente. Der Modus legt die Standard- oder Pro-Ausführung fest, und reasoning_effort steuert, wie viel Denkaufwand das Modell in diesem Modus einsetzt.
{
"model": "gpt-5.6",
"reasoning": {
"mode": "pro",
"effort": "medium"
},
"input": "Review this database migration plan and identify potential failure modes."
}
Der Pro-Modus aggregiert die ausgeführte Arbeit in einer einzigen Antwort und berechnet diese Token in den Standardraten des Modells. Da sie mehr Arbeit als standardmodus ausführt, erwarten Sie eine höhere Tokennutzung und höhere Kosten. Bestehende Bereitstellungen von Pro-Modellen behalten ihr aktuelles Verhalten und ihre aktuelle Preisgestaltung bei.
Zusammenfassung der Gründe
Wenn Sie die neuesten Denkmodelle mit der Antwort-API verwenden, können Sie den Parameter für Zusammenfassungen des Schlussfolgerungsdenkens nutzen, um Zusammenfassungen der Gedankenkette des Modells zu erhalten.
Der reasoning.summary Parameter wird nicht unterstützt, wenn die Multi-Agent-Orchestrierung aktiviert ist.
Wichtig
Versuche, unverarbeitete Argumentation über andere Methoden als den Begründungs-Zusammenfassungsparameter zu extrahieren, können gegen die Richtlinie für akzeptable Nutzung verstoßen und zu Drosselung oder Aussetzung führen, wenn dies erkannt wird.
using OpenAI;
using OpenAI.Responses;
using System.ClientModel.Primitives;
using Azure.Identity;
#pragma warning disable OPENAI001 //currently required for token based authentication
BearerTokenPolicy tokenPolicy = new(
new DefaultAzureCredential(),
"https://ai.azure.com/.default");
OpenAIResponseClient client = new(
model: "o4-mini",
authenticationPolicy: tokenPolicy,
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
OpenAIResponse response = await client.CreateResponseAsync(
userInputText: "What's the optimal strategy to win at poker?",
new ResponseCreationOptions()
{
ReasoningOptions = new ResponseReasoningOptions()
{
ReasoningEffortLevel = ResponseReasoningEffortLevel.High,
ReasoningSummaryVerbosity = ResponseReasoningSummaryVerbosity.Auto,
},
});
// Get the reasoning summary from the first OutputItem (ReasoningResponseItem)
Console.WriteLine("=== Reasoning Summary ===");
foreach (var item in response.OutputItems)
{
if (item is ReasoningResponseItem reasoningItem)
{
foreach (var summaryPart in reasoningItem.SummaryParts)
{
if (summaryPart is ReasoningSummaryTextPart textPart)
{
Console.WriteLine(textPart.Text);
}
}
}
}
Console.WriteLine("\n=== Assistant Response ===");
// Get the assistant's output
Console.WriteLine(response.GetOutputText());
Hinweis
Selbst wenn diese Option aktiviert ist, ist die Erstellung von Grundübersichten für jeden Schritt/jede Anforderung nicht garantiert. Dies ist ein erwartetes Verhalten.
Schlussfolgerungen über mehrere Aufrufe hinweg beibehalten
Konversationszustand und Zustand des Schlussfolgerns sind nicht dasselbe. Durch das Übergeben von Nachrichten über Anrufe erhält das Modell den sichtbaren Unterhaltungsverlauf. Persistente Argumentation geht noch einen Schritt weiter: Bei Modellen, die sie unterstützen, kann das Modell auch seine eigenen Argumentationselemente aus früheren Gesprächsrunden in den aktuellen Kontext einbeziehen.
Bei persistentem Reasoning geht es um Kontinuität, nicht um Transparenz. Die Gründe für Elemente bleiben undurchsichtig, und die API gibt niemals deren Begründungstext zurück. Legen Sie mit reasoning.context fest, auf welche der verfügbaren Reasoning-Elemente das Modell zurückgreifen kann.
| Wert | Behavior |
|---|---|
auto |
Verwendet die Standardeinstellung des Modells. Das Auslassen reasoning.context hat denselben Effekt. |
current_turn |
Macht den Gedankengang der aktiven Gesprächsrunde für das Modell verfügbar, übernimmt jedoch keinen Gedankengang aus früheren Gesprächsrunden für das nächste Beispiel. |
all_turns |
Rendert verfügbare, kompatible Argumentationselemente aus früheren Gesprächsrunden in das nächste Beispiel. Nur die gpt-5.6 Modelle unterstützen diesen Wert. |
Die gpt-5.6 Modelle unterstützen all_turns und verwenden sie standardmäßig. Frühere Reasoning-Modelle verwenden standardmäßig current_turn.
Wichtig
Da all_turns mehr Argumentationselemente in den Kontext rendert, erhöht es die Anzahl der für eine Anforderung abgerechneten Tokens. Wenn Sie eine vorhandene Workload auf ein gpt-5.6-Modell aktualisieren, müssen Sie bei Konversationen mit mehreren Gesprächsrunden mit einem höheren Tokenverbrauch rechnen, auch wenn sich Ihr Code nicht ändert. Setzen Sie reasoning.context auf current_turn, um das frühere Verhalten beizubehalten.
Beachten Sie die folgenden Verhaltensweisen:
- Die Einstellung
reasoning.contexterstellt keine Reasoning-Elemente, die nicht bereits verfügbar sind. Es steuert nur, welche vorhandenen Elemente das Modell rendert. -
all_turnshat nur auswirkungen, wenn die Anforderung frühere Antwortelemente erreichen kann. Verwenden Sieprevious_response_id, hängen Sie die Antwort an eine Konversation an oder geben Sie selbst den vollständigen Antwortverlauf erneut wieder. - Bei der ersten Anfrage in einer Unterhaltung verhalten sich
current_turnundall_turnsauf die gleiche Weise, da es noch keine vorherige Schlussfolgerung gibt. - Jede Antwort meldet den Modus, den er tatsächlich in seinem
reasoning.contextFeld verwendet, entwedercurrent_turnoderall_turns. Überprüfen Sie dieses Feld, um den effektiven Modus zu bestätigen.
Schlussfolgerung mit gespeicherten Antworten fortsetzen
Wenn Sie Antworten speichern, ist previous_response_id der kürzeste Weg, dem Modell frühere Schlussfolgerungen verfügbar zu machen.
Ein C#-Beispiel für reasoning.context ist noch nicht verfügbar. Wählen Sie die Registerkarte Python oder REST aus, um zu erfahren, wie Sie den Modus festlegen und den tatsächlich verwendeten Wert aus der Antwort auslesen.
Verwenden Sie current_turn, wenn Sie ältere Antwortelemente erneut wiedergeben, die das Modell nicht mehr benötigt. Diese Elemente können in der Anforderungsnutzlast für die Kontinuität verbleiben, aber der Dienst rendert sie nicht im neuen Beispiel, wodurch der gerenderte Kontext in lang ausgeführten Workflows reduziert wird.
Speichern von Gründen ohne gespeicherte Antworten
Im statuslosen Modus enthalten die Reasoning-Elemente im output-Array der Antwort standardmäßig eine encrypted_content-Eigenschaft. Der zustandslose Modus gilt, wenn Sie store auf false festlegen und wenn Ihre Organisation Zero Data Retention verwendet. Sie müssen die Eigenschaft nicht anfordern: Die API akzeptiert reasoning.encrypted_content weiterhin im include Parameter zur Kompatibilität, erfordert sie jedoch nicht mehr.
Um all_turns in diesem Modus zu verwenden, behalten Sie jedes Ausgabenelement bei, hängen Sie die nächste Benutzernachricht an und spielen Sie den vollständigen Verlauf erneut ab.
Ein C#-Beispiel für zustandsloses persistiertes Reasoning ist noch nicht verfügbar. Wählen Sie die Registerkarte Python oder REST aus, um zu sehen, wie verschlüsselte Begründungselemente über mehrere Turns hinweg erneut verwendet werden.
Weitere Informationen zu verschlüsselten Gründen finden Sie unter "Verschlüsselte Begründungselemente".
Phasenparameter
Markieren Sie in lang laufenden oder werkzeugintensiven Workflows, die gpt-5.5 und gpt-5.4 in der Responses API verwenden, jede Assistentennachricht mit einem phase-Wert. Der Parameter ist optional, aber das Auslassen kann dazu führen, dass das Modell eine Präambel als endgültige Antwort behandelt und frühzeitig beendet.
Verwenden Sie commentary für Zwischenaktualisierungen des Assistenten, z. B. die Präambel, die ein Modell vor einem Tool-Aufruf erzeugt, und final_answer für die vollständige Antwort. Fügen Sie Benutzernachrichten kein phase hinzu.
{
"model": "gpt-5.5",
"input": [
{
"role": "assistant",
"phase": "commentary",
"content": "I'll inspect the logs, then summarize the root cause and the fix."
},
{
"role": "assistant",
"phase": "final_answer",
"content": "Root cause: a cache invalidation race."
},
{
"role": "user",
"content": "Now give me a rollout-safe fix plan."
}
]
}
Wenn Sie eine Unterhaltung mithilfe der Verwendung previous_response_idfortsetzen, behält der Dienst den früheren Assistentenstatus für Sie bei. Wenn Sie den Verlauf des Assistenten selbst erneut abspielen, behalten Sie für jede Nachricht den ursprünglichen phase-Wert bei.
Python Lark
GPT-5-Schlussfolgerungsmodelle können ein neues custom_tool mit dem Namen lark_tool aufrufen. Dieses Tool basiert auf Python Lark und kann zur flexibleren Einschränkung der Modellausgabe verwendet werden.
Antwort-API
{
"model": "gpt-5-2025-08-07",
"input": "please calculate the area of a circle with radius equal to the number of 'r's in strawberry",
"tools": [
{
"type": "custom",
"name": "lark_tool",
"format": {
"type": "grammar",
"syntax": "lark",
"definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/"
}
}
],
"tool_choice": "required"
}
Microsoft Entra-ID:
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://ai.azure.com/.default"
)
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
)
response = client.responses.create(
model="gpt-5", # replace with your model deployment name
tools=[
{
"type": "custom",
"name": "lark_tool",
"format": {
"type": "grammar",
"syntax": "lark",
"definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/"
}
}
],
input=[{"role": "user", "content": "Please calculate the area of a circle with radius equal to the number of 'r's in strawberry"}],
)
print(response.model_dump_json(indent=2))
API-Schlüssel:
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model="gpt-5", # replace with your model deployment name
tools=[
{
"type": "custom",
"name": "lark_tool",
"format": {
"type": "grammar",
"syntax": "lark",
"definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/"
}
}
],
input=[{"role": "user", "content": "Please calculate the area of a circle with radius equal to the number of 'r's in strawberry"}],
)
print(response.model_dump_json(indent=2))
Ausgabe:
{
"id": "resp_689a0cf927408190b8875915747667ad01c936c6ffb9d0d3",
"created_at": 1754926332.0,
"error": null,
"incomplete_details": null,
"instructions": null,
"metadata": {},
"model": "gpt-5",
"object": "response",
"output": [
{
"id": "rs_689a0cfd1c888190a2a67057f471b5cc01c936c6ffb9d0d3",
"summary": [],
"type": "reasoning",
"encrypted_content": null,
"status": null
},
{
"id": "msg_689a0d00e60c81908964e5e9b2d6eeb501c936c6ffb9d0d3",
"content": [
{
"annotations": [],
"text": ""strawberry" has 3 r's, so the radius is 3.\nArea = πr<sup>2</sup> = π × 3<sup>2</sup> = 9π ≈ 28.27 square units.",
"type": "output_text",
"logprobs": null
}
],
"role": "assistant",
"status": "completed",
"type": "message"
}
],
"parallel_tool_calls": true,
"temperature": 1.0,
"tool_choice": "auto",
"tools": [
{
"name": "lark_tool",
"parameters": null,
"strict": null,
"type": "custom",
"description": null,
"format": {
"type": "grammar",
"definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/",
"syntax": "lark"
}
}
],
"top_p": 1.0,
"background": false,
"max_output_tokens": null,
"max_tool_calls": null,
"previous_response_id": null,
"prompt": null,
"prompt_cache_key": null,
"reasoning": {
"effort": "medium",
"generate_summary": null,
"summary": null
},
"safety_identifier": null,
"service_tier": "default",
"status": "completed",
"text": {
"format": {
"type": "text"
}
},
"top_logprobs": null,
"truncation": "disabled",
"usage": {
"input_tokens": 139,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 240,
"output_tokens_details": {
"reasoning_tokens": 192
},
"total_tokens": 379
},
"user": null,
"content_filters": null,
"store": true
}
Chat-Vervollständigungen
{
"messages": [
{
"role": "user",
"content": "Which one is larger, 42 or 0?"
}
],
"tools": [
{
"type": "custom",
"name": "custom_tool",
"custom": {
"name": "lark_tool",
"format": {
"type": "grammar",
"grammar": {
"syntax": "lark",
"definition": "start: QUESTION NEWLINE ANSWER\nQUESTION: /[^\\n?]{1,200}\\?/\nNEWLINE: /\\n/\nANSWER: /[^\\n!]{1,200}!/"
}
}
}
}
],
"tool_choice": "required",
"model": "gpt-5-2025-08-07"
}
Verfügbarkeit
Verfügbarkeit der Region
| Modell | Region | Eingeschränkter Zugriff |
|---|---|---|
gpt-5.6-sol |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. Kontingentanforderung je nach Kontingentebene erforderlich. Abonnements der Stufe 5 und Stufe 6 verfügen standardmäßig über ein Kontingent. |
gpt-5.6-terra |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. Kontingentanforderung je nach Kontingentebene erforderlich. Abonnements der Stufe 5 und Stufe 6 verfügen standardmäßig über ein Kontingent. |
gpt-5.6-luna |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. Kontingentanforderung je nach Kontingentebene erforderlich. Abonnements der Stufe 5 und Stufe 6 verfügen standardmäßig über ein Kontingent. |
gpt-chat-latest |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. |
gpt-5.5 |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. Kontingentanforderung je nach Kontingentebene erforderlich. Abonnements der Stufe 5 und Stufe 6 verfügen standardmäßig über ein Kontingent. |
gpt-5.4-mini |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. |
gpt-5.4-nano |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. |
gpt-5.4-pro |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5.4 |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5.3-codex |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5.2-codex |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5.2 |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5.1-codex-max |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5.1 |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5.1-chat |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. |
gpt-5.1-codex |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5.1-codex-mini |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. |
gpt-5-pro |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5-codex |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5 |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
gpt-5-mini |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. |
gpt-5-nano |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. |
o3-pro |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
codex-mini |
Modellverfügbarkeit | Es ist keine Zugriffsanforderung erforderlich. |
o4-mini |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
o3 |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
o3-mini |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
o1 |
Modellverfügbarkeit | Der Zugriff ist für dieses Modell nicht mehr eingeschränkt. |
API- und Featureunterstützung
Eingabe- und Ausgabegrenzwerte teilen das verfügbare Kontextbudget und sind nicht additiv. Ausführliche Informationen und ein BEISPIEL für eine GPT-5.5-Berechnung finden Sie unter Grundlegendes zu Modelltokengrenzwerten und Antwort-API-Tokenbudget.
| Funktion | gpt-5.6-sol, 2026-06-25 | gpt-5.6-terra, 2026-06-25 | gpt-5.6-luna, 2026-06-25 | gpt-5.5, 2026-04-24 | gpt-5.4-nano, 2026-03-17 | gpt-5.4-mini, 2026-03-17 | gpt-5.4-pro | gpt-5.4, 2026-03-05 | gpt-5.3-codex, 2026-02-24 | gpt-5.2-codex, 2026-01-14 | gpt-5.2, 2025-12-11 | gpt-5.1-codex-max, 2025-12-04 | gpt-5.1, 2025-11-13 | gpt-5.1-chat, 2025-11-13 | gpt-5.1-codex, 2025-11-13 | gpt-5.1-codex-mini, 2025-11-13 | gpt-5-pro, 2025-10-06 | gpt-5-codex, 2025-09-011 | gpt-5, 2025-08-07 | gpt-5-mini, 2025-08-07 | gpt-5-nano, 2025-08-07 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Entwicklernachrichten | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Strukturierte Ausgaben | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Kontextfenster | 1,050,000 Eingabe: 922,000 Ausgabe: 128,000 |
1,050,000 Eingabe: 922,000 Ausgabe: 128,000 |
1,050,000 Eingabe: 922,000 Ausgabe: 128,000 |
1,050,000 Eingabe: 922,000 Ausgabe: 128,000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
1,050,000 Eingabe: 922,000 Ausgabe: 128,000 |
1,050,000 Eingabe: 922,000 Ausgabe: 128,000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
128,000 Eingabe: 111.616 Ausgabe: 16,384 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
400,000 Eingabe: 272.000 Ausgabe: 128.000 |
| Begründungsaufwand7 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ 6 | ✅ 4 | ✅ | ✅ | ✅ | ✅ 5 | ✅ | ✅ | ✅ | ✅ |
| Bildeingabe | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| API für Chatabschlusse | ✅ 9 | ✅ 9 | ✅ 9 | ✅ | ✅ | ✅ | - | ✅ | - | - | ✅ | - | ✅ | ✅ | - | - | - | - | ✅ | ✅ | ✅ |
| Antwort-API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Funktionen/Tools | ✅ 9 | ✅ 9 | ✅ 9 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Parallele Toolaufrufe1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | ✅ | ✅ | ✅ | ✅ |
max_completion_tokens
2 |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | ✅ | - | - | ✅ | - | ✅ | ✅ | - | - | - | - | ✅ | ✅ | ✅ |
| Systemnachrichten 3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Zusammenfassung der Gründe | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Persistente Argumentation8 | ✅ | ✅ | ✅ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Streaming | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | ✅ | ✅ | ✅ | ✅ |
1 Parallele Toolaufrufe sind nicht unterstützt, wenn reasoning_effort auf minimal eingestellt ist.
2 Reasoning-Modelle funktionieren nur mit dem max_completion_tokens Parameter, wenn die Chatabschluss-API verwendet wird. Verwenden Sie max_output_tokens mit der Responses-API.
3 Die neuesten Begründungsmodelle unterstützen Systemmeldungen, um die Migration zu vereinfachen. Sie sollten nicht sowohl eine Entwicklernachricht als auch eine Systemnachricht in derselben API-Anforderung verwenden.
4gpt-5.1reasoning_effort ist standardmäßig auf none festgelegt. Beachten Sie beim Upgraden von früheren Begründungsmodellen auf gpt-5.1, dass Sie möglicherweise Ihren Code aktualisieren müssen, um explizit eine reasoning_effort-Ebene zu übergeben, wenn Sie reasoning_effort ausführen möchten.
5gpt-5-pro unterstützt reasoning_efforthighnur , dies ist der Standardwert, auch wenn er nicht explizit an das Modell übergeben wird.
6gpt-5.1-codex-max fügt den Support für eine neue reasoning_effort Stufe von xhigh hinzu, die die höchste Stufe ist, auf die der Denkaufwand festgelegt werden kann.
7gpt-5.6, gpt-5.5, gpt-5.4, gpt-5.2, gpt-5.1, gpt-5.1-codex, gpt-5.1-codex-max und gpt-5.1-codex-mini unterstützen 'None' als Wert für den Parameter reasoning_effort. Wenn Sie diese Modelle verwenden möchten, um Antworten ohne Begründung zu generieren, legen Sie folgendes reasoning_effort='None'fest. Diese Einstellung kann die Geschwindigkeit erhöhen.
8 Die gpt-5.6 Modelle unterstützen all_turns den reasoning.context Parameter und verwenden ihn standardmäßig. Frühere Begründungsmodelle unterstützen nur auto und current_turn.
9gpt-5.6 und spätere Modelle unterstützen die API für Chatvervollständigungen und Funktions-Tools, jedoch nicht beide gleichzeitig, es sei denn, reasoning_effort ist none. Verwenden Sie die Antwort-API für Toolaufrufe. Einzelheiten und Workarounds finden Sie unter Tool-Aufrufe mit Reasoning-Modellen.
NEUE GPT-5 Argumentationsfunktionen
| Funktion | Beschreibung |
|---|---|
reasoning_effort |
max wird nur mit gpt-5.6 und der Responses API unterstützt. xhigh wird nur mit gpt-5.6, gpt-5.5, gpt-5.4 und gpt-5.1-codex-max unterstützt minimal wird nur mit den ursprünglichen GPT-5-Begründungsmodellen unterstützt.
minimal wird nicht mit gpt-5.1 oder höher unterstützt. * Mit gpt-5.6 und neueren Modellen in der Chat-Completions-API ist none der einzige Wert, den Sie mit Funktionstools kombinieren können. Siehe Tool-Aufrufe mit Modellen für logisches Schlussfolgern. Optionen: none, , minimal, lowmedium, high, , , xhighmax |
verbosity |
Ein neuer Parameter, der eine genauere Kontrolle darüber bietet, wie präzise die Ausgabe des Modells sein wird. Optionen: low, medium, high. |
reasoning.context |
Steuert, welche verfügbaren Argumentationselemente das Modell in seinen nächsten Kontext aufnimmt.
all_turns wird nur von gpt-5.6 unterstützt, das sie standardmäßig verwendet.Optionen: auto, current_turn, all_turns. |
reasoning.mode |
Wählt die Standard- oder Pro-Ausführung für gpt-5.6 mit der Responses API aus. Der Pro-Modus führt mehr Modellarbeit an einer Anforderung durch, bevor eine einzelne Antwort zurückgegeben wird, wodurch die Latenz und die Tokennutzung erhöht werden. Azure OpenAI verwendet standard standardmäßig.Options: standard, pro. |
preamble |
GPT-5-Serien-Reasoning-Modelle haben die Möglichkeit, zusätzliche Zeit mit dem "Denken" zu verbringen, bevor sie einen Funktions-/Toolaufruf ausführen. Wenn diese Planung erfolgt, kann das Modell Einblicke in die Planungsschritte in der Modellantwort über ein neues Objekt, das als preamble Objekt bezeichnet wird, bereitstellen.Die Generierung von Präambeln in der Modellantwort ist nicht garantiert, sie können jedoch das Modell fördern, indem Sie den instructions Parameter verwenden und Inhalte wie "Sie MÜSSEN vor jedem Funktionsaufruf umfassend planen" übergeben. Geben Sie immer Ihren Plan an den Benutzer aus, bevor Sie eine Funktion aufrufen" |
| Zulässige Tools | Sie können unter tool_choice mehrere Tools anstelle von nur einem Tool angeben. |
| Benutzerdefinierter Tooltyp | Aktiviert Ausgaben als Rohtext (nicht JSON). |
lark_tool |
Ermöglicht ihnen, einige der Funktionen von Python Lark für flexiblere Einschränkung von Modellantworten zu verwenden. |
*
gpt-5-codex unterstützt auch nicht reasoning_effortminimal.
Hinweis
Nicht unterstützt
Derzeit werden die folgenden Funktionen nicht von Begründungsmodellen unterstützt:
-
temperature, ,top_ppresence_penalty,frequency_penalty,logprobs,top_logprobs, ,logit_biasmax_tokens
Anweisungen zum Prompting
Die Begründungsmodelle funktionieren am besten, wenn Sie ihnen ein klares Ziel, feste Einschränkungen und einen expliziten Ausgabevertrag geben. Im Gegensatz zu Nicht-Reasoning-Modellen müssen Sie nicht jeden Zwischenschritt vorschreiben.
- Geben Sie den Vorgang, die Einschränkungen und das erwartete Ausgabeformat an.
- Betrachten Sie
reasoning_effortals Regler zur Feinabstimmung und nicht als das, wonach Sie als Erstes greifen, wenn die Qualität nachlässt. - Definieren Sie für agentische oder forschungsintensive Workflows, was als erledigt gilt und wie das Modell seine eigene Arbeit überprüfen soll.
Markdown-Ausgabe
Standardmäßig werden die o3-mini und o1 Modelle nicht versuchen, eine Ausgabe mit Markdown-Formatierung zu erstellen. Ein gängiger Anwendungsfall, bei dem dieses Verhalten nicht erwünscht ist, besteht darin, dass das Modell Code ausgibt, der in einem Markdown-Codeblock enthalten ist. Wenn das Modell Ausgabe ohne Markdown-Formatierung generiert, gehen Features wie Syntaxmarkierungen und kopierbare Codeblöcke in interaktiven Playground-Erfahrungen verloren. Um dieses neue standardmäßige Verhalten außer Kraft zu setzen und den Markdown-Einschluss in Modellantworten zu fördern, fügen Sie die Zeichenfolge Formatting re-enabled am Anfang Ihrer Entwicklernachricht hinzu.
Das Hinzufügen von Formatting re-enabled am Anfang der Entwicklermitteilung garantiert nicht, dass das Modell die Markdown-Formatierung in seine Antwort einschließt, es erhöht lediglich die Wahrscheinlichkeit. Wir haben durch interne Tests herausgefunden, dass Formatting re-enabled allein mit dem o1 Modell weniger effektiv ist als mit o3-mini.
Um die Leistung von Formatting re-enabled zu verbessern, können Sie den Beginn der Entwicklernachricht weiter ausbauen, was häufig zur gewünschten Ausgabe führt. Anstatt nur am Anfang Ihrer Entwicklernachricht hinzuzufügen Formatting re-enabled , können Sie mit dem Hinzufügen einer aussagekräftigeren anfänglichen Anweisung experimentieren, z. B. eines der folgenden Beispiele:
Formatting re-enabled - please enclose code blocks with appropriate markdown tags.Formatting re-enabled - code output should be wrapped in markdown.
Je nach Ihren Erwartungen an die Ausgabe müssen Sie möglicherweise Ihre anfängliche Nachricht für Entwickler weiter an Ihren spezifischen Anwendungsfall anpassen.