使用 Azure OpenAI SDK
除了上一单元中介绍的 REST API 外,用户还可以通过 C# 和 Python SDK 访问 Azure OpenAI 模型。 通过 REST 和这些 SDK 提供相同的功能。
注意
在使用任一 SDK 与 API 交互之前,必须在 Azure 门户中创建 Azure OpenAI 资源,在该资源中部署模型,并检索终结点和密钥。 请查看 Azure OpenAI 服务入门,了解如何执行此操作。
对于本单元中介绍的 SDK,需要 Azure OpenAI 资源的终结点和密钥,以及为部署的模型提供的名称。 在以下代码片段中,使用以下占位符:
占位符名称 | 值 |
---|---|
YOUR_ENDPOINT_NAME |
此基本终结点位于 Azure 门户的“密钥和终结点”部分。 它是资源的基本终结点,例如 https://sample.openai.azure.com/ 。 |
YOUR_API_KEY |
密钥位于 Azure 门户的“密钥和终结点”部分。 可以在资源中使用任一密钥。 |
YOUR_DEPLOYMENT_NAME |
此部署名称是在 Azure AI Studio 中部署模型时提供的名称。 |
安装库
首先,安装首选语言的客户端库。 C# SDK 是 REST API 的 .NET 适应,专为 Azure OpenAI 而构建,但它可用于连接到 Azure OpenAI 资源或非 Azure OpenAI 终结点。 Python SDK 由 OpenAI 生成和维护。
dotnet add package Azure.AI.OpenAI --version <insert preferred version>
pip install openai
配置应用以访问 Azure OpenAI 资源
每种语言的配置略有不同,但两种语言都需要设置相同的参数。 必需的参数是 endpoint
、key
和部署的名称,当向模型发送提示时,部署的名称被称为 engine
。
将库添加到应用,并为客户端设置所需的参数。
// Add OpenAI library
using Azure.AI.OpenAI;
// Define parameters and initialize the client
string endpoint = "<YOUR_ENDPOINT_NAME>";
string key = "<YOUR_API_KEY>";
string deploymentName = "<YOUR_DEPLOYMENT_NAME>";
OpenAIClient client = new OpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));
# Add OpenAI library
from openai import AzureOpenAI
deployment_name = '<YOUR_DEPLOYMENT_NAME>'
# Initialize the Azure OpenAI client
client = AzureOpenAI(
azure_endpoint = '<YOUR_ENDPOINT_NAME>',
api_key='<YOUR_API_KEY>',
api_version="20xx-xx-xx" # Target version of the API, such as 2024-02-15-preview
)
调用 Azure OpenAI 资源
配置与 Azure OpenAI 的连接后,将提示发送给模型。
// Build completion options object
ChatCompletionsOptions chatCompletionsOptions = new ChatCompletionsOptions()
{
Messages =
{
new ChatRequestSystemMessage("You are a helpful AI bot."),
new ChatRequestUserMessage("What is Azure OpenAI?"),
},
DeploymentName = deploymentName
};
// Send request to Azure OpenAI model
ChatCompletions response = client.GetChatCompletions(chatCompletionsOptions);
// Print the response
string completion = response.Choices[0].Message.Content;
Console.WriteLine("Response: " + completion + "\n");
response = client.chat.completions.create(
model=deployment_name,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is Azure OpenAI?"}
]
)
generated_text = response.choices[0].message.content
# Print the response
print("Response: " + generated_text + "\n")
响应对象包含多个值,例如 total_tokens
和 finish_reason
。 响应对象的完成类似于以下完成:
"Azure OpenAI is a cloud-based artificial intelligence (AI) service that offers a range of tools and services for developing and deploying AI applications. Azure OpenAI provides a variety of services for training and deploying machine learning models, including a managed service for training and deploying deep learning models, a managed service for deploying machine learning models, and a managed service for managing and deploying machine learning models."
在 C# 和 Python 中,调用可以包含可选参数,其中包括 temperature
和 max_tokens
。 本模块的实验室中包含了使用这些参数的示例。