Szerkesztés

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


Váltás az OpenAI és az Azure OpenAI-végpontok között a Pythonnal

Bár az OpenAI és az Azure OpenAI szolgáltatás egy gyakori Python-ügyfélkódtárra támaszkodik, a végpontok közötti váltáshoz apró módosításokat kell végrehajtania a kódon. Ez a cikk végigvezeti az OpenAI és az Azure OpenAI használata során tapasztalt gyakori változásokon és különbségeken.

Ez a cikk csak az új OpenAI Python 1.x API-kódtárral kapcsolatos példákat mutatja be. A migrálásról további információt a 1.x migrálási 0.28.1 útmutatónkban talál.

Előfeltételek

Egyik sem

Hitelesítés

Javasoljuk a Microsoft Entra ID vagy az Azure Key Vault használatát. Környezeti változókat használhat az éles környezeten kívüli teszteléshez. Ha még nem tette meg ezt, a Python rövid útmutatója végigvezeti ezen a konfiguráción.

API-azonosító

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="2024-07-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 = "2024-07-01-preview"
endpoint = "https://my-resource.openai.azure.com"

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

A modell kulcsszóargumentuma

Az OpenAI a kulcsszóargumentumot használja a model használni kívánt modell megadásához. Az Azure OpenAI az egyedi modellek üzembe helyezésének fogalmával rendelkezik. Az Azure OpenAI model használatakor a modell üzembe helyezésekor választott központi telepítési névre kell hivatkoznia.

Fontos

Amikor az Azure OpenAI API-jában keresztül éri el a modellt, az API-hívásokban az alapul szolgáló modellnév helyett az üzembe helyezés nevére kell hivatkoznia, ami az OpenAI és az Azure OpenAI egyik fő különbsége . Az OpenAI csak a modell nevét igényli. Az Azure OpenAI-nak mindig szüksége van az üzembehelyezési névre, még akkor is, ha a modellparamétert használja. A dokumentumainkban gyakran vannak példák arra, hogy az üzembehelyezési nevek azonosak a modellnevekkel, így jelezve, hogy melyik modell működik egy adott API-végponttal. Végső soron az üzemelő példányok nevei bármilyen elnevezési konvenciót követhetnek a használati esethez legjobban.

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

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

embedding = client.embeddings.create(
    model="text-embedding-3-large",
    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-4o", # model = "deployment_name".
    messages="<messages>"
)

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

Az Azure OpenAI több bemeneti támogatást is beágyaz

Az OpenAI és az Azure OpenAI jelenleg legfeljebb 2048 bemeneti elemet támogat a text-embedding-ada-002 beviteli tömbökhöz. Mindkét esetben az API-kérések maximális bemeneti jogkivonat-korlátjának 8191 alatt kell maradnia ehhez a modellhez.

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

embedding = client.embeddings.create(
    input=inputs,
    model="text-embedding-3-large"
)


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

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