Bearbeiten

Freigeben über


Wechseln zwischen OpenAI- und Azure OpenAI-Endpunkten mit Python

Zwar basieren OpenAI und Azure OpenAI Service auf einer gemeinsamen Python-Clientbibliothek, jedoch müssen Sie kleine Änderungen an Ihrem Code vornehmen, um zwischen Endpunkten hin und her zu wechseln. In diesem Artikel werden die allgemeinen Änderungen und Unterschiede erläutert, die bei der Arbeit in OpenAI und Azure OpenAI auftreten.

In diesem Artikel werden nur Beispiele mit der neuen OpenAI Python 1.x-API-Bibliothek gezeigt. Informationen zur Migration von 0.28.1 zu 1.x finden Sie in unserem Migrationsleitfaden.

Voraussetzungen

Keine

Authentifizierung

Wir empfehlen die Verwendung von Umgebungsvariablen. Wenn Sie dies bisher noch nicht getan haben, führen unsere Python-Schnellstarts Sie durch diese Konfiguration.

API-Schlüssel

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

Schlüsselwortargument für das Modell

OpenAI verwendet das Schlüsselwortargument model für die Angabe, welches Modell verwendet werden soll. Azure OpenAI verfügt über das Konzept einzigartiger Modellimplementierungen. Bei Verwendung von Azure OpenAI sollte model auf den Namen der zugrunde liegenden Bereitstellung verweisen, den Sie bei der Bereitstellung des Modells ausgewählt haben.

Wichtig

Wenn Sie über die API in Azure OpenAI auf das Modell zugreifen, müssen Sie in API-Aufrufen auf den Bereitstellungsnamen und nicht auf den Namen des zugrunde liegenden Modells verweisen. Dies ist einer der wichtigsten Unterschiede zwischen OpenAI und Azure OpenAI. OpenAI erfordert nur den Modellnamen. Azure OpenAI erfordert immer den Bereitstellungsnamen, auch wenn der model-Parameter verwendet wird. In unserer Dokumentation gibt es häufig Beispiele, in denen die Bereitstellungsnamen mit den Modellnamen identisch sind, um zu verdeutlichen, welches Modell mit einem bestimmten API-Endpunkt funktioniert. Letztendlich können Ihre Bereitstellungsnamen der Benennungskonvention folgen, die für Ihren Anwendungsfall am besten geeignet ist.

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

Unterstützung für die Einbettung mehrerer Eingaben in Azure OpenAI

OpenAI und Azure OpenAI unterstützen derzeit Eingabearrays mit bis zu 2.048 Eingabeelementen für text-embedding-ada-002. In diesem Modell erfordern beide, dass pro API-Anforderung weniger als 8.191 Eingabetoken verwendet werden.

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