使用Azure OpenAI:使用GPT模型和C#探索聊天补全功能

Photo by ilgmyzin on Unsplash

在这篇技术文章中,我们将在一个C#应用程序中使用Azure OpenAI,具体关注GetChatCompletionsAsync方法。这个方法允许开发人员与OpenAI的聊天模型进行交互,在应用程序中提供自然且动态的对话体验。

我们将使用Azure OpenAI和GPT(生成式预训练转换器)3.5模型部署。

要学习如何在Azure OpenAI和GPT中使用自己的数据,并创建一个dotnet core web项目,请观看我YouTube频道上以下的三部视频播放列表。

先决条件

确保您具备以下先决条件:

  1. 一个启用了OpenAI服务的Azure订阅。
  2. 需要安装Visual Studio或任何C#的开发环境。

创建Azure OpenAI

  1. 创建 Azure OpenAI 资源: a. 登录 Azure 帐户。 b. 点击“创建资源”按钮。 c. 搜索“OpenAI”。 d. 点击“Azure OpenAI”资源。 e. 为资源提供名称、位置和定价层。 f. 保持网络设置不变,然后点击下一步。 g. 创建资源。
  2. 在Azure OpenAI Studio中部署一个新的模型: a. 打开新创建的Azure OpenAI资源,并点击“进入Azure OpenAI Studio”按钮。 b. 在Azure OpenAI Studio中,点击部署选项卡,然后点击创建新的部署。 c. 在选择模型的下拉菜单中,选择“gpt-35-turbo”。 d. 保持模型版本为默认设置,提供一个部署名称,然后点击创建。

这将创建包含GPT模型部署的Azure OpenAI资源。从Azure门户中,记下API密钥和API终结点,这将在代码中用于访问该资源。

安装 OpenAI NuGet 包

  1. 创建一个新的应用程序,安装NuGet包 - "Azure.AI.OpenAI"。
  2. 创建一个 OpenAI 客户端实例—
  3. var openAIClient = new OpenAIClient(new Uri(azOpenAIApiBase), new AzureKeyCredential(azOpenAIKey));

3. azOpenAIApiBase是Azure OpenAI的基本终端URL,而azOpenAIKey是Azure OpenAI密钥,你可以从Azure门户获取这两个参数。

使用 GetChatCompletionsAsync

GetChatCompletionsAsync方法是与基于聊天的语言模型进行交互的核心。它允许你提供一系列的消息作为输入,并接收到一个模型生成的消息作为输出。

以下是一个示例的方法代码片段

  public async Task<Response<ChatCompletions>> GenerateChatResponse(string chatInput)
{
// Create a ChatMessage object and add it to ChatCompletionsOptions
ChatMessage chatMessage = new ChatMessage { Role = ChatRole.User, Content = chatInput };

var options = new ChatCompletionsOptions();
options.Messages.Add(chatMessage);

// Make an asynchronous call to the GetChatCompletions method
var response = await _client.GetChatCompletionsAsync("gpt-35-turbo-model", options);
return response;
}
  1. 在这里,首先创建一个ChatMessage,它会获取用户输入并将其赋值给Content属性。角色将是用户用于输入消息的。
  2. 然后创建ChatCompletionsOptions并将ChatMessage添加到其中。您可以更改options对象中的其他属性,如MaxTokens,Temperature等。
  3. 最后,我们调用 openAIClient.GetChatCompletionsAsync 方法,它需要在上述步骤 #2(在 Azure OpenAI Studio 中部署新模型)中创建的 GPT 部署的名称。
  4. 返回的对象是Response,您可以使用代码从该对象中访问GPT响应。
  5. var openAIResponse = GenerateChatResponse("[Provide user prompt here]");
    var content = openAIResponse.Result.Value.Choices[0].Message.Content;

    Console.WriteLine($"Assistant: {content}");

5. Message.Content 属性提供了 GPT 模型返回的文本值。

这是我们可以使用Azure OpenAI从GPT模型中检索生成的完成的方法。在实际应用中,您将把这个回复集成到您的用户界面或业务逻辑中。

感谢阅读。

我的YouTube频道 — https://www.youtube.com/@jitendrapanchal53/videos

领英 — https://www.linkedin.com/in/jitendra-p/

请支持我

2024-01-13 04:27:02 AI中文站翻译自原文