Sdílet prostřednictvím


Modely zdůvodňování Azure OpenAI

Modely Azure OpenAI o-series jsou navržené tak, aby řešily důvody a úlohy řešení problémů se zvýšeným zaměřením a schopností. Tyto modely tráví více času zpracováním a porozuměním požadavku uživatele, což je mimořádně silné v oblastech, jako jsou věda, kódování a matematika v porovnání s předchozími iteracemi.

Klíčové funkce modelů řady o:

  • Komplexní generování kódu: Umožňuje generovat algoritmy a zpracovávat pokročilé úlohy kódování pro podporu vývojářů.
  • Pokročilé řešení problémů: Ideální pro komplexní debaty a řešení vícestranných problémů.
  • Komplexní porovnání dokumentů: Ideální pro analýzu kontraktů, souborů případů nebo právních dokumentů k identifikaci drobných rozdílů.
  • Instrukce Sledování a správa pracovních postupů: Zvláště efektivní pro správu pracovních postupů vyžadujících kratší kontexty.

Dostupnost

Pro přístup k o3-miniaplikaci , o1a o1-preview, registrace je vyžadována a přístup bude udělen na základě kritérií způsobilosti společnosti Microsoft.

Zákazníci, kteří dříve použili a obdrželi přístup k o1 nebo o1-preview, nemusí znovu použít, protože jsou automaticky na seznamu čekání na nejnovější model.

Vyžádání přístupu: aplikace modelu omezeného přístupu

Regionální dostupnost

Model Oblast Omezený přístup
o3-mini Dostupnost modelu Aplikace modelu s omezeným přístupem
o1 Dostupnost modelu Aplikace modelu s omezeným přístupem
o1-preview Dostupnost modelu Tento model je k dispozici pouze pro zákazníky, kteří měli udělený přístup jako součást původní verze omezeného přístupu. V současné době nešiřujeme přístup k o1-preview.
o1-mini Dostupnost modelu Pro nasazení globálního standardu není potřeba žádná žádost o přístup.

Standardní (regionální) nasazení jsou v současné době k dispozici pouze pro vybrané zákazníky, kteří měli v rámci o1-preview vydání dříve udělený přístup.

Podpora rozhraní API a funkcí

Funkce o3-mini, 2025-01-31 o1, 2024-12-17 o1-preview, 2024-09-12 o1-mini, 2024-09-12
Verze rozhraní 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
Zprávy pro vývojáře - -
Strukturované výstupy - -
Kontextové okno Vstup: 200 000
Výstup: 100 000
Vstup: 200 000
Výstup: 100 000
Vstup: 128 000
Výstup: 32 768
Vstup: 128 000
Výstup: 65 536
Zdůvodnění úsilí - -
Podpora zpracování obrazu - - -
Funkce/nástroje - -
max_completion_tokens*
Systémové zprávy** - -
Streamování - - -

* Modely odůvodnění budou fungovat pouze s parametrem max_completion_tokens .

**Nejnovější model řady o* series podporuje systémové zprávy, které usnadňují migraci. Když použijete systémovou zprávu o3-mini a o1 bude se považovat za zprávu vývojáře. Ve stejném požadavku rozhraní API byste neměli používat zprávu vývojáře i systémovou zprávu.

Nepodporuje se

V současné době nejsou podporované modely odůvodnění:

  • Paralelní volání nástrojů
  • temperature, top_p, presence_penalty, , logprobsfrequency_penalty, top_logprobs, , logit_biasmax_tokens

Využití

Tyto modely v současné době nepodporují stejnou sadu parametrů jako jiné modely, které používají rozhraní API pro dokončování chatu.

Abyste měli přístup k nejnovějším parametrům, budete muset upgradovat klientskou knihovnu OpenAI.

pip install openai --upgrade

Pokud s ověřováním začínáte používat ID Microsoft Entra, přečtěte si, jak nakonfigurovat službu Azure OpenAI s ověřováním 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))

Výstup:

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

Zdůvodnění úsilí

Poznámka:

Modely odůvodnění jsou reasoning_tokens součástí completion_tokens_details odpovědi modelu. Jedná se o skryté tokeny, které se nevrací jako součást obsahu odpovědi na zprávu, ale model je používá k vygenerování konečné odpovědi na vaši žádost. 2024-12-01-preview přidá další nový parametr reasoning_effort , který lze nastavit na low, mediumnebo high s nejnovějším o1 modelem. Čím vyšší je nastavení úsilí, tím déle model stráví zpracováním požadavku, což obvykle vede k většímu reasoning_tokenspočtu .

Zprávy pro vývojáře

Funkčně vývojářské zprávy "role": "developer" jsou stejné jako systémové zprávy.

Přidání zprávy vývojáře do předchozího příkladu kódu by vypadalo takto:

Abyste měli přístup k nejnovějším parametrům, budete muset upgradovat klientskou knihovnu OpenAI.

pip install openai --upgrade

Pokud s ověřováním začínáte používat ID Microsoft Entra, přečtěte si, jak nakonfigurovat službu Azure OpenAI s ověřováním 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))

Výstup Markdownu

Ve výchozím nastavení se modely o1 nebudou o3-mini pokoušet vytvořit výstup, který zahrnuje formátování markdownu. Běžným případem použití, kdy je toto chování nežádoucí, je, když chcete, aby model výstupoval kód obsažený v bloku kódu markdownu. Když model vygeneruje výstup bez formátování Markdownu, ztratíte funkce, jako je zvýraznění syntaxe, a kopírovatelné bloky kódu v interaktivních prostředích dětského hřiště. Pokud chcete toto nové výchozí chování přepsat a podpořit zahrnutí Markdownu do odpovědí modelu, přidejte řetězec Formatting re-enabled na začátek zprávy vývojáře.

Přidání Formatting re-enabled na začátek zprávy vývojáře nezaručuje, že model do odpovědi zahrne formátování Markdownu, zvyšuje se tím pravděpodobnost pouze. Zjistili jsme z interního o1 testování, které Formatting re-enabled je méně účinné samostatně s modelem než s o3-mini.

Pokud chcete zvýšit výkon Formatting re-enabled , můžete dále rozšířit začátek zprávy vývojáře, což často vede k požadovanému výstupu. Místo pouhého přidání Formatting re-enabled na začátek zprávy pro vývojáře můžete experimentovat s přidáním popisnější počáteční instrukce, jako je jeden z následujících příkladů:

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

V závislosti na očekávaném výstupu možná budete muset počáteční zprávu pro vývojáře dále přizpůsobit, aby se zaměřila na váš konkrétní případ použití.