共用方式為


使用 AI 搭配 .NET 產生影像

在本快速入門中,您將瞭解如何建立 .NET 控制台應用程式,以使用 OpenAI 或 Azure OpenAI DALLe AI 模型來產生影像,其特別設計目的是要根據文字提示產生影像。

必要條件

  • .NET 8.0 SDK - 安裝 .NET 8.0 SDK
  • OpenAI 中的 API 金鑰,因此您可以執行此範例。
  • 在 Windows 上,需要 PowerShell v7+。 若要驗證您的版本,請在終端機中執行 pwsh。 其應該會傳回目前的版本。 如果傳回錯誤,請執行下列命令:dotnet tool update --global PowerShell

必要條件

注意

您也可以使用 語意核心 來完成本文中的工作。 語意核心是輕量型開放原始碼 SDK,可讓您建置 AI 代理程式,並將最新的 AI 模型整合到 .NET 應用程式中。

複製範例存放庫

您可以使用先前各節中的步驟建立自己的應用程式,也可以複製包含所有快速入門已完成範例應用程式的 GitHub 存放庫。 如果您打算使用 Azure OpenAI,範例存放庫也會結構化為可為您布建 Azure OpenAI 資源的 Azure 開發人員 CLI 範本。

git clone https://github.com/dotnet/ai-samples.git

建立應用程式

完成下列步驟以建立 .NET 控制台應用程式以連線到 AI 模型。

  1. 在您的電腦上的空白目錄中,使用 dotnet new 命令來建立新的控制台應用程式:

    dotnet new console -o ImagesAI
    
  2. 將目錄變更為應用程式資料夾:

    cd ImagesAI
    
  3. 安裝必要的套件:

    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
    dotnet add package OpenAI
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  4. 在 Visual Studio Code 或您選擇的編輯器中開啟應用程式。

    code .
    

建立 AI 服務

範例 GitHub 存放庫的結構是 Azure 開發人員 CLI (azd) 範本, azd 可用來為您布建 Azure OpenAI 服務和模型。

  1. 從終端機或命令提示字元中,流覽至 src\quickstarts\azure-openai 範例存放庫的目錄。

  2. azd up執行 命令來布建 Azure OpenAI 資源。 建立 Azure OpenAI 服務並部署模型可能需要幾分鐘的時間。

    azd up
    

    azd 也會為範例應用程式設定必要的用戶密碼,例如 Azure OpenAI 端點和模型名稱。

設定應用程式

  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>
    

新增應用程式程序代碼

  1. Program.cs 檔案中,新增下列程式代碼,以連線並驗證 AI 模型。

    using Microsoft.Extensions.Configuration;
    using OpenAI.Images;
    using System.ClientModel;
    using Azure.AI.OpenAI;
    using Azure.Identity;
    
    // Retrieve the local secrets saved during the Azure deployment. If you skipped the deployment
    // because you already have an Azure OpenAI available, edit the following lines to use your information,
    // e.g. string openAIEndpoint = "https://cog-demo123.openai.azure.com/";
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string endpoint = config["AZURE_OPENAI_ENDPOINT"];
    string deployment = config["AZURE_OPENAI_DALLE_NAME"];
    
    // Create the Azure OpenAI ImageClient
    ImageClient client =
        new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
            .GetImageClient(deployment);
    
    // Generate the image
    GeneratedImage generatedImage = await client.GenerateImageAsync("""
        A postal card with an happy hiker waving and a beautiful mountain in the background.
        There is a trail visible in the foreground.
        The postal card has text in red saying: 'You are invited for a hike!'
        """, new ImageGenerationOptions { Size = GeneratedImageSize.W1024xH1024 });
    
    Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
    

    注意

    DefaultAzureCredential 從您的本機工具搜尋驗證憑證。 如果您未使用 azd 範本來布建 Azure OpenAI 資源,您必須將 Azure AI Developer 角色指派給您用來登入 Visual Studio 或 Azure CLI 的帳戶。 如需詳細資訊,請參閱使用 .NET 向 Azure AI 服務驗證

    // Licensed to the .NET Foundation under one or more agreements.
    // The .NET Foundation licenses this file to you under the MIT license.
    // See the LICENSE file in the project root for more information.
    using Microsoft.Extensions.Configuration;
    using OpenAI.Images;
    // Retrieve the local secrets that were set from the command line, using:
    // dotnet user-secrets init
    // dotnet user-secrets set OpenAIKey <your-openai-key>
    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string key = config["OpenAIKey"];
    string modelName = config["ModelName"];
    
    // Create the OpenAI ImageClient
    ImageClient client = new(modelName, key);
    
    // Generate the image
    GeneratedImage generatedImage = await client.GenerateImageAsync("""
        A postal card with a happy hiker waving and a beautiful mountain in the background.
        There is a trail visible in the foreground.
        The postal card has text in red saying: 'You are invited for a hike!'
        """,
        new ImageGenerationOptions 
        {
            Size = GeneratedImageSize.W1024xH1024 
        });
    
    Console.WriteLine($"The generated image is ready at:\n{generatedImage.ImageUri}");
    

    上述程式代碼:

    • 從專案的使用者秘密讀取必要的組態值,以連接到 AI 模型
    • 建立 ImageClient 以連線至 AI 模型
    • 將提示傳送至描述所需影像的模型
    • 將產生的影像 URL 列印至控制台輸出
  2. 使用 dotnet run 命令來執行應用程式:

    dotnet run
    

    流覽至主控台輸出中的影像 URL,以檢視產生的影像。 自定義提示的文字內容,以建立新的影像或修改原始影像。

清除資源

當您不再需要範例應用程式或資源時,請移除對應的部署和所有資源。

azd down

下一步