Dela via


Azure OpenAI-resonemangsmodeller

Azure OpenAI-modeller o-series är utformade för att hantera resonemang och problemlösningsuppgifter med ökat fokus och ökad kapacitet. Dessa modeller ägnar mer tid åt att bearbeta och förstå användarens begäran, vilket gör dem exceptionellt starka inom områden som vetenskap, kodning och matematik jämfört med tidigare iterationer.

Viktiga funktioner i o-seriens modeller:

  • Komplex kodgenerering: Kan generera algoritmer och hantera avancerade kodningsuppgifter för att stödja utvecklare.
  • Avancerad problemlösning: Perfekt för omfattande brainstormingsessioner och hantering av mångfacetterade utmaningar.
  • Komplex dokumentjämförelse: Perfekt för att analysera kontrakt, ärendefiler eller juridiska dokument för att identifiera subtila skillnader.
  • Instruktion efter och arbetsflödeshantering: Särskilt effektivt för att hantera arbetsflöden som kräver kortare kontexter.

Tillgänglighet

För åtkomst till o3-mini, o1och o1-preview, krävs registrering, och åtkomst beviljas baserat på Microsofts berättigandekriterier.

Kunder som tidigare har tillämpat och fått åtkomst till o1 eller o1-preview, behöver inte ansöka på nytt eftersom de automatiskt finns på väntelistan för den senaste modellen.

Begär åtkomst: program för modell för begränsad åtkomst

Region tillgänglighet

Modell Region Begränsad åtkomst
o3-mini Modelltillgänglighet. Program för begränsad åtkomstmodell
o1 Modelltillgänglighet. Program för begränsad åtkomstmodell
o1-preview Modelltillgänglighet. Den här modellen är endast tillgänglig för kunder som har beviljats åtkomst som en del av den ursprungliga versionen av begränsad åtkomst. Vi utökar för närvarande inte åtkomsten till o1-preview.
o1-mini Modelltillgänglighet. Ingen åtkomstbegäran krävs för Global Standard-distributioner.

Standarddistributioner (regionala) är för närvarande endast tillgängliga för att välja kunder som tidigare beviljats åtkomst som en del av o1-preview versionen.

Stöd för API &-funktioner

Funktion o3-mini, 2025-01-31 o1, 2024-12-17 o1-preview, 2024-09-12 o1-mini, 2024-09-12
API-version 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
Utvecklarmeddelanden - -
Strukturerade utdata - -
Kontextfönster Indata: 200 000
Utdata: 100 000
Indata: 200 000
Utdata: 100 000
Indata: 128 000
Utdata: 32 768
Indata: 128 000
Utdata: 65 536
Resonemangsarbete - -
Stöd för visioner - - -
Funktioner/verktyg - -
max_completion_tokens*
Systemmeddelanden** - -
Strömning - - -

* Resonemangsmodeller fungerar bara med parametern max_completion_tokens .

**Den senaste modellen i o-serien* stöder systemmeddelanden för att underlätta migreringen. När du använder ett systemmeddelande med o3-mini och o1 det kommer att behandlas som ett utvecklarmeddelande. Du bör inte använda både ett utvecklarmeddelande och ett systemmeddelande i samma API-begäran.

Stöds inte

Följande stöds för närvarande inte med resonemangsmodeller:

  • Parallella verktygsanrop
  • temperature, top_p, presence_penalty, frequency_penalty, logprobs, , top_logprobs, , logit_biasmax_tokens

Förbrukning

Dessa modeller stöder för närvarande inte samma uppsättning parametrar som andra modeller som använder API:et för chattavslut.

Du måste uppgradera OpenAI-klientbiblioteket för åtkomst till de senaste parametrarna.

pip install openai --upgrade

Om du inte har använt Microsoft Entra-ID för autentisering tidigare kan du läsa Konfigurera Azure OpenAI-tjänsten med Microsoft Entra-ID-autentisering.

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))

Utdata:

{
  "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"
        }
      }
    }
  ]
}

Resonemangsarbete

Kommentar

Resonemangsmodeller har reasoning_tokens som en del av completion_tokens_details i modellsvaret. Det här är dolda token som inte returneras som en del av meddelandets svarsinnehåll, men som används av modellen för att generera ett slutligt svar på din begäran. 2024-12-01-preview lägger till ytterligare en ny parameter reasoning_effort som kan anges till low, mediumeller high med den senaste o1 modellen. Ju högre ansträngningsinställning desto längre tid lägger modellen på att bearbeta begäran, vilket i allmänhet resulterar i ett större antal reasoning_tokens.

Utvecklarmeddelanden

Funktionella utvecklarmeddelanden "role": "developer" är samma som systemmeddelanden.

Om du lägger till ett utvecklarmeddelande i föregående kodexempel ser det ut så här:

Du måste uppgradera OpenAI-klientbiblioteket för åtkomst till de senaste parametrarna.

pip install openai --upgrade

Om du inte har använt Microsoft Entra-ID för autentisering tidigare kan du läsa Konfigurera Azure OpenAI-tjänsten med Microsoft Entra-ID-autentisering.

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))

Markdown-utdata

Modellerna och o1 försöker som standard o3-mini inte skapa utdata som innehåller markdown-formatering. Ett vanligt användningsfall där det här beteendet är oönskat är när du vill att modellen ska mata ut kod som finns i ett markdown-kodblock. När modellen genererar utdata utan markdown-formatering förlorar du funktioner som syntaxmarkering och kopierbara kodblock i interaktiva lekplatsupplevelser. Om du vill åsidosätta det här nya standardbeteendet och uppmuntra markdown-inkludering i modellsvar lägger du till strängen Formatting re-enabled i början av utvecklarmeddelandet.

Att lägga Formatting re-enabled till i början av utvecklarmeddelandet garanterar inte att modellen kommer att innehålla markdown-formatering i sitt svar, det ökar bara sannolikheten. Vi har upptäckt från interna tester som Formatting re-enabled är mindre effektiva av sig själv med o1 modellen än med o3-mini.

För att förbättra prestandan Formatting re-enabled kan du ytterligare utöka början av utvecklarmeddelandet, vilket ofta resulterar i önskade utdata. I stället för att bara lägga Formatting re-enabled till i början av utvecklarmeddelandet kan du experimentera med att lägga till en mer beskrivande inledande instruktion som ett av exemplen nedan:

  • Formatting re-enabled - please enclose code blocks with appropriate markdown tags.
  • Formatting re-enabled - code output should be wrapped in markdown.

Beroende på dina förväntade utdata kan du behöva anpassa ditt första utvecklarmeddelande ytterligare för att rikta in dig på ditt specifika användningsfall.