Modèles de raisonnement Azure OpenAI
Les modèles Azure OpenAI o-series
sont conçus pour traiter les tâches de raisonnement et de résolution des problèmes avec un focus et une capacité accrus. Ces modèles passent plus de temps à traiter et à comprendre la requête de l’utilisateur(-trice), ce qui les rend exceptionnellement forts dans des domaines tels que la science, le codage et les mathématiques par rapport aux itérations précédentes.
Fonctionnalités clés des modèles de la série o :
- Génération de code complexe : capable de générer des algorithmes et de gérer des tâches de codage avancées pour prendre en charge les développeurs.
- Résolution avancée des problèmes : idéal pour les sessions complètes de brainstorming et pour relever les défis multidimensionnels.
- Comparaison de documents complexes : idéal pour l’analyse des contrats, des fichiers de cas ou des documents juridiques afin d’identifier les différences subtiles.
- Instructions suivantes et gestion des flux de travail : particulièrement efficace pour la gestion des flux de travail nécessitant des contextes plus courts.
Disponibilité
Pour l’accès à o3-mini
, o1
et o1-preview
, l’inscription est obligatoire, et l’accès sera accordé en fonction des critères d’admissibilité de Microsoft.
Les clients qui ont précédemment demandé, puis obtenu l’accès à o1
ou à o1-preview
n’ont pas besoin de le redemander parce qu’ils sont automatiquement dans la liste d’attente pour le modèle le plus récent.
Demander l’accès : application de modèle d’accès limité
Disponibilité dans les régions
Modèle | Région | Accès limité |
---|---|---|
o3-mini |
Disponibilité du modèle. | Application de modèle d’accès limité |
o1 |
Disponibilité du modèle. | Application de modèle d’accès limité |
o1-preview |
Disponibilité du modèle. | Ce modèle est uniquement disponible pour les clients qui ont bénéficié d'un accès dans le cadre de la version d'accès limité d'origine. Nous n'élargissons actuellement pas l'accès à o1-preview . |
o1-mini |
Disponibilité du modèle. | Aucune requête d’accès n’est nécessaire pour les déploiements standard mondiales. Les déploiements standard (régionaux) ne sont actuellement disponibles que pour certains clients qui ont précédemment bénéficié d'un accès dans le cadre de la version o1-preview . |
Prise en charge des fonctionnalités et des API
Fonctionnalité | o3-mini, 31.01.2025 | o1, 2024-12-17 | o1-preview, 2024-09-12 | o1-mini, 2024-09-12 |
---|---|---|---|---|
Version de l'API | 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 |
Messages de développeur | ✅ | ✅ | - | - |
Sorties structurées | ✅ | ✅ | - | - |
Fenêtre contextuelle | Entrée : 200 000 Sortie : 100 000 |
Entrée : 200 000 Sortie : 100 000 |
Entrée : 128 000 Sortie : 32 768 |
Entrée : 128 000 Sortie : 65 536 |
Effort de raisonnement | ✅ | ✅ | - | - |
Support Vision | - | ✅ | - | - |
Fonctions/outils | ✅ | ✅ | - | - |
max_completion_tokens * |
✅ | ✅ | ✅ | ✅ |
Messages système** | ✅ | ✅ | - | - |
Streaming | ✅ | - | - | - |
*Les modèles de raisonnement fonctionnent uniquement avec le paramètre max_completion_tokens
.
**Le dernier modèle de série o* prend en charge les messages système pour faciliter la migration. Lorsque vous utilisez un message système avec o3-mini
et o1
, le système le traite comme un message de développeur. Vous ne devez pas utiliser à la fois un message de développeur et un message système dans la même requête d’API.
Non pris en charge
Actuellement, les éléments suivants ne sont pas pris en charge avec les modèles de raisonnement :
- Appel d’outils parallèles
-
temperature
,top_p
,presence_penalty
,frequency_penalty
,logprobs
,top_logprobs
,logit_bias
,max_tokens
Utilisation
Actuellement, ces modèles ne prennent pas en charge le même ensemble de paramètres que les autres modèles qui utilisent l’API de complétions de conversation.
Vous devez mettre à niveau votre bibliothèque de client OpenAI pour accéder aux derniers paramètres.
pip install openai --upgrade
Si c’est la première fois que vous utilisez Microsoft Entra ID pour l’authentification, consultez Comment configurer Azure OpenAI Service avec l’authentification 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="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))
Sortie :
{
"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"
}
}
}
]
}
Effort de raisonnement
Remarque
Les modèles de raisonnement ont des reasoning_tokens
qui font partie des completion_tokens_details
dans la réponse du modèle. Il s’agit de jetons masqués qui ne sont pas retournés dans le cadre du contenu de réponse de message, mais qui sont utilisés par le modèle pour aider à générer une réponse finalisée à votre demande.
2024-12-01-preview
ajoute un nouveau paramètre supplémentaire reasoning_effort
qui peut être défini sur low
, medium
ou high
avec le dernier modèle o1
. Plus le paramètre d’effort est élevé, plus le modèle passe du temps à traiter la demande, ce qui devrait entraîner un plus grand nombre de reasoning_tokens
.
Messages de développeur
D’un point de vue fonctionnel, les messages de développeur "role": "developer"
sont identiques aux messages système.
L’ajout d’un message de développeur à l’exemple de code précédent devrait ressembler à ceci :
Vous devez mettre à niveau votre bibliothèque de client OpenAI pour accéder aux derniers paramètres.
pip install openai --upgrade
Si c’est la première fois que vous utilisez Microsoft Entra ID pour l’authentification, consultez Comment configurer Azure OpenAI Service avec l’authentification 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="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))
Sortie Markdown
Par défaut, les modèles o3-mini
et o1
ne tenteront pas de produire une sortie incluant un formatage Markdown. Un cas d'utilisation courant où ce comportement est indésirable est lorsque vous souhaitez que le modèle génère du code contenu dans un bloc de code Markdown. Lorsque le modèle génère une sortie sans formatage Markdown, vous perdez des fonctionnalités telles que la coloration syntaxique et les blocs de code copiables dans les expériences de jeu interactives. Pour remplacer ce nouveau comportement par défaut et encourager l’inclusion de Markdown dans les réponses du modèle, ajoutez la chaîne Formatting re-enabled
au début de votre message de développeur.
L'ajout de Formatting re-enabled
au début de votre message de développeur ne garantit pas que le modèle inclura le formatage Markdown dans sa réponse, cela augmente seulement la probabilité. Nous avons constaté à partir de tests internes que Formatting re-enabled
est moins efficace par lui-même avec le modèle o1
que avec o3-mini
.
Pour améliorer les performances de Formatting re-enabled
vous pouvez augmenter davantage le début du message du développeur, ce qui entraînera souvent la sortie souhaitée. Au lieu d’ajouter simplement Formatting re-enabled
au début de votre message de développeur, vous pouvez expérimenter l’ajout d’une instruction initiale plus descriptive comme l’un des exemples ci-dessous :
Formatting re-enabled - please enclose code blocks with appropriate markdown tags.
Formatting re-enabled - code output should be wrapped in markdown.
En fonction du résultat attendu, vous devrez peut-être personnaliser davantage votre message de développeur initial pour cibler votre cas d'utilisation spécifique.