Bagikan melalui


Model penalaran Azure OpenAI

Model Azure OpenAI o-series dirancang untuk mengatasi tugas penalaran dan pemecahan masalah dengan peningkatan fokus dan kemampuan. Model-model ini menghabiskan lebih banyak waktu untuk memproses dan memahami permintaan pengguna, membuatnya sangat kuat di bidang-bidang seperti sains, pengodean, dan matematika dibandingkan dengan iterasi sebelumnya.

Kemampuan utama model seri o:

  • Pembuatan Kode Kompleks: Mampu menghasilkan algoritma dan menangani tugas pengkodean tingkat lanjut untuk mendukung pengembang.
  • Pemecahan Masalah Tingkat Lanjut: Ideal untuk sesi curah otak yang komprehensif dan mengatasi tantangan multifaktor.
  • Perbandingan Dokumen Kompleks: Sempurna untuk menganalisis kontrak, file kasus, atau dokumen hukum untuk mengidentifikasi perbedaan yang halang.
  • Instruksi Mengikuti dan Manajemen Alur Kerja: Sangat efektif untuk mengelola alur kerja yang membutuhkan konteks yang lebih pendek.

Ketersediaan

Untuk akses ke o3-mini, o1, dan o1-preview, pendaftaran diperlukan, dan akses akan diberikan berdasarkan kriteria kelayakan Microsoft.

Pelanggan yang sebelumnya menerapkan dan menerima akses ke o1 atau o1-preview, tidak perlu menerapkan kembali karena mereka secara otomatis berada di daftar tunggu untuk model terbaru.

Meminta akses: aplikasi model akses terbatas

Ketersediaan wilayah

Model Wilayah Akses terbatas
o3-mini Ketersediaan model. Aplikasi model akses terbatas
o1 Ketersediaan model. Aplikasi model akses terbatas
o1-preview Ketersediaan model. Model ini hanya tersedia untuk pelanggan yang diberikan akses sebagai bagian dari rilis akses terbatas asli. Saat ini kami tidak memperluas akses ke o1-preview.
o1-mini Ketersediaan model. Tidak ada permintaan akses yang diperlukan untuk penyebaran Standar Global.

Penyebaran standar (regional) saat ini hanya tersedia untuk memilih pelanggan yang sebelumnya diberikan akses sebagai bagian o1-preview dari rilis.

API & dukungan fitur

Fitur o3-mini, 2025-01-31 o1, 2024-12-17 o1-preview, 2024-09-12 o1-mini, 2024-09-12
Versi 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
Pesan Pengembang - -
Output Terstruktur - -
Jendela Konteks Input: 200.000
Output: 100.000
Input: 200.000
Output: 100.000
Input: 128.000
Output: 32.768
Input: 128.000
Output: 65.536
Upaya penalaran - -
Dukungan Visi - - -
Fungsi/Alat - -
max_completion_tokens*
Pesan Sistem** - -
Streaming - - -

* Model penalaran hanya akan berfungsi dengan max_completion_tokens parameter .

**Model seri o* terbaru mendukung pesan sistem untuk mempermudah migrasi. Ketika Anda menggunakan pesan sistem dengan o3-mini dan o1 itu akan diperlakukan sebagai pesan pengembang. Anda tidak boleh menggunakan pesan pengembang dan pesan sistem dalam permintaan API yang sama.

Tidak Didukung

Berikut ini saat ini tidak didukung dengan model penalaran:

  • Panggilan alat paralel
  • temperature, , presence_penaltytop_p, frequency_penalty, logprobs, top_logprobs, , logit_bias,max_tokens

Penggunaan

Model ini saat ini tidak mendukung serangkaian parameter yang sama dengan model lain yang menggunakan API penyelesaian obrolan.

Anda harus meningkatkan pustaka klien OpenAI Anda untuk akses ke parameter terbaru.

pip install openai --upgrade

Jika Anda baru menggunakan ID Microsoft Entra untuk autentikasi, lihat Cara mengonfigurasi Layanan Azure OpenAI dengan autentikasi ID Microsoft Entra.

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

Output:

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

Upaya penalaran

Catatan

Model penalaran memiliki reasoning_tokens sebagai bagian completion_tokens_details dari dalam respons model. Ini adalah token tersembunyi yang tidak dikembalikan sebagai bagian dari konten respons pesan tetapi digunakan oleh model untuk membantu menghasilkan jawaban akhir atas permintaan Anda. 2024-12-01-preview menambahkan parameter reasoning_effort baru tambahan yang dapat diatur ke low, medium, atau high dengan model terbaru o1 . Semakin tinggi pengaturan upaya, semakin lama model akan menghabiskan pemrosesan permintaan, yang umumnya akan menghasilkan jumlah yang lebih besar dari reasoning_tokens.

Pesan pengembang

Pesan pengembang "role": "developer" secara fungsional sama dengan pesan sistem.

Menambahkan pesan pengembang ke contoh kode sebelumnya akan terlihat sebagai berikut:

Anda harus meningkatkan pustaka klien OpenAI Anda untuk akses ke parameter terbaru.

pip install openai --upgrade

Jika Anda baru menggunakan ID Microsoft Entra untuk autentikasi, lihat Cara mengonfigurasi Layanan Azure OpenAI dengan autentikasi ID Microsoft Entra.

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

Output markdown

Secara default o3-mini model dan o1 tidak akan mencoba menghasilkan output yang menyertakan pemformatan markdown. Kasus penggunaan umum di mana perilaku ini tidak diinginkan adalah ketika Anda ingin model menghasilkan kode yang terkandung dalam blok kode markdown. Saat model menghasilkan output tanpa pemformatan markdown, Anda kehilangan fitur seperti penyorotan sintaks, dan blok kode yang dapat disalin dalam pengalaman playground interaktif. Untuk mengambil alih perilaku default baru ini dan mendorong penyertaan markdown dalam respons model, tambahkan string Formatting re-enabled ke awal pesan pengembang Anda.

Formatting re-enabled Menambahkan ke awal pesan pengembang Anda tidak menjamin bahwa model akan menyertakan pemformatan markdown dalam responsnya, itu hanya meningkatkan kemungkinan. Kami telah menemukan dari pengujian internal yang Formatting re-enabled kurang efektif dengan sendirinya o1 dengan model daripada dengan o3-mini.

Untuk meningkatkan performa Formatting re-enabled Anda dapat menambah lebih lanjut awal pesan pengembang yang akan sering menghasilkan output yang diinginkan. Daripada hanya menambahkan Formatting re-enabled ke awal pesan pengembang, Anda dapat bereksperimen dengan menambahkan instruksi awal yang lebih deskriptif seperti salah satu contoh di bawah ini:

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

Bergantung pada output yang diharapkan, Anda mungkin perlu menyesuaikan pesan pengembang awal Anda lebih lanjut untuk menargetkan kasus penggunaan spesifik Anda.