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" # 这个名字必须与你为模型选择的自定义部署名称匹配 )