Přepínání mezi koncovými body OpenAI a Azure OpenAI pomocí Pythonu

Zatímco Služba OpenAI a Azure OpenAI spoléhají na společnou klientskou knihovnu Pythonu, je potřeba v kódu provést malé změny, abyste mohli přepínat mezi koncovými body a zpět. Tento článek vás provede běžnými změnami a rozdíly, ke které dochází při práci napříč OpenAI a Azure OpenAI.

Tento článek ukazuje pouze příklady s novou knihovnou rozhraní API OpenAI Python 1.x. Informace o migraci z 0.28.1 průvodce 1.x migrací najdete v našem průvodci migrací.

Požadavky

Nic

Ověřování

Doporučujeme používat proměnné prostředí. Pokud jste to ještě neudělali, naše rychlé starty Pythonu vás provedou touto konfigurací.

Klíč rozhraní 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 klíčového slova pro model

OpenAI používá argument klíčového model slova k určení modelu, který se má použít. Azure OpenAI má koncept jedinečných nasazení modelu. Při použití Azure OpenAI by se měl odkazovat na základní název nasazení, model který jste zvolili při nasazení modelu.

Důležité

Když k modelu přistupujete přes rozhraní API v Azure OpenAI, musíte místo názvu základního modelu ve voláních rozhraní API odkazovat na název nasazení, což je jeden z klíčových rozdílů mezi OpenAI a Azure OpenAI. OpenAI vyžaduje pouze název modelu. Azure OpenAI vždy vyžaduje název nasazení, i když používáte parametr modelu. V naší dokumentaci často máme příklady, kdy jsou názvy nasazení reprezentovány jako identické s názvy modelů, což pomáhá určit, který model funguje s konkrétním koncovým bodem rozhraní API. V konečném důsledku můžou názvy nasazení dodržovat jakoukoli konvenci pojmenování, která je pro váš případ použití nejvhodnější.

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 embeddings multiple input support

OpenAI a Azure OpenAI v současné době podporují vstupní pole až 2 048 vstupních položek pro vkládání textu ada-002. Obě vyžadují maximální limit vstupního tokenu na požadavek rozhraní API, aby pro tento model zůstal pod 8 191.

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