Megosztás a következőn keresztül:


Azure OpenAI-érvelési modellek

Az Azure OpenAI-modellek o-series célja az érvelési és problémamegoldási feladatok kezelése nagyobb fókusz és képesség mellett. Ezek a modellek több időt töltenek a felhasználó kérésének feldolgozásával és megértésével, így rendkívül erősek a korábbi iterációkhoz képest olyan területeken, mint a tudomány, a kódolás és a matematika.

Az o-sorozatú modellek főbb képességei:

  • Összetett kódgenerálás: Képes algoritmusok létrehozására és speciális kódolási feladatok kezelésére a fejlesztők támogatásához.
  • Speciális problémamegoldás: Ideális átfogó ötletgyűjtési munkamenetekhez és a sokrétű kihívások kezeléséhez.
  • Összetett dokumentum-összehasonlítás: Tökéletes a szerződések, esetfájlok vagy jogi dokumentumok elemzéséhez a finom különbségek azonosításához.
  • Utasításkövetés és munkafolyamat-kezelés: Különösen hatékony a rövidebb környezeteket igénylő munkafolyamatok kezelésére.

Elérhetőség

A hozzáféréshez o3-miniés o1a o1-previewregisztrációhoz regisztráció szükséges, és a hozzáférés a Microsoft jogosultsági feltételei alapján lesz megadva.

Azok az ügyfelek, akik korábban alkalmazták és megkapták a o1o1-previewhozzáférést, nem kell újból alkalmazniuk őket, mivel automatikusan szerepelnek a legújabb modell várakozási listájában.

Hozzáférés kérése: korlátozott hozzáférésű modellalkalmazás

Régiónkénti elérhetőség

Modell Régió Korlátozott hozzáférés
o3-mini Modell rendelkezésre állása. Korlátozott hozzáférésű modellalkalmazás
o1 Modell rendelkezésre állása. Korlátozott hozzáférésű modellalkalmazás
o1-preview Modell rendelkezésre állása. Ez a modell csak azoknak az ügyfeleknek érhető el, akik az eredeti korlátozott hozzáférésű kiadás részeként kaptak hozzáférést. Jelenleg nem bővítjük a hozzáférést.o1-preview
o1-mini Modell rendelkezésre állása. Nincs szükség hozzáférési kérésre a Global Standard üzemelő példányaihoz.

A standard (regionális) üzemelő példányok jelenleg csak olyan ügyfelek számára érhetők el, akik korábban hozzáférést kaptak a o1-preview kiadás részeként.

API > szolgáltatástámogatás

Szolgáltatás o3-mini, 2025-01-31 o1, 2024-12-17 o1-preview, 2024-09-12 o1-mini, 2024-09-12
API-verzió 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
Fejlesztői üzenetek - -
Strukturált kimenetek - -
Környezeti ablak Bemenet: 200 000
Kimenet: 100 000
Bemenet: 200 000
Kimenet: 100 000
Bemenet: 128 000
Kimenet: 32 768
Bemenet: 128 000
Kimenet: 65 536
Érvelési munka - -
Vision-támogatás - - -
Függvények/eszközök - -
max_completion_tokens*
Rendszerüzenetek** - -
Streamelés - - -

* Az érvelési modellek csak a max_completion_tokens paraméterrel működnek.

**A legújabb o* sorozatú modell támogatja a rendszerüzeneteket a migrálás megkönnyítése érdekében. Ha rendszerüzenetet o3-mini használ, és o1 az fejlesztői üzenetként lesz kezelve. Ne használjon fejlesztői és rendszerüzenetet ugyanabban az API-kérésben.

Nem támogatott

Az érvelési modellek jelenleg nem támogatják az alábbiakat:

  • Párhuzamos eszköz hívása
  • temperature, top_p, presence_penalty, frequency_penaltylogprobs, top_logprobs, logit_biasmax_tokens

Használat

Ezek a modellek jelenleg nem támogatják ugyanazokat a paramétereket , mint a csevegésvégzítési API-t használó többi modell.

Frissítenie kell az OpenAI-ügyfélkódtárat a legújabb paraméterek eléréséhez.

pip install openai --upgrade

Ha még nem használta a Microsoft Entra ID-t a hitelesítéshez, tekintse meg az Azure OpenAI szolgáltatás Microsoft Entra ID-hitelesítéssel való konfigurálását ismertető témakört.

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

Hozam:

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

Érvelési munka

Feljegyzés

Az érvelési modellek a reasoning_tokens modell válaszában completion_tokens_details szerepelnek. Ezek rejtett jogkivonatok, amelyeket nem az üzenet választartalmaként adnak vissza, de a modell a kérésre adott végső válasz létrehozásához használja őket. 2024-12-01-preview Hozzáad egy új paramétert reasoning_effort , amely a következőre lowállítható be, mediumvagy high a legújabb o1 modellel. Minél nagyobb a munkamennyiség beállítása, annál hosszabb időt tölt a modell a kérés feldolgozásával, ami általában nagyobb számú reasoning_tokens.

Fejlesztői üzenetek

Funkcionálisan a fejlesztői üzenetek "role": "developer" megegyeznek a rendszerüzenetekével.

Ha fejlesztői üzenetet ad hozzá az előző kód példájához, az a következőképpen nézne ki:

Frissítenie kell az OpenAI-ügyfélkódtárat a legújabb paraméterek eléréséhez.

pip install openai --upgrade

Ha még nem használta a Microsoft Entra ID-t a hitelesítéshez, tekintse meg az Azure OpenAI szolgáltatás Microsoft Entra ID-hitelesítéssel való konfigurálását ismertető témakört.

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

Alapértelmezés szerint a o3-minio1 modellek nem próbálnak olyan kimenetet létrehozni, amely markdown-formázást tartalmaz. Gyakori használati eset, amikor ez a viselkedés nem kívánatos, ha azt szeretné, hogy a modell egy Markdown-kódblokkban található kódot adjon ki. Ha a modell markdown-formázás nélkül hoz létre kimenetet, elveszíti az olyan funkciókat, mint a szintaxis kiemelése és a másolható kódblokkok az interaktív játszótéri felületeken. Ha felül szeretné bírálni ezt az új alapértelmezett viselkedést, és ösztönözni szeretné a markdown-felvételt a modellválaszokban, adja hozzá a sztringet Formatting re-enabled a fejlesztői üzenet elejéhez.

Ha hozzáadja Formatting re-enabled a fejlesztői üzenet elejéhez, az nem garantálja, hogy a modell markdown-formázást fog tartalmazni a válaszában, csak növeli a valószínűségét. Azt találtuk, a belső tesztelés, amely Formatting re-enabled kevésbé hatékony önmagában a o1 modell, mint a o3-mini.

A teljesítmény Formatting re-enabled javítása érdekében tovább bővítheti a fejlesztői üzenet elejét, amely gyakran a kívánt kimenetet eredményezi. Ahelyett, hogy csak hozzáadta Formatting re-enabled volna a fejlesztői üzenet elejét, kísérletezhet egy leíróbb kezdeti utasítás hozzáadásával, például az alábbi példák egyikével:

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

A várt kimenettől függően előfordulhat, hogy a kezdeti fejlesztői üzenetet tovább kell szabnia, hogy megcélozza az adott használati esetet.