Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Modele usługi Azure OpenAI o-series
zostały zaprojektowane do rozwiązywania zadań w zakresie rozumowania i rozwiązywania problemów z większym naciskiem na koncentrację i możliwości. Modele te poświęcają więcej czasu na przetwarzanie i zrozumienie żądania użytkownika, co czyni je wyjątkowo silnymi w obszarach takich jak nauka, kodowanie i matematyka w porównaniu z poprzednimi iteracjami.
Kluczowe możliwości modeli serii o:
- Złożone generowanie kodu: możliwość generowania algorytmów i obsługi zaawansowanych zadań kodowania w celu obsługi deweloperów.
- Zaawansowane rozwiązywanie problemów: idealna opcja dla kompleksowych sesji burzy mózgów i sprostania wielowymiarowym wyzwaniom.
- Złożone porównanie dokumentów: idealne rozwiązanie do analizowania kontraktów, plików przypadków lub dokumentów prawnych w celu identyfikowania subtelnych różnic.
- Postępowanie zgodnie z instrukcjami i zarządzanie procesami: Szczególnie skuteczne zarządzanie procesami wymagającymi krótszych kontekstów.
Dostępność
Dostępność regionu
Model | Rejon | Ograniczony dostęp |
---|---|---|
o3-pro |
Wschodnie stany USA2 i Szwecja Środkowa (Standardowa globalna) | Żądanie dostępu: aplikacja modelu dostępu ograniczonego o3. Jeśli już masz o3 access , żadne żądanie nie jest wymagane dla o3-pro . |
codex-mini |
Wschodnie stany USA2 i Szwecja Środkowa (Standardowa globalna) | Brak wymaganego żądania dostępu. |
o4-mini |
Dostępność modelu | Brak żądania dostępu potrzebnego do korzystania z podstawowych możliwości tego modelu. Żądanie dostępu: funkcja podsumowania rozumowania o4-mini |
o3 |
Dostępność modelu | Żądanie dostępu: aplikacja modelu o3 o ograniczonym dostępie |
o3-mini |
Dostępność modelu. | Dostęp nie jest już ograniczony dla tego modelu. |
o1 |
Dostępność modelu. | Dostęp nie jest już ograniczony dla tego modelu. |
o1-preview |
Dostępność modelu. | Ten model jest dostępny tylko dla klientów, którzy otrzymali dostęp w ramach oryginalnej wersji ograniczonego dostępu. Obecnie nie rozszerzamy dostępu do usługi o1-preview . |
o1-mini |
Dostępność modelu. | Żadne żądanie dostępu nie jest wymagane w przypadku wdrożeń w warstwie Global Standard. Wdrożenia standardowe (regionalne) są obecnie dostępne tylko dla wybranych klientów, którzy wcześniej uzyskali dostęp w ramach o1-preview wersji. |
Wsparcie dla API i funkcji
Funkcja | codex-mini, 2025-05-16 | o3-pro, 2025-06-10 | o4-mini, 2025-04-16 | o3, 2025-04-16 | o3-mini, 2025-01-31 | o1, 2024-12-17 | o1-preview, 2024-09-12 | o1-mini, 2024-09-12 |
---|---|---|---|---|---|---|---|---|
Wersja interfejsu API |
2025-04-01-preview & wersja zapoznawcza v1 |
2025-04-01-preview & wersja zapoznawcza v1 |
2025-04-01-preview & wersja zapoznawcza v1 |
2025-04-01-preview & wersja zapoznawcza v1 |
2025-04-01-preview & wersja zapoznawcza v1 |
2025-04-01-preview & wersja zapoznawcza v1 |
2025-04-01-preview & wersja zapoznawcza v1 |
2025-04-01-preview & wersja zapoznawcza v1 |
Komunikaty dla deweloperów | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Dane wyjściowe ze strukturą | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Okno kontekstu | Dane wejściowe: 200 000 Wynik: 100 000 |
Dane wejściowe: 200 000 Wynik: 100 000 |
Dane wejściowe: 200 000 Wynik: 100 000 |
Dane wejściowe: 200 000 Wynik: 100 000 |
Dane wejściowe: 200 000 Wynik: 100 000 |
Dane wejściowe: 200 000 Wynik: 100 000 |
Dane wejściowe: 128 000 Dane wyjściowe: 32 768 |
Dane wejściowe: 128 000 Dane wyjściowe: 65 536 |
Wysiłek rozumowania | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Dane wejściowe obrazu | ✅ | ✅ | ✅ | ✅ | - | ✅ | - | - |
API Uzupełnień Czatów | - | - | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Odpowiedzi API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Funkcje/narzędzia | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Równoległe wywołania narzędzi | - | - | - | - | - | - | - | - |
max_completion_tokens
1 |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Komunikaty systemowe 2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Podsumowanie rozumowania3 | ✅ | - | ✅ | ✅ | - | - | - | - |
Przesyłanie strumieniowe 4 | ✅ | - | ✅ | ✅ | ✅ | - | - | - |
1 Modele rozumowania będą działać tylko z parametrem max_completion_tokens
.
2 Najnowszy* model serii o obsługuje komunikaty systemowe ułatwiające migrację. W przypadku korzystania z komunikatu systemowego z elementami o4-mini
, o3
o3-mini
i o1
będzie on traktowany jako komunikat dla deweloperów. Nie należy używać zarówno komunikatu dewelopera, jak i komunikatu systemowego w tym samym żądaniu interfejsu API.
3 Dostęp do podsumowania wnioskowania jest ograniczony tylko dla o3
i o4-mini
.
4 Przesyłanie strumieniowe dla o3
jest dostępne wyłącznie przy ograniczonym dostępie.
Uwaga / Notatka
- Aby uniknąć przekroczenia limitu czasu, zaleca się używanie trybu w tle dla programu
o3-pro
. -
o3-pro
obecnie nie obsługuje generowania obrazów.
Nie jest obsługiwany
Poniżej przedstawiono obecnie nieobsługiwane modele rozumowania:
-
temperature
,top_p
,presence_penalty
,frequency_penalty
,logprobs
,top_logprobs
,logit_bias
,max_tokens
Zastosowanie
Te modele nie obsługują obecnie tego samego zestawu parametrów co inne modele korzystające z interfejsu API uzupełniania czatów.
Aby uzyskać dostęp do najnowszych parametrów, należy uaktualnić bibliotekę klienta openAI.
pip install openai --upgrade
Jeśli dopiero zaczynasz używać identyfikatora Entra firmy Microsoft do uwierzytelniania, zobacz How to configure Azure OpenAI in Azure AI Foundry Models with Microsoft Entra ID authentication (Jak skonfigurować usługę Azure OpenAI w modelach usługi Azure AI Foundry przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft).
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="2025-03-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))
Dane wyjściowe języka Python:
{
"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"
}
}
}
]
}
Wysiłek rozumowania
Uwaga / Notatka
Modele rozumowania mają reasoning_tokens
, jako część completion_tokens_details
odpowiedzi modelu. Są to ukryte tokeny, które nie są zwracane jako część zawartości odpowiedzi komunikatu, ale są używane przez model, aby pomóc wygenerować ostateczną odpowiedź na twoje żądanie.
2024-12-01-preview
Dodaje dodatkowy nowy parametr reasoning_effort
, który można ustawić na low
, medium
lub high
z najnowszym o1
modelem. Im wyższe ustawienie wysiłku, tym dłużej model spędzi na przetwarzaniu żądania, co zwykle spowoduje zwiększenie liczby reasoning_tokens
.
Komunikaty dla deweloperów
Komunikaty programistyczne funkcjonalnie są takie same jak komunikaty "role": "developer"
systemowe.
Dodanie komunikatu dla deweloperów do poprzedniego przykładu kodu wygląda następująco:
Aby uzyskać dostęp do najnowszych parametrów, należy uaktualnić bibliotekę klienta openAI.
pip install openai --upgrade
Jeśli dopiero zaczynasz używać identyfikatora Entra firmy Microsoft do uwierzytelniania, zobacz Jak skonfigurować usługę Azure OpenAI przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft.
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="2025-03-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,
reasoning_effort = "medium" # low, medium, or high
)
print(response.model_dump_json(indent=2))
Podsumowanie rozumowania
Korzystając z najnowszych o3
i o4-mini
modeli z interfejsem API odpowiedzi , możesz użyć parametru podsumowania rozumowania, aby otrzymywać podsumowania łańcucha rozumowania modelu. Ten parametr można ustawić na auto
, concise
lub detailed
. Dostęp do tej funkcji wymaga żądania dostępu.
Uwaga / Notatka
Chociaż podsumowania rozumowania są włączone, nie są generowane dla każdego kroku lub żądania. Jest to oczekiwane zachowanie.
Aby uzyskać dostęp do najnowszych parametrów, należy uaktualnić bibliotekę klienta openAI.
pip install openai --upgrade
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(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
azure_ad_token_provider=token_provider,
api_version="preview"
)
response = client.responses.create(
input="Tell me about the curious case of neural text degeneration",
model="o4-mini", # replace with model deployment name
reasoning={
"effort": "medium",
"summary": "detailed" # auto, concise, or detailed (currently only supported with o4-mini and o3)
}
)
print(response.model_dump_json(indent=2))
{
"id": "resp_68007e26b2cc8190b83361014f3a78c50ae9b88522c3ad24",
"created_at": 1744862758.0,
"error": null,
"incomplete_details": null,
"instructions": null,
"metadata": {},
"model": "o4-mini",
"object": "response",
"output": [
{
"id": "rs_68007e2773bc8190b5b8089949bfe13a0ae9b88522c3ad24",
"summary": [
{
"text": "**Summarizing neural text degeneration**\n\nThe user's asking about \"The Curious Case of Neural Text Degeneration,\" a paper by Ari Holtzman et al. from 2020. It explains how certain decoding strategies produce repetitive and dull text. In contrast, methods like nucleus sampling yield more coherent and diverse outputs. The authors introduce metrics like surprisal and distinct-n for evaluation and suggest that maximum likelihood decoding often favors generic continuations, leading to loops and repetitive patterns in longer texts. They promote sampling from truncated distributions for improved text quality.",
"type": "summary_text"
},
{
"text": "**Explaining nucleus sampling**\n\nThe authors propose nucleus sampling, which captures a specified mass of the predictive distribution, improving metrics such as coherence and diversity. They identify a \"sudden drop\" phenomenon in token probabilities, where a few tokens dominate, leading to a long tail. By truncating this at a cumulative probability threshold, they aim to enhance text quality compared to top-k sampling. Their evaluations include human assessments, showing better results in terms of BLEU scores and distinct-n measures. Overall, they highlight how decoding strategies influence quality and recommend adaptive techniques for improved outcomes.",
"type": "summary_text"
}
],
"type": "reasoning",
"status": null
},
{
"id": "msg_68007e35c44881908cb4651b8e9972300ae9b88522c3ad24",
"content": [
{
"annotations": [],
"text": "Researchers first became aware that neural language models, when used to generate long stretches of text with standard “maximum‐likelihood” decoding (greedy search, beam search, etc.), often produce bland, repetitive or looping output. The 2020 paper “The Curious Case of Neural Text Degeneration” (Holtzman et al.) analyzes this failure mode and proposes a simple fix—nucleus (top‑p) sampling—that dramatically improves output quality.\n\n1. The Problem: Degeneration \n • With greedy or beam search, models tend to pick very high‑probability tokens over and over, leading to loops (“the the the…”) or generic, dull continuations. \n • Even sampling with a fixed top‑k (e.g. always sample from the 40 most likely tokens) can be suboptimal: if the model’s probability mass is skewed, k may be too small (overly repetitive) or too large (introducing incoherence).\n\n2. Why It Happens: Distributional Peakedness \n • At each time step the model’s predicted next‐token distribution often has one or two very high‑probability tokens, then a long tail of low‑probability tokens. \n • Maximum‐likelihood decoding zeroes in on the peak, collapsing diversity. \n • Uniform sampling over a large k allows low‑probability “wild” tokens, harming coherence.\n\n3. The Fix: Nucleus (Top‑p) Sampling \n • Rather than fixing k, dynamically truncate the distribution to the smallest set of tokens whose cumulative probability ≥ p (e.g. p=0.9). \n • Then renormalize and sample from that “nucleus.” \n • This keeps only the “plausible” mass and discards the improbable tail, adapting to each context.\n\n4. Empirical Findings \n • Automatic metrics (distinct‑n, repetition rates) and human evaluations show nucleus sampling yields more diverse, coherent, on‑topic text than greedy/beam or fixed top‑k. \n • It also outperforms simple temperature scaling (raising logits to 1/T) because it adapts to changes in the distribution’s shape.\n\n5. Takeaways for Practitioners \n • Don’t default to beam search for open-ended generation—its high likelihood doesn’t mean high quality. \n • Use nucleus sampling (p between 0.8 and 0.95) for a balance of diversity and coherence. \n • Monitor repetition and distinct‑n scores if you need automatic sanity checks.\n\nIn short, “neural text degeneration” is the tendency of likelihood‐maximizing decoders to produce dull or looping text. By recognizing that the shape of the model’s probability distribution varies wildly from step to step, nucleus sampling provides an elegant, adaptive way to maintain both coherence and diversity in generated text.",
"type": "output_text"
}
],
"role": "assistant",
"status": "completed",
"type": "message"
}
],
"parallel_tool_calls": true,
"temperature": 1.0,
"tool_choice": "auto",
"tools": [],
"top_p": 1.0,
"max_output_tokens": null,
"previous_response_id": null,
"reasoning": {
"effort": "medium",
"generate_summary": null,
"summary": "detailed"
},
"status": "completed",
"text": {
"format": {
"type": "text"
}
},
"truncation": "disabled",
"usage": {
"input_tokens": 16,
"output_tokens": 974,
"output_tokens_details": {
"reasoning_tokens": 384
},
"total_tokens": 990,
"input_tokens_details": {
"cached_tokens": 0
}
},
"user": null,
"store": true
}
Dane wyjściowe języka Markdown
Domyślnie modele o3-mini
i o1
nie będą próbować tworzyć danych wyjściowych, które zawierają formatowanie markdown. Typowy przypadek użycia, w którym to zachowanie jest niepożądane, jest to, że chcesz, aby model wyświetlał kod wyjściowy zawarty w bloku kodu markdown. Gdy model generuje dane wyjściowe bez formatowania markdown, utracisz funkcje, takie jak wyróżnianie składni i bloki kodu z możliwością kopiowania w interaktywnych środowiskach zabaw. Aby zastąpić to nowe domyślne zachowanie i zachęcić do dołączania języka Markdown w odpowiedziach modelu, dodaj ciąg Formatting re-enabled
na początku komunikatu dla deweloperów.
Dodanie Formatting re-enabled
na początku wiadomości dla programistów nie gwarantuje, że model uwzględni formatowanie w stylu markdown w swojej odpowiedzi, a jedynie zwiększa to prawdopodobieństwo. Z testów wewnętrznych wynika, że samoczynnie Formatting re-enabled
jest mniej skuteczny w modelu o1
niż w o3-mini
.
Aby poprawić wydajność Formatting re-enabled
, możesz dodatkowo zmodyfikować początek komunikatu deweloperskiego, co często prowadzi do uzyskania pożądanego efektu. Zamiast dodawać Formatting re-enabled
do początku komunikatu dla deweloperów, możesz eksperymentować z dodawaniem bardziej opisowej instrukcji początkowej, takiej jak jedna z poniższych przykładów:
Formatting re-enabled - please enclose code blocks with appropriate markdown tags.
Formatting re-enabled - code output should be wrapped in markdown.
W zależności od oczekiwanych danych wyjściowych może być konieczne dalsze dostosowanie początkowego komunikatu, aby skoncentrować się na konkretnym przypadku użycia.