Partager via


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.