Freigeben über


Azure OpenAI-Reasoning-Modelle

Azure OpenAI-Modelle o1 und o1-mini sind für die Behandlung von Reasoning 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 o1-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

Die o1 Serie-Modelle sind jetzt für API-Zugriff und Modellimplementierung verfügbar. Es ist eine Registrierung erforderlich, und der Zugriff wird basierend auf den Berechtigungskriterien von Microsoft gewährt. Die Kundschaft, die sich bereits für das Modell 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

Nachdem der Zugriff gewährt wurde, müssen Sie eine Bereitstellung für jedes Modell erstellen. Wenn Sie über eine vorhandene o1-preview Bereitstellung verfügen, wird derzeit kein direktes Upgrade unterstützt und Sie müssen eine neue Bereitstellung erstellen.

Regionale Verfügbarkeit

Modell Region
o1 USA, Ost 2 (globaler Standard)
Schweden, Mitte (globaler Standard)
o1-preview Siehe Seite "Modelle".
o1-mini Siehe Seite "Modelle".

API- und Feature-Unterstützung

Feature o1, 2024-12-17 o1-Preview, 2024-09-12 o1-Mini, 2024-09-12
API-Version 2024-12-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: 128.000
Ausgabe: 32.768
Eingabe: 128.000
Ausgabe: 65.536
Begründungsaufwand - -
Systemmeldungen - - -
Funktionen/Tools - -
max_completion_tokens

Modelle der o1-Serie funktionieren nur mit dem max_completion_tokens-Parameter.

Wichtig

Es gibt ein bekanntes Problem mit dem o1-Modell und dem tool_choice-Parameter. Derzeit schlagen Funktionsaufrufe, die den optionalen tool_choice-Parameter enthalten, fehl. Diese Seite wird aktualisiert, sobald das Problem behoben wird.

Nicht unterstützt

Folgende Elemente werden derzeit nicht mit Modellen der o1-Serie unterstützt:

  • Systemmeldungen
  • Streaming
  • 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 medium high 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.

  • Systemmeldungen werden mit den Reasoning-Modellen der o1-Serie nicht unterstützt.
  • o1-2024-12-17 mit API-Version: 2024-12-01-preview und höher fügt Unterstützung für Entwicklernachrichten hinzu.

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))