Freigeben über


Azure OpenAI-Reasoning-Modelle

Die Azure OpenAI-Modelle der o-series sind für die Behandlung von Erläuterungs- und Problemlösungsaufgaben mit erhöhtem Fokus und mehr Funktionalität konzipiert. Diese Modelle verbringen mehr Zeit damit, die Anforderung eines Benutzers zu verarbeiten und zu verstehen, sodass sie im Vergleich zu früheren Iterationen außergewöhnlich stark in Bereichen wie Wissenschaft, Codierung und Mathematik sind.

Die wichtigsten Funktionen der Modelle der o-Serie:

  • Komplexe Code-Generierung: Kann Algorithmen generieren und fortgeschrittene Programmieraufgaben zur Unterstützung von Entwicklern durchführen.
  • Fortgeschrittene Problemlösung: Ideal für umfassende Brainstorming-Sitzungen und die Bewältigung vielschichtiger Herausforderungen.
  • Komplexer Dokumentenvergleich: Perfekt für die Analyse von Verträgen, Akten oder juristischen Dokumenten, um subtile Unterschiede zu erkennen.
  • Anweisungsbefolgung und Workflow-Management: Besonders effektiv bei der Verwaltung von Workflows, die kürzere Kontexte erfordern.

Verfügbarkeit

Für den Zugriff auf o3-mini, o1 und o1-preview ist eine Registrierung erforderlich, und der Zugriff wird basierend auf den Anspruchskriterien von Microsoft gewährt.

Kundschaft, die sich bereits für o1 oder o1-preview beworben und einen Zugang erhalten hat, muss sich nicht erneut bewerben, da sie automatisch auf der Warteliste für das neueste Modell steht.

Anfordern des Zugriffs: Modellanwendung mit eingeschränktem Zugriff

Regionale Verfügbarkeit

Modell Region Eingeschränkter Zugriff
o3-mini Modellverfügbarkeit. Modellanwendung mit eingeschränktem Zugriff
o1 Modellverfügbarkeit. Modellanwendung mit eingeschränktem Zugriff
o1-preview Modellverfügbarkeit. Dieses Modell ist nur für Kund*innen verfügbar, denen der Zugriff im Rahmen der ursprünglichen Version mit eingeschränktem Zugriff gewährt wurde. Es wird derzeit kein Zugriff auf o1-preview erweitert.
o1-mini Modellverfügbarkeit. Für globale Standardbereitstellungen ist keine Zugriffsanforderung erforderlich.

Standardbereitstellungen (regional) sind derzeit nur für ausgewählte Kund*innen verfügbar, denen der Zugriff im Rahmen der o1-preview-Version zuvor gewährt wurde.

API- und Feature-Unterstützung

Feature o3-mini, 2025-01-31 o1, 2024-12-17 o1-Preview, 2024-09-12 o1-Mini, 2024-09-12
API-Version 2024-12-01-preview
2025-01-01-preview
2024-12-01-preview
2025-01-01-preview
2024-09-01-preview
2024-10-01-preview
2024-12-01-preview
2024-09-01-preview
2024-10-01-preview
2024-12-01-preview
Entwicklernachrichten - -
Strukturierte Ausgaben - -
Kontextfenster Eingabe: 200,000
Ausgabe: 100,000
Eingabe: 200,000
Ausgabe: 100,000
Eingabe: 128.000
Ausgabe: 32.768
Eingabe: 128.000
Ausgabe: 65.536
Begründungsaufwand - -
Vision-Support - - -
Funktionen/Tools - -
max_completion_tokens*
Systemmeldungen** - -
Streaming - - -

* Erläuterungsmodelle funktionieren nur mit dem Parameter max_completion_tokens.

**Das neueste Modell der o*-Serie unterstützt Systemnachrichten, um die Migration zu vereinfachen. Wenn Sie eine Systemnachricht mit o3-mini und o1 verwenden, wird diese als Entwicklernachricht behandelt. Sie sollten nicht sowohl eine Entwicklernachricht als auch eine Systemnachricht in derselben API-Anforderung verwenden.

Nicht unterstützt

Folgende Elemente werden derzeit nicht mit Erläuterungsmodellen unterstützt:

  • Parallele Toolaufrufe
  • temperature, top_p, presence_penalty, frequency_penalty, logprobs, top_logprobs, logit_bias, max_tokens

Verbrauch

Diese Modelle unterstützen derzeit nicht denselben Satz von Parametern wie andere Modelle, welche die Chatabschluss-API verwenden.

Sie müssen Ihre OpenAI-Clientbibliothek für den Zugriff auf die neuesten Parameter aktualisieren.

pip install openai --upgrade

Wenn Sie mit der Verwendung von Microsoft Entra ID für die Authentifizierung noch nicht vertraut sind, lesen Sie Konfigurieren von Azure OpenAI Service mit Microsoft Entra ID-Authentifizierung.

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  azure_ad_token_provider=token_provider,
  api_version="2024-12-01-preview"
)

response = client.chat.completions.create(
    model="o1-new", # replace with the model deployment name of your o1-preview, or o1-mini model
    messages=[
        {"role": "user", "content": "What steps should I think about when writing my first Python API?"},
    ],
    max_completion_tokens = 5000

)

