Modèles de raisonnement Azure OpenAI
Les modèles Azure OpenAI o1
et o1-mini
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 de la série o1 :
- 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é
Les modèles de la série o1 sont désormais disponibles pour l’accès aux API et le déploiement de modèles. L’inscription est requise et l’accès est accordé en fonction des critères d’éligibilité de Microsoft. Les clients, qui ont précédemment demandé et obtenu l’accès à 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é
Une fois l’accès accordé, vous devez créer un déploiement pour chaque modèle. Si vous disposez d’un déploiement o1-preview
existant, la mise à niveau sur place n’est actuellement pas prise en charge, vous devez créer un nouveau déploiement.
Disponibilité dans les régions
Modèle | Région |
---|---|
o1 |
USA Est 2 (Standard global) Suède Centre (Standard global) |
o1-preview |
Consultez la page des modèles. |
o1-mini |
Consultez la page des modèles. |
Prise en charge des fonctionnalités et des API
Fonctionnalité | o1, 2024-12-17 | o1-preview, 2024-09-12 | o1-mini, 2024-09-12 |
---|---|---|---|
Version de l'API | 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 |
Messages de développeur | ✅ | - | - |
Sorties structurées | ✅ | - | - |
Fenêtre contextuelle | Entrée : 200 000 Sortie : 100 000 |
Entrée : 128 000 Sortie : 32 768 |
Entrée : 128 000 Sortie : 65 536 |
Effort de raisonnement | ✅ | - | - |
Messages système | - | - | - |
Fonctions/outils | ✅ | - | - |
max_completion_tokens |
✅ | ✅ | ✅ |
Les modèles de série o1 fonctionnent uniquement avec le paramètre max_completion_tokens
.
Important
Il existe un problème connu avec le modèle o1
et le paramètre tool_choice
. Actuellement, les appels de fonction qui incluent le paramètre facultatif tool_choice
échouent. Cette page sera mise à jour dès que le problème sera résolu.
Non pris en charge
Actuellement, les éléments suivants ne sont pas pris en charge avec les modèles o1-series :
- Messages système
- Streaming
- 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.
- Les messages système ne sont pas pris en charge avec les modèles de raisonnement de la série o1.
o1-2024-12-17
avec la version d’API2024-12-01-preview
et ultérieure ajoute la prise en charge des messages de développeur.
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))