共用方式為


如何使用 Python 在 OpenAI 和 Azure OpenAI 端點之間切換

雖然 OpenAI 和 Azure OpenAI 依賴 一般 Python 用戶端連結庫,但您需要對程式碼進行少量變更,才能在端點之間來回交換。 本文將逐步引導您完成跨 OpenAI 和 Azure OpenAI 工作時所遇到的常見變更和差異。

必要條件

驗證

建議您使用 Microsoft Entra ID 或 Azure Key Vault。 您可以使用環境變數在實際執行環境外部進行測試。

API 金鑰

OpenAI Azure OpenAI
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)



import os
from openai import OpenAI
    
client = OpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
)

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 OpenAI

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = OpenAI(
    base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/", 
    api_key = token_provider,
)

模型的關鍵字引數

OpenAI 會使用 model 關鍵字引數來指定要使用的模型。 Azure OpenAI 具有唯一模型部署的概念。 您使用 Azure OpenAI 時,model 應該參考您在部署模型時所選擇的基礎部署名稱。

這很重要

當您透過 Azure OpenAI 中的 API 存取模型時,您需要參考部署名稱,而不是 API 呼叫中的基礎模型名稱,這是 OpenAI 與 Azure OpenAI 之間的一個主要差異 (部分機器翻譯)。 OpenAI 只需要模型名稱。 即使使用模型參數,Azure OpenAI 一律需要部署名稱。 在我們的文件中,通常會有一些範例,其中部署名稱會表示為與模型名稱相同,以協助指出哪個模型適用於特定 API 端點。 您的部署名稱最終可以遵循最適合使用案例的任何命名慣例。

OpenAI Azure OpenAI
response = client.responses.create(   
    model="gpt-4.1-nano", # Replace with your model deployment name 
    input="This is a test."
)

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

embedding = client.embeddings.create(
    model="text-embedding-3-large",
    input="<input>"
)
response = client.responses.create(   
    model="gpt-4.1-nano", # Replace with your model deployment name 
    input="This is a test."
)

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

Azure OpenAI 內嵌多個輸入支援

OpenAI 和 Azure OpenAI 目前支援最多 2,048 個 text-embedding-ada-002 輸入項目的輸入陣列。 兩者都需要每個 API 要求的最大輸入權杖限制,才能在此模型中維持在 8,191 之下。

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