Partilhar via


Como alternar entre pontos de extremidade OpenAI e Azure OpenAI com Python

Embora o OpenAI e o Azure OpenAI dependam de uma biblioteca de cliente Python comum, há pequenas alterações que você precisa fazer em seu código para trocar entre pontos de extremidade. Este artigo orienta você pelas alterações e diferenças comuns que você experimentará ao trabalhar no OpenAI e no Azure OpenAI.

Pré-requisitos

Nenhuma

Autenticação

Recomendamos o uso do Microsoft Entra ID ou do Azure Key Vault. Você pode usar variáveis de ambiente para testes fora do seu ambiente de produção.

chave de 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,
)

Argumento de palavra-chave para modelo

O OpenAI usa o argumento da model palavra-chave para especificar qual modelo usar. O Azure OpenAI tem o conceito de implantações de modelo exclusivas. Quando você usa o Azure OpenAI, model deve se referir ao nome de implantação subjacente que você escolheu quando implantou o modelo.

Importante

Ao acessar o modelo por meio da API no Azure OpenAI, você precisa se referir ao nome da implantação em vez do nome do modelo subjacente nas chamadas de API, que é uma das principais diferenças entre o OpenAI e o Azure OpenAI. OpenAI requer apenas o nome do modelo. O Azure OpenAI exige sempre o nome da implantação, mesmo quando se utiliza o parâmetro modelo. Em nossos documentos, geralmente temos exemplos em que os nomes de implantação são representados como idênticos aos nomes de modelo para ajudar a indicar qual modelo funciona com um ponto de extremidade de API específico. Em última análise, seus nomes de implantação podem seguir qualquer convenção de nomenclatura que seja melhor para seu caso de uso.

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

O Azure OpenAI incorpora suporte a várias entradas

Atualmente, o OpenAI e o Azure OpenAI suportam matrizes de entrada de até 2.048 itens de entrada para text-embedding-ada-002. Ambos exigem que o limite máximo de token de entrada por solicitação de API permaneça abaixo de 8.191 para este modelo.

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