Azure OpenAI-Begründungsmodelle

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 der AZURE_OPENAI_AUTH_TOKEN Umgebungsvariable.

      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.

Diagramm, das zeigt, dass current_turn frühere Schlussfolgerungen verwirft, während all_turns kompatible Schlussfolgerungen über drei Gesprächsrunden hinweg beibehält.

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 tools sendet, reasoning_effort auf none. 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.context erstellt keine Reasoning-Elemente, die nicht bereits verfügbar sind. Es steuert nur, welche vorhandenen Elemente das Modell rendert.
  • all_turns hat nur auswirkungen, wenn die Anforderung frühere Antwortelemente erreichen kann. Verwenden Sie previous_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_turn und all_turns auf die gleiche Weise, da es noch keine vorherige Schlussfolgerung gibt.
  • Jede Antwort meldet den Modus, den er tatsächlich in seinem reasoning.context Feld verwendet, entweder current_turn oder all_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

  • Um Timeouts zu vermeiden, wird der o3-pro empfohlen.
  • o3-pro unterstützt zurzeit keine Bildgenerierung.

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_effort als 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.