连接到并提示 AI 模型

在本快速入门中,您将学习如何创建一个 .NET 控制台聊天应用,用来连接和提示 OpenAI 或 Azure OpenAI 模型。 应用使用 Microsoft.Extensions.AI 库,因此可以使用 AI 抽象而不是特定 SDK 编写代码。 借助 AI 抽象,你可以通过最少的代码更改来更改基础 AI 模型。

先决条件

先决条件

注释

你还可以使用语义内核完成本文中的任务。 语义内核是一种轻型开源 SDK,可用于生成 AI 代理并将最新的 AI 模型集成到 .NET 应用中。

创建应用

完成以下步骤,创建 .NET 控制台应用以连接到 AI 模型。

  1. 在计算机上的空目录中,使用 dotnet new 命令创建新的控制台应用:

    dotnet new console -o ExtensionsAI
    
  2. 将目录更改为应用文件夹:

    cd ExtensionsAI
    
  3. 安装所需的包:

    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
    
  4. 在 Visual Studio Code 或所选编辑器中打开应用。

创建 AI 服务

  1. 若要预配 Azure OpenAI 服务和模型,请完成 创建和部署 Azure OpenAI 服务资源 文章中的步骤。

  2. 在终端或命令提示符下,导航到项目目录的根目录。

  3. 运行以下命令为示例应用配置 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>
    

配置应用

  1. 从终端或命令提示符导航到 .NET 项目的根目录。

  2. 运行以下命令,将 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 模型发送和接收请求。

  1. benefits.md 文件复制到项目目录。 将项目配置为将此文件复制到输出目录。 如果使用 Visual Studio,请在解决方案资源管理器中右键单击该文件,选择“属性”,然后将“复制到输出目录”设置为“较新时复制”

  2. 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();
    
  3. 添加代码以读取 benefits.md 文件内容,然后为模型创建提示。 提示指示模型以 20 个字或更少的单词汇总文件的文本内容。

    string text = File.ReadAllText("benefits.md");
    string prompt = $"""
        Summarize the the following text in 20 words or less:
        {text}
        """;
    
  4. GetResponseAsync调用该方法以将提示发送到模型以生成响应。

    // Submit the prompt and print out the response.
    ChatResponse response = await client.GetResponseAsync(
        prompt,
        new ChatOptions { MaxOutputTokens = 400 });
    Console.WriteLine(response);
    
  5. 运行应用:

    dotnet run
    

    应用从 AI 模型输出完成响应。 自定义文件的文本内容 benefits.md 或摘要的长度,以查看响应的差异。

清理资源

如果不再需要它们,请删除 Azure OpenAI 资源和 GPT-4 模型部署。

  1. Azure 门户中,导航到 Azure OpenAI 资源。
  2. 选择 Azure OpenAI 资源,然后选择 删除

后续步骤