在本快速入门中,您将学习如何创建一个 .NET 控制台聊天应用,用来连接和提示 OpenAI 或 Azure OpenAI 模型。 应用使用 Microsoft.Extensions.AI 库,因此可以使用 AI 抽象而不是特定 SDK 编写代码。 借助 AI 抽象,你可以通过最少的代码更改来更改基础 AI 模型。
先决条件
- .NET 8.0 SDK 或更高版本 - 安装 .NET 8.0 SDK。
- OpenAI 的 API 密钥,可以用于运行此示例。
先决条件
- .NET 8.0 SDK 或更高版本 - 安装 .NET 8 SDK。
- Azure 订阅 - 免费创建一个订阅。
- Azure 开发人员 CLI (可选) - 安装或更新 Azure 开发人员 CLI。
注释
你还可以使用语义内核完成本文中的任务。 语义内核是一种轻型开源 SDK,可用于生成 AI 代理并将最新的 AI 模型集成到 .NET 应用中。
创建应用
完成以下步骤,创建 .NET 控制台应用以连接到 AI 模型。
在计算机上的空目录中,使用
dotnet new
命令创建新的控制台应用:dotnet new console -o ExtensionsAI
将目录更改为应用文件夹:
cd ExtensionsAI
安装所需的包:
dotnet add package Azure.AI.OpenAI dotnet add package Azure.Identity dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package OpenAI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
在 Visual Studio Code 或所选编辑器中打开应用。
创建 AI 服务
若要预配 Azure OpenAI 服务和模型,请完成 创建和部署 Azure OpenAI 服务资源 文章中的步骤。
在终端或命令提示符下,导航到项目目录的根目录。
运行以下命令为示例应用配置 Azure OpenAI 终结点和模型名称:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME <your-Azure-OpenAI-model-name>
配置应用
从终端或命令提示符导航到 .NET 项目的根目录。
运行以下命令,将 OpenAI API 密钥配置为示例应用的机密:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-OpenAI-key> dotnet user-secrets set ModelName <your-OpenAI-model-name>
添加应用代码
应用使用该 Microsoft.Extensions.AI
包向 AI 模型发送和接收请求。
将 benefits.md 文件复制到项目目录。 将项目配置为将此文件复制到输出目录。 如果使用 Visual Studio,请在解决方案资源管理器中右键单击该文件,选择“属性”,然后将“复制到输出目录”设置为“较新时复制”。
在
Program.cs
文件中,添加以下代码以连接并向 AI 模型进行身份验证。using Microsoft.Extensions.Configuration; using Microsoft.Extensions.AI; using Azure.AI.OpenAI; using Azure.Identity; var config = new ConfigurationBuilder() .AddUserSecrets<Program>() .Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_GPT_NAME"]; IChatClient client = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()) .GetChatClient(deployment) .AsIChatClient();
注释
DefaultAzureCredential 从本地工具中搜寻身份验证凭据。 如果不使用
azd
模板来预配 Azure OpenAI 资源,则需要将Azure AI Developer
角色分配给用于登录到 Visual Studio 或 Azure CLI 的帐户。 有关详细信息,请参阅使用 .NET 向 Azure AI 服务进行身份验证。using Microsoft.Extensions.AI; using Microsoft.Extensions.Configuration; using OpenAI; IConfigurationRoot config = new ConfigurationBuilder() .AddUserSecrets<Program>() .Build(); string? model = config["ModelName"]; string? key = config["OpenAIKey"]; IChatClient client = new OpenAIClient(key).GetChatClient(model).AsIChatClient();
添加代码以读取
benefits.md
文件内容,然后为模型创建提示。 提示指示模型以 20 个字或更少的单词汇总文件的文本内容。string text = File.ReadAllText("benefits.md"); string prompt = $""" Summarize the the following text in 20 words or less: {text} """;
GetResponseAsync
调用该方法以将提示发送到模型以生成响应。// Submit the prompt and print out the response. ChatResponse response = await client.GetResponseAsync( prompt, new ChatOptions { MaxOutputTokens = 400 }); Console.WriteLine(response);
运行应用:
dotnet run
应用从 AI 模型输出完成响应。 自定义文件的文本内容
benefits.md
或摘要的长度,以查看响应的差异。
清理资源
如果不再需要它们,请删除 Azure OpenAI 资源和 GPT-4 模型部署。
- 在 Azure 门户中,导航到 Azure OpenAI 资源。
- 选择 Azure OpenAI 资源,然后选择 删除。