Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модели Azure OpenAI o-series
предназначены для решения задач логического рассуждения и решения проблем с повышенной концентрацией и возможностями. Эти модели тратят больше времени на обработку и понимание запроса пользователя, что делает их исключительно сильными в таких областях, как наука, программирование и математика по сравнению с предыдущими итерациями.
Ключевые возможности моделей o-серии:
- Сложное создание кода: способен создавать алгоритмы и обрабатывать сложные задачи программирования для поддержки разработчиков.
- Расширенное решение проблем: идеально подходит для комплексных сеансов мозгового штурма и решения сложных задач.
- Комплексное сравнение документов: идеально подходит для анализа контрактов, файлов дела или юридических документов для выявления тонких различий.
- Управление инструкциями и рабочими процессами: особенно эффективно для тех рабочих процессов, которые требуют более коротких контекстов.
Доступность
Доступность по регионам
Модель | Регион | Ограниченный доступ |
---|---|---|
o3-pro |
Восточная часть США2 и Центральная Швеция (глобальный стандарт) | Запрос доступа: приложение модели ограниченного доступа o3. Если у вас уже есть o3 access , запрос для o3-pro не требуется. |
codex-mini |
Восточная часть США2 и Центральная Швеция (глобальный стандарт) | Запрос на доступ не требуется. |
o4-mini |
Доступность модели | Запрос доступа не требуется для использования основных возможностей этой модели. Запрос доступа: функция сводки рассуждений о4-mini |
o3 |
Доступность модели | Запрос доступа: приложение ограниченного доступа модели o3 |
o3-mini |
Доступность модели. | Доступ больше не ограничен для этой модели. |
o1 |
Доступность модели. | Доступ больше не ограничен для этой модели. |
o1-preview |
Доступность модели. | Эта модель доступна только для клиентов, которым предоставлен доступ в рамках исходного выпуска ограниченного доступа. В настоящее время мы не расширяем доступ к o1-preview . |
o1-mini |
Доступность модели. | Запрос на доступ для развертываний Global Standard не требуется. Развертывания уровня "Стандартный" (региональные) в настоящее время доступны только для определенных клиентов, которым ранее был предоставлен доступ в рамках релиза o1-preview . |
Поддержка API и функций
Функция | 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 |
---|---|---|---|---|---|---|---|---|
Версия API |
2025-04-01-preview
> предварительная версия 1 |
2025-04-01-preview
> предварительная версия 1 |
2025-04-01-preview |
2025-04-01-preview |
2024-12-01-preview или позже 2025-03-01-preview (Рекомендуется) |
2024-12-01-preview или позже 2025-03-01-preview (Рекомендуется) |
2024-09-01-preview или позже 2025-03-01-preview (Рекомендуется) |
2024-09-01-preview или позже 2025-03-01-preview (Рекомендуется) |
Сообщения разработчика | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Структурированные выходные данные | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Окно контекста | Входные данные: 200 000 Результат: 100 000 |
Входные данные: 200 000 Результат: 100 000 |
Входные данные: 200 000 Результат: 100 000 |
Входные данные: 200 000 Результат: 100 000 |
Входные данные: 200 000 Результат: 100 000 |
Входные данные: 200 000 Результат: 100 000 |
Вход: 128 000 Выход: 32 768 |
Вход: 128 000 Результат: 65 536 |
Усилие на размышление | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Ввод изображения | ✅ | ✅ | ✅ | ✅ | - | ✅ | - | - |
API завершения чата | - | - | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
API ответов на запросы | ✅ | ✅ | ✅ | ✅ | - | - | - | - |
Функции и инструменты | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Параллельные вызовы инструментов | - | - | - | - | - | - | - | - |
max_completion_tokens
1 |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Системные сообщения 2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | - | - |
Сводка по причинам3 | ✅ | - | ✅ | ✅ | - | - | - | - |
Потоковая передача 4 | ✅ | - | ✅ | ✅ | ✅ | - | - | - |
1 Модели причин будут работать только с параметром max_completion_tokens
.
2 Последняя модель серии o* поддерживает системные сообщения, чтобы упростить миграцию. При использовании системного сообщения с o4-mini
, o3
o3-mini
и o1
оно будет рассматриваться как сообщение разработчика. Не следует использовать как сообщение разработчика, так и системное сообщение в одном запросе API.
3 Доступ к сводке цепочки рассуждений ограничен и доступен только для o3
и o4-mini
.
Трансляция для доступна только ограниченному кругу пользователей.
Замечание
- Чтобы избежать времени ожидания, рекомендуется использовать фоновый
o3-pro
режим. -
o3-pro
в настоящее время не поддерживает генерацию изображений.
Не поддерживается
В настоящее время не поддерживаются следующие модели рассуждений:
-
temperature
,top_p
,presence_penalty
frequency_penalty
logprobs
top_logprobs
logit_bias
max_tokens
Использование
В настоящее время эти модели не поддерживают тот же набор параметров, что и другие модели, использующие API завершения чата.
Вам потребуется обновить клиентскую библиотеку OpenAI для доступа к последним параметрам.
pip install openai --upgrade
Если вы не знакомы с использованием идентификатора Microsoft Entra для проверки подлинности, см. инструкции по настройке Azure OpenAI в модели Azure AI Foundry с проверкой подлинности Microsoft Entra ID.
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))
Выходные данные 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"
}
}
}
]
}
Усилия в рассуждениях
Замечание
Модели рассуждения имеют reasoning_tokens
в качестве части completion_tokens_details
в ответе модели. Это скрытые маркеры, которые не возвращаются в составе содержимого ответа сообщения, но используются моделью для создания окончательного ответа на запрос.
2024-12-01-preview
добавляет дополнительный новый параметр reasoning_effort
, которому можно задать значение low
, medium
или high
с последней моделью o1
. Чем выше параметр усилий, тем дольше модель будет обрабатывать запрос, что обычно приводит к большему количеству reasoning_tokens
.
Сообщения разработчика
Функциональные сообщения "role": "developer"
разработчика совпадают с системным сообщением.
Добавление сообщения разработчика в предыдущий пример кода будет выглядеть следующим образом:
Вам потребуется обновить клиентскую библиотеку OpenAI для доступа к последним параметрам.
pip install openai --upgrade
Если вы не знакомы с использованием идентификатора Microsoft Entra для проверки подлинности, см. инструкции по настройке Azure OpenAI с проверкой подлинности Microsoft Entra ID.
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))
Сводка по причинам
При использовании последних o3
и o4-mini
моделей с API ответов можно использовать параметр обобщения для получения сводок умозаключений модели по цепочке рассуждений. Этот параметр может иметь auto
значение , concise
или detailed
. Для доступа к этой функции требуется запросить доступ.
Замечание
Даже если этот параметр включен, сводки причин не создаются для каждого шага или запроса. Это ожидаемое поведение.
Вам потребуется обновить клиентскую библиотеку 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
}
Выходные данные Markdown
По умолчанию o3-mini
и o1
не будут пытаться создавать результат, включающее форматирование markdown. Распространенный вариант использования, когда это поведение нежелательно, если требуется, чтобы модель выводила код, содержащийся в блоке кода Markdown. При создании выходных данных без форматирования markdown вы теряете такие функции, как подсветка синтаксиса и копируемые блоки кода в интерактивных средах для экспериментов. Чтобы переопределить это новое поведение по умолчанию и поощрять включение markdown в ответы модели, добавьте строку Formatting re-enabled
в начало сообщения разработчика.
Добавление Formatting re-enabled
в начало сообщения разработчика не гарантирует, что модель будет включать форматирование Markdown в ответе, оно лишь увеличивает вероятность этого. Мы обнаружили из внутреннего тестирования, что Formatting re-enabled
менее эффективно само по себе с моделью o1
, чем с o3-mini
.
Чтобы повысить производительность Formatting re-enabled
, можно дополнительно увеличить начало сообщения разработчика, которое часто приведет к нужным выходным данным. Вместо того чтобы просто добавить Formatting re-enabled
в начало сообщения разработчика, можно поэкспериментировать с добавлением более описательных начальных инструкций, таких как один из приведенных ниже примеров:
Formatting re-enabled - please enclose code blocks with appropriate markdown tags.
Formatting re-enabled - code output should be wrapped in markdown.
В зависимости от ожидаемых выходных данных может потребоваться настроить исходное сообщение разработчика для конкретного варианта использования.