Cara beralih antara titik akhir OpenAI dan Azure OpenAI dengan Python

Meskipun OpenAI dan Azure OpenAI Service mengandalkan pustaka klien Python umum, ada perubahan kecil yang perlu Anda lakukan pada kode Anda untuk bertukar bolak-balik antar titik akhir. Artikel ini memandikan Anda melalui perubahan dan perbedaan umum yang akan Anda alami saat bekerja di OpenAI dan Azure OpenAI.

Artikel ini hanya menampilkan contoh dengan pustaka API OpenAI Python 1.x baru. Untuk informasi tentang migrasi dari 0.28.1 untuk 1.x merujuk ke panduan migrasi kami.

Prasyarat

Tidak

Otentikasi

Sebaiknya gunakan variabel lingkungan. Jika Anda belum melakukan ini sebelumnya, mulai cepat Python kami memandu Anda melalui konfigurasi ini.

Kunci API

OpenAI Azure OpenAI
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)



import os
from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2023-12-01-preview",
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)

Microsoft Entra ID authentication

OpenAI Azure OpenAI
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)








from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

api_version = "2023-12-01-preview"
endpoint = "https://my-resource.openai.azure.com"

client = AzureOpenAI(
    api_version=api_version,
    azure_endpoint=endpoint,
    azure_ad_token_provider=token_provider,
)

Argumen kata kunci untuk model

OpenAI menggunakan model argumen kata kunci untuk menentukan model apa yang akan digunakan. Azure OpenAI memiliki konsep penyebaran model unik. Saat Anda menggunakan Azure OpenAI, model harus merujuk ke nama penyebaran yang mendasari yang Anda pilih saat Anda menyebarkan model.

Penting

Saat Anda mengakses model melalui API di Azure OpenAI, Anda perlu merujuk ke nama penyebaran daripada nama model yang mendasari dalam panggilan API, yang merupakan salah satu perbedaan utama antara OpenAI dan Azure OpenAI. OpenAI hanya memerlukan nama model. Azure OpenAI selalu memerlukan nama penyebaran, bahkan saat menggunakan parameter model. Dalam dokumen kami, kami sering memiliki contoh di mana nama penyebaran diwakili sebagai identik dengan nama model untuk membantu menunjukkan model mana yang bekerja dengan titik akhir API tertentu. Pada akhirnya nama penyebaran Anda dapat mengikuti konvensi penamaan apa pun yang terbaik untuk kasus penggunaan Anda.

OpenAI Azure OpenAI
completion = client.completions.create(
    model="gpt-3.5-turbo-instruct",
    prompt="<prompt>"
)

chat_completion = client.chat.completions.create(
    model="gpt-4",
    messages="<messages>"
)

embedding = client.embeddings.create(
    model="text-embedding-ada-002",
    input="<input>"
)
completion = client.completions.create(
    model="gpt-35-turbo-instruct", # This must match the custom deployment name you chose for your model.
    prompt="<prompt>"
)

chat_completion = client.chat.completions.create(
    model="gpt-35-turbo", # model = "deployment_name".
    messages="<messages>"
)

embedding = client.embeddings.create(
    model="text-embedding-ada-002", # model = "deployment_name".
    input="<input>"
)

Penyematan Azure OpenAI beberapa dukungan input

OpenAI dan Azure OpenAI saat ini mendukung array input hingga 2.048 item input untuk text-embedding-ada-002. Keduanya memerlukan batas token input maksimum per permintaan API agar tetap di bawah 8.191 untuk model ini.

OpenAI Azure OpenAI
inputs = ["A", "B", "C"] 

embedding = client.embeddings.create(
    input=inputs,
    model="text-embedding-ada-002"
)


inputs = ["A", "B", "C"] #max array size=2048

embedding = client.embeddings.create(
    input=inputs,
    model="text-embedding-ada-002" # This must match the custom deployment name you chose for your model.
    # engine="text-embedding-ada-002"
)