字节笔记本字节笔记本

OpenAI 包如何切换至Azure OpenAI 终结

2024-06-21

本文介绍了如何在Python中通过设置环境变量和使用API密钥或Microsoft Entra ID进行身份验证,实现在OpenAI和Azure OpenAI终结点之间的切换,并提供了调用不同模型的方法。

为了在 Python 中在 OpenAI 和 Azure OpenAI 终结点之间进行切换,可以按照以下操作步骤进行配置和调用。这些步骤展示了如何设置环境变量、身份验证以及调用不同模型的方法。

设置环境变量

首先,确保设置好环境变量,用于存储 API 密钥和 Azure 终结点。可以在系统环境变量中配置,或者在代码中临时设置:

import os
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
os.environ["AZURE_OPENAI_API_KEY"] = "your-azure-openai-api-key"
os.environ["AZURE_OPENAI_ENDPOINT"] = "your-azure-openai-endpoint"

使用 API 密钥进行身份验证

OpenAI

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

Azure OpenAI

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 进行身份验证

Microsoft Entra ID 是 Microsoft 提供的一种身份验证和访问管理服务。它以前被称为 Azure Active Directory (Azure AD)。它允许开发人员和组织管理用户身份并确保对资源的安全访问。使用 Microsoft Entra ID,可以实现单点登录、多因素身份验证等安全特性。

OpenAI

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

Azure OpenAI

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 = os.getenv("AZURE_OPENAI_ENDPOINT")

client = AzureOpenAI(
    api_version=api_version,
    azure_endpoint=endpoint,
    azure_ad_token_provider=token_provider,
)

模型的关键字参数

OpenAI

completion = client.completions.create(
    model="gpt-3.5-turbo-instruct",
    prompt="your-prompt"
)

chat_completion = client.chat.completions.create(
    model="gpt-4",
    messages="your-messages"
)

embedding = client.embeddings.create(
    model="text-embedding-ada-002",
    input="your-input"
)

Azure OpenAI

completion = client.completions.create(
    model="gpt-35-turbo-instruct", # 这个名字必须与你为模型选择的自定义部署名称匹配
    prompt="your-prompt"
)

chat_completion = client.chat.completions.create(
    model="gpt-35-turbo", # 这里的 model 是指 "deployment_name"
    messages="your-messages"
)

embedding = client.embeddings.create(
    model="text-embedding-ada-002", # 这里的 model 是指 "deployment_name"
    input="your-input"
)

多输入支持

OpenAI

inputs = ["A", "B", "C"] 

embedding = client.embeddings.create(
    input=inputs,
    model="text-embedding-ada-002"
)

Azure OpenAI

inputs = ["A", "B", "C"] # 最大数组大小为2048

embedding = client.embeddings.create(
    input=inputs,
    model="text-embedding-ada-002" # 这个名字必须与你为模型选择的自定义部署名称匹配
)