كيفية التبديل بين نقاط نهاية OpenAI وAzure OpenAI باستخدام Python

بينما يعتمد OpenAI وخدمة Azure OpenAI على مكتبة عميل Python مشتركة، هناك تغييرات صغيرة تحتاج إلى إجراؤها على التعليمات البرمجية الخاصة بك من أجل التبديل ذهابا وإيابا بين نقاط النهاية. ترشدك هذه المقالة إلى التغييرات والاختلافات الشائعة التي ستختبرها عند العمل عبر OpenAI وAzure OpenAI.

تعرض هذه المقالة فقط أمثلة مع مكتبة OpenAI Python 1.x API الجديدة. للحصول على معلومات حول الترحيل من 0.28.1 للإشارة إلى 1.x دليل الترحيل الخاص بنا.

المتطلبات الأساسية

بلا

المصادقه

نوصي باستخدام متغيرات البيئة. إذا لم تكن قد فعلت ذلك من قبل، فإن قوالب التشغيل السريع ل Python الخاصة بنا ترشدك خلال هذا التكوين.

مفتاح 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,
)

وسيطة الكلمة الأساسية للنموذج

يستخدم OpenAI وسيطة model الكلمة الأساسية لتحديد النموذج الذي يجب استخدامه. يحتوي Azure OpenAI على مفهوم عمليات نشر النموذج الفريدة. عند استخدام Azure OpenAI، model يجب أن تشير إلى اسم النشر الأساسي الذي اخترته عند نشر النموذج.

هام

عند الوصول إلى النموذج عبر واجهة برمجة التطبيقات في Azure OpenAI، تحتاج إلى الرجوع إلى اسم النشر بدلا من اسم النموذج الأساسي في استدعاءات واجهة برمجة التطبيقات، وهو أحد الاختلافات الرئيسية بين OpenAI وAzure OpenAI. يتطلب OpenAI اسم النموذج فقط. يتطلب Azure OpenAI دائما اسم النشر، حتى عند استخدام معلمة النموذج. في مستنداتنا، غالبا ما يكون لدينا أمثلة حيث يتم تمثيل أسماء النشر على أنها مطابقة لأسماء النماذج للمساعدة في الإشارة إلى النموذج الذي يعمل مع نقطة نهاية API معينة. في نهاية المطاف، يمكن أن تتبع أسماء النشر الخاصة بك أي اصطلاح تسمية هو الأفضل لحالة الاستخدام الخاصة بك.

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

يقوم Azure OpenAI بتضمين دعم إدخال متعدد

يدعم OpenAI وAzure OpenAI حاليا صفائف الإدخال حتى 2048 عنصر إدخال ل text-embedding-ada-002. يتطلب كلاهما الحد الأقصى رمز الإدخال المميز لكل طلب واجهة برمجة تطبيقات للبقاء تحت 8191 لهذا النموذج.

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