Editar

Share via


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

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

Este artigo mostra apenas exemplos com a nova biblioteca da API 1.x do Python para OpenAI. Para obter informações sobre como migrar do 0.28.1 para 1.x, consulte nosso guia de migração.

Pré-requisitos

Nenhum

Autenticação

É recomendável usar variáveis de ambiente. Se você ainda não fez isso antes, nossos guias de Início Rápido do Python o orienta por essa configuraçã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 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,
)

Argumento de palavra-chave para modelo

O OpenAI usa o argumento palavra-chave model 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 escolhido ao implantar o modelo.

Importante

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

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

O Azure OpenAI inseriu suporte a várias entradas

Atualmente, o OpenAI e o Azure OpenAI dão suporte às matrizes de entrada de até 2,048 itens de entrada do 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 esse modelo.

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