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