你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何使用 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 嵌入多输入支持

对于 text-embedding-ada-002,OpenAI 和 Azure OpenAI 目前支持的输入数组最多可以有 2048 个输入项。 两者都要求此模型的每个 API 请求的最大输入令牌上限保持在 8191 之下。

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