共用方式為


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

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