使用 .NET 中的 Azure OpenAI 构建图像生成应用程序

发布:2024-09-29 09:57 阅读:141 点赞:0

一、介绍

在本文中,我们将探讨如何在 .NET 中使用 Azure OpenAI DALL-E 服务,根据用户提示生成图像。通过利用 Azure OpenAI 强大的 DALL·E 模型,我们可以动态创建独特的图像内容。我们将通过示例介绍如何连接到 Azure 的 OpenAI API、提交提示以及在 .NET 应用程序中检索生成的图像。

二、先决条件

在开始之前,请确保准备好以下内容:

  • Azure 订阅:您将需要访问 Azure OpenAI 服务。
  • OpenAI 资源:在您的 Azure 帐户中设置 OpenAI 资源。
  • API 密钥和端点:检索 Azure OpenAI 资源的密钥和端点。
  • Visual Studio 或 .NET SDK:确保您有一个可运行的 .NET 环境。

三、步骤 1:在 Azure 门户中设置 Azure OpenAI

1. 创建 OpenAI 资源

  1. 导航到 Azure 门户,搜索“Azure OpenAI”并单击“创建”。
  2. 提供资源组、区域和定价层等基本详细信息。
  3. 资源部署后,您可以在密钥和端点部分找到 API 端点和密钥。端点部分

2. 部署 DALL-E

在我们的 OpenAI 资源下,转到模型部署部分并部署“dall-e-3”模型。我们稍后将在应用程序中的 API 调用中使用它。

OpenAI

四、步骤 2:创建 .NET C# 项目

创建一个新的控制台应用程序:打开 Visual Studio 并使用 .NET 6.0+ 创建一个新的控制台应用程序。

Visual Studio

五、步骤 3:将代码写入 DALL-E 应用程序

功能目标

通过 Azure OpenAI API 生成图像,具体实现步骤如下:

  1. 初始化 OpenAI 客户端:使用 API 密钥和端点创建客户端。
  2. 配置图像生成选项:设置生成图像的提示和参数。
  3. 发送请求并获取响应:将用户的提示发送到 API,并返回生成的图像 URL。

代码实现

using Azure.AI.OpenAI; // 引入 Azure OpenAI 库
using Azure; // 引入 Azure 库

namespace GenerativeAI // 命名空间定义
{
    public class AzureOpenAIGPT // 定义 AzureOpenAIGPT 类
    {
        // 替换为您的密钥和端点
        const string key = "***********************************"// API 密钥
        const string endpoint = "https://*************.openai.azure.com/"// API 端点
        const string deploymentOrModelName = "imagedemo"// 模型名称

        public async Task<stringGetContent(string prompt// 获取内容的方法
        {
            var client = new OpenAIClient(new Uri(endpoint), new AzureKeyCredential(key)); // 初始化 OpenAI 客户端
            var imageGenerationOptions = new ImageGenerationOptions // 设置图像生成选项
            {
                Prompt = prompt, // 用户提示
                DeploymentName = deploymentOrModelName, // 指定模型名称
                Size = new ImageSize("1024x1024"), // 图像大小
                ImageCount = 1 // 生成图像的数量
            };
            var response = await client.GetImageGenerationsAsync(imageGenerationOptions); // 发送请求并获取响应
            return response.Value.Data[0].Url.AbsoluteUri; // 返回生成图像的 URL
        }
    }

    class Program // 主程序类
    {
        static async Task Main(string[] args// 主方法
        {
            var dalle = new AzureOpenAIGPT(); // 实例化 AzureOpenAIGPT 类
            var dallePrompt = "Cat eating cake on the sky"// 定义提示
            Console.WriteLine($"{await dalle.GetContent(dallePrompt)}"); // 打印生成的图像 URL
            Console.ReadLine(); // 等待用户输入
        }
    }
}

关键组件

  1. API 密钥和端点:这些值特定于您的 Azure 订阅和 OpenAI 资源,至关重要。

    const string key = "your-azure-key"// 替换为您的 Azure 密钥
    const string endpoint = "your-endpoint"// 替换为您的端点
  2. OpenAIClient 初始化:与 Azure OpenAI 服务交互的主要客户端。

    var client = new OpenAIClient(new Uri(endpoint), new AzureKeyCredential(key)); // 初始化客户端
  3. 图像生成选项:配置生成图像的提示和参数。

    var imageGenerationOptions = new ImageGenerationOptions
    {
        Prompt = prompt, // 用户提示
        DeploymentName = deploymentOrModelName, // 模型名称
        Size = new ImageSize("1024x1024"), // 图像大小
        ImageCount = 1 // 生成图像数量
    };
  4. 检索和显示图像 URL:生成的图像以 URL 形式返回,可以直接打开或嵌入到网页中。

    var response = await client.GetImageGenerationsAsync(imageGenerationOptions); // 获取生成图像
    return response.Value.Data[0].Url.AbsoluteUri; // 返回图像 URL
  5. 控制台输出:将图像 URL 输出到控制台。

    Console.WriteLine($"{await dalle.GetContent(dallePrompt)}"); // 打印 URL

六、输出

命名空间

输出

七、结论

这个简单的应用程序介绍了如何使用 Azure OpenAI 的 DALL·E 模型在 .NET 环境中生成图像。通过将 Azure OpenAI 集成到我们的 .NET 项目中,我们可以解锁强大的生成 AI 功能,从而增强用户体验、自动化内容创建并构建创新应用程序。