print(response.model_dump_json(indent=2))

Ausgabe:

{
  "id": "chatcmpl-AEj7pKFoiTqDPHuxOcirA9KIvf3yz",
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "message": {
        "content": "Writing your first Python API is an exciting step in developing software that can communicate with other applications. An API (Application Programming Interface) allows different software systems to interact with each other, enabling data exchange and functionality sharing. Here are the steps you should consider when creating your first Python API...truncated for brevity.",
        "refusal": null,
        "role": "assistant",
        "function_call": null,
        "tool_calls": null
      },
      "content_filter_results": {
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "protected_material_code": {
          "filtered": false,
          "detected": false
        },
        "protected_material_text": {
          "filtered": false,
          "detected": false
        },
        "self_harm": {
          "filtered": false,
          "severity": "safe"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      }
    }
  ],
  "created": 1728073417,
  "model": "o1-2024-12-17",
  "object": "chat.completion",
  "service_tier": null,
  "system_fingerprint": "fp_503a95a7d8",
  "usage": {
    "completion_tokens": 1843,
    "prompt_tokens": 20,
    "total_tokens": 1863,
    "completion_tokens_details": {
      "audio_tokens": null,
      "reasoning_tokens": 448
    },
    "prompt_tokens_details": {
      "audio_tokens": null,
      "cached_tokens": 0
    }
  },
  "prompt_filter_results": [
    {
      "prompt_index": 0,
      "content_filter_results": {
        "custom_blocklists": {
          "filtered": false
        },
        "hate": {
          "filtered": false,
          "severity": "safe"
        },
        "jailbreak": {
          "filtered": false,
          "detected": false
        },
        "self_harm": {
          "filtered": false,
          "severity": "safe"
        },
        "sexual": {
          "filtered": false,
          "severity": "safe"
        },
        "violence": {
          "filtered": false,
          "severity": "safe"
        }
      }
    }
  ]
}

Begründungsaufwand

Hinweis

Reasoning-Modelle sind reasoning_tokens Teil der completion_tokens_details Modellantwort. Hierbei handelt es sich um ausgeblendete Tokens, die nicht als Teil des Nachrichtenantwortinhalts zurückgegeben werden, sondern vom Modell verwendet werden, um eine endgültige Antwort auf Ihre Anforderung zu generieren. 2024-12-01-preview fügt einen zusätzlichen neuen Parameter reasoning_effort hinzu, der auf lowoder mediumhigh mit dem neuesten o1 Modell festgelegt werden kann. Je höher die Leistungseinstellung ist, desto länger wird das Modell die Verarbeitung der Anforderung ausgeben, was in der Regel zu einer größeren Anzahl von reasoning_tokens.

Entwicklernachrichten

Funktionsbezogene Entwicklernachrichten "role": "developer" sind identisch mit Systemnachrichten.

Das Hinzufügen einer Entwicklernachricht zum vorherigen Codebeispiel würde wie folgt aussehen:

Sie müssen Ihre OpenAI-Clientbibliothek für den Zugriff auf die neuesten Parameter aktualisieren.

pip install openai --upgrade

Wenn Sie mit der Verwendung von Microsoft Entra ID für die Authentifizierung noch nicht vertraut sind, lesen Sie Konfigurieren von Azure OpenAI Service mit Microsoft Entra ID-Authentifizierung.

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  azure_ad_token_provider=token_provider,
  api_version="2024-12-01-preview"
)

response = client.chat.completions.create(
    model="o1-new", # replace with the model deployment name of your o1-preview, or o1-mini model
    messages=[
        {"role": "developer","content": "You are a helpful assistant."}, # optional equivalent to a system message for reasoning models 
        {"role": "user", "content": "What steps should I think about when writing my first Python API?"},
    ],
    max_completion_tokens = 5000

)

print(response.model_dump_json(indent=2))

Markdown-Ausgabe

Standardmäßig versuchen die o3-mini- und o1-Modelle nicht, eine Ausgabe mit Markdown-Formatierung zu erstellen. Ein gängiger Anwendungsfall, bei dem dieses Verhalten nicht erwünscht ist, besteht, wenn 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 Standardverhalten 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 zum Anfang der Entwicklernachricht garantiert nicht, dass das Modell Markdown-Formatierung in seine Antwort einschließt, es erhöht nur die Wahrscheinlichkeit dafür. In internen Tests wurde herausgefunden, dass Formatting re-enabled mit dem Modell o1 weniger effektiv ist als mit o3-mini.

Um die Leistung von Formatting re-enabled zu verbessern, können Sie den Anfang der Entwicklernachricht weiter erweitern, was häufig zur gewünschten Ausgabe führt. Anstatt nur am Anfang Ihrer Entwicklernachricht Formatting re-enabled hinzuzufügen, können Sie das Hinzufügen einer aussagekräftigeren anfänglichen Anweisung probieren, z. B.:

  • Formatting re-enabled - please enclose code blocks with appropriate markdown tags.
  • Formatting re-enabled - code output should be wrapped in markdown.

Je nach der von Ihnen erwarteten Ausgabe müssen Sie Ihre anfängliche Entwicklernachricht möglicherweise weiter an Ihren spezifischen Anwendungsfall anpassen.