Python을 사용하여 OpenAI와 Azure OpenAI 엔드포인트 간에 전환하는 방법

OpenAI 및 Azure OpenAI Service는 일반적인 Python 클라이언트 라이브러리에 의존하지만 엔드포인트 간에 교환하기 위해 코드를 약간 변경해야 합니다. 이 문서에서는 OpenAI 및 Azure OpenAI에서 작업할 때 발생하는 일반적인 변경 내용과 차이점을 안내합니다.

이 문서에서는 새 OpenAI Python 1.x API 라이브러리를 사용하는 예제만 보여 줍니다. 0.28.1에서 1.x(으)로의 마이그레이션에 대한 자세한 내용은 마이그레이션 가이드를 참조하세요.

필수 조건

None

인증

환경 변수를 사용하는 것이 좋습니다. Python 빠른 시작 전에 이렇게 하지 않았다면 이 구성을 안내해드립니다.

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

모델의 키워드 인수

OpenAI는 model 키워드 인수를 사용하여 사용할 모델을 지정합니다. Azure OpenAI에는 고유한 모델 배포 개념이 있습니다. Azure OpenAI model(을)를 사용하는 경우 모델을 배포할 때 선택한 기본 배포 이름을 참조해야 합니다.

Important

Azure OpenAI에서 API를 통해 모델에 액세스하는 경우 API 호출에서 기본 모델 이름이 아닌 배포 이름을 참조해야 하며, 이는 OpenAI와 Azure OpenAI 간의 주요 차이점 중 하나입니다. OpenAI에는 모델 이름만 필요합니다. Azure OpenAI에는 모델 매개 변수를 사용하는 경우에도 항상 배포 이름이 필요합니다. 문서에는 특정 API 엔드포인트에서 작동하는 모델을 나타내는 데 도움이 되는 모델 이름과 동일한 배포 이름이 표시되는 예제가 있는 경우가 많습니다. 궁극적으로 배포 이름은 사용 사례에 가장 적합한 명명 규칙을 따를 수 있습니다.

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

다중 입력 지원을 포함하는 Azure OpenAI

OpenAI 및 Azure OpenAI는 현재 text-embedding-ada-002에 대해 최대 2,048개의 입력 항목 배열을 지원합니다. 둘 다 이 모델에 대해 API 요청당 최대 입력 토큰 제한이 8,191 미만으로 유지되어야 합니다.

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