Bewerken

Delen via


Schakelen tussen OpenAI- en Azure OpenAI-eindpunten met Python

Hoewel OpenAI en Azure OpenAI Service afhankelijk zijn van een algemene Python-clientbibliotheek, zijn er kleine wijzigingen die u moet aanbrengen in uw code om heen en weer te wisselen tussen eindpunten. In dit artikel worden de algemene wijzigingen en verschillen beschreven die u zult ervaren bij het werken met OpenAI en Azure OpenAI.

In dit artikel worden alleen voorbeelden weergegeven met de nieuwe OpenAI Python 1.x API-bibliotheek. Raadpleeg onze migratiehandleiding voor meer informatie over het 0.28.1 1.x migreren van waaruit u wilt migreren.

Vereisten

Geen

Authenticatie

U wordt aangeraden Microsoft Entra ID of Azure Key Vault te gebruiken. U kunt omgevingsvariabelen gebruiken om buiten uw productieomgeving te testen. Als u dit nog niet eerder hebt gedaan, begeleiden onze Python-quickstarts u bij deze configuratie.

API key

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

Trefwoordargument voor model

OpenAI gebruikt het model trefwoordargument om op te geven welk model moet worden gebruikt. Azure OpenAI heeft het concept van unieke modelimplementaties. Wanneer u Azure OpenAI gebruikt, model moet u verwijzen naar de naam van de onderliggende implementatie die u hebt gekozen bij het implementeren van het model.

Belangrijk

Wanneer u het model opent via de API in Azure OpenAI, moet u verwijzen naar de implementatienaam in plaats van de onderliggende modelnaam in API-aanroepen. Dit is een van de belangrijkste verschillen tussen OpenAI en Azure OpenAI. OpenAI vereist alleen de modelnaam. Azure OpenAI vereist altijd de implementatienaam, zelfs wanneer u de modelparameter gebruikt. In onze documenten hebben we vaak voorbeelden waarin implementatienamen worden weergegeven als identiek aan modelnamen om aan te geven welk model met een bepaald API-eindpunt werkt. Uiteindelijk kunnen uw implementatienamen de naamconventie volgen die het beste is voor uw use-case.

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

Ondersteuning voor meerdere invoer insluiten in Azure OpenAI

OpenAI en Azure OpenAI ondersteunen momenteel invoermatrices tot 2048 invoeritems voor tekst-embedding-ada-002. Beide vereisen de maximale invoertokenlimiet per API-aanvraag om minder dan 8.191 te blijven voor dit model.

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