Édition

Share via


Comment basculer entre des points de terminaison OpenAI et Azure OpenAI avec Python

Bien qu’OpenAI et Azure OpenAI Service s’appuient sur une bibliothèque de client Python commune, vous devez apporter de petites modifications à votre code pour pouvoir effectuer un échange entre des points de terminaison. Cet article vous guide à travers les modifications et les différences courantes que vous rencontrez lors de l’utilisation d’OpenAI et d’Azure OpenAI.

Cet article présente des exemples avec la nouvelle bibliothèque d’API OpenAI Python 1.x uniquement. Pour plus d’informations sur la migration de 0.28.1 vers 1.x reportez-vous à notre guide de migration.

Prérequis

Aucun

Authentification

Nous vous recommandons d’utiliser des variables d’environnement. Si vous ne l’avez pas effectué auparavant, nos démarrages rapide Python vous guident tout au long de cette configuration.

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

Argument de mot clé pour un modèle

OpenAI utilise l’argument de mot clé model pour spécifier le modèle à utiliser. Azure OpenAI établit le concept de déploiements de modèles uniques. Lorsque vous utilisez Azure OpenAI, model doit faire référence au nom de déploiement sous-jacent que vous avez choisi lors du déploiement du modèle.

Important

Lorsque vous accédez au modèle via l’API dans Azure OpenAI, vous devez faire référence au nom du déploiement plutôt qu’au nom du modèle sous-jacent dans les appels d’API, qui est l’une des principales différences entre OpenAI et Azure OpenAI. OpenAI nécessite uniquement le nom du modèle. Azure OpenAI nécessite toujours un nom de déploiement, même lors de l’utilisation du paramètre de modèle. Dans les exemples de notre documentation, les noms de déploiement sont souvent représentés de la même façon que les noms de modèle pour vous aider à savoir quel modèle fonctionne avec un point de terminaison d’API particulier. En fin de compte, vos noms de déploiement peuvent suivre la convention d’affectation de noms la mieux adaptée à votre cas d’usage.

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

Prise en charge d’incorporations Azure OpenAI à plusieurs entrées

OpenAI et Azure OpenAI prennent actuellement en charge des tableaux d’entrée contenant jusqu’à 2 048 éléments d’entrée pour text-embedding-ada-002. Les deux nécessitent que la limite maximale de jetons d’entrée par requête d’API reste inférieure à 8 191 pour ce modèle.

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