首页 > 编程语言 >使用 Azure OpenAI 使用 C# 生成图像

使用 Azure OpenAI 使用 C# 生成图像

时间:2023-08-25 17:34:02浏览次数:29  
标签:C# 生成 cs OpenAI 图像 Azure 我们

Microsoft启用使用 Azure OpenAI 生成映像的选项。在这篇文章中,我将向您展示如何轻松地使用 REST API 通过人工智能生成图像,方法是用 C# 编写一个简单的控制台应用程序来连接到 Azure OpenAI 实例。

image-20230815120756540

介绍

Microsoft引入了在 Azure OpenAI 服务中使用 DALL-E 生成映像的可能性。在这篇文章中,我将向您展示如何使用 REST API 通过编写一个简单的控制台应用程序来生成图像。

请求访问 Azure OpenAI

目前,你需要请求访问 Azure OpenAI 服务,并拥有有效的 Azure 订阅。如果是这种情况,您需要填写Microsoft申请表。您需要回答不同的问题,并给Microsoft一些时间来接受您的请求。

添加所需的 Azure 资源

如果你有权访问 Azure OpenAI 服务,则可以打开 Azure 门户并开始添加 OpenAI 资源。在市场中搜索Azure OpenAI。请确保选择有权访问 Azure OpenAI 服务的订阅。

目前 DALL-E 仅在“美国东部”区域提供,因此请务必选择“美国东部”。

image-20230815120925653在接下来的步骤中,您无需更改任何内容。因此,只需保留默认值。在最后一页上,按**“创建”**按钮。

image-20230815120955356

在 Azure 门户中打开新创建的资源,然后在“概述”页上,只需按“转到 Azure OpenAI 工作室”链接或“浏览”按钮。

image-20230815121250859

在 Azure AI Studio 中,你将在左侧找到菜单项 **DALL-E(预览版)。**只需单击它。

image-20230815121315076

在这里,您可以在浏览器中轻松尝试图像生成过程。但是我们想创建一个自定义控制台应用程序,因此我们单击“查看代码”以访问 api 密钥和终结点。从端点我们需要资源名称,所以在我的例子中,图像生成演示,我们还需要密钥。请复制这两个值。

image-20230815121339504

用 C 编写控制台应用程序#

现在我们设置了所有 Azure 资源,我们可以启动 Visual Studio 并在 C# 中实现一个简单的控制台应用程序,以便能够生成图像。

创建新的控制台应用程序。我会给它起名字,但你可以选择你喜欢的名字。AzureOpenAIImageConsole

NuGet 包添加到解决方案中。此程序包目前仅作为预览版提供,因此请确保选中“包括预发行版”复选框。System.CommandLine

添加*“模型”*文件夹。在此文件夹中,我们需要四个类。让我们从:AppConsole.cs

image-20230815121942473

接下来,我们在 Models 文件夹中创建类。此类包含我们可以传递给命令的所有不同选项。AddOptions.cs

image-20230815122013914

第三类是 this 类表示启动映像生成过程的 POST 请求的正文。AzureOpenAIImageRequestItem.cs

image-20230815122053672

最后一个类被调用,并包含来自 REST API 的答案。AzureOpenAIImageResponseItem.cs

image-20230815122107380

为了提高可读性,我们在主目录中创建了一个新文件。我们删除命名空间声明并将类标记为 和 。Program.Options.cs``static``partial

image-20230815122321226

image-20230815122241536

文件的这一部分声明了我们可以在命令中使用的不同参数。我们还定义并提供了一个方法,调用该方法以从参数中获取值。Program.cs``RootCommand``GetParsedAppOptions

我们现在将创建另一个名为 .此文件包含一些帮助程序方法。例如,我们使用一种方法来创建具有正确标头的标头,例如标头。我们还使用方法为不同的操作生成正确的端点,或者将参数映射到用于 API 的正确值。我们还包括从 中提取所需信息的方法。

image-20230815122449271

image-20230815122756867

image-20230815122850766

image-20230815122935616

Program.Helpers.cs``HttpClient``api-key``size``HttpResponseMessage

现在我们可以从“真实”文件的实现开始。首先,我们想添加一点验证来检查是否提供了所有需要的参数。Program.cs

image-20230815123201919

image-20230815123245066

对于每个调用,我们至少需要 和 .如果我们想删除图像,我们需要提供 or 参数。如果提供此功能,我们可以结束验证,否则我们会检查所有不同的值,并确保 和 的范围也设置正确。AzureOpenAIResource``AzureOpenAIKey``--delete``-d``size``amount

在下一步中,我们将使用该方法定义命令的逻辑。SetHandler

image-20230815123430533

image-20230815123503367

首先,我们得到解析的选项。接下来,我们创建并检查是否提供了该选项。如果是这种情况,我们使用 删除图像并完成执行。HttpClient``delete``HttpClient

如果未提供该选项,我们将创建 并将其发送到 API。我们得到一个id作为响应,它将打印在控制台上。然后我们需要定期检查图像是否生成。如果是这种情况,我们会将 URL 写入提供的 .delete``HttpRequestMessage``OutputFilePath

现在我们可以尝试我们的命令了。只需打开 Windows 终端,导航到包含该文件的文件夹,并使用我们提供的参数来启动映像生成过程。csproj``dotnet build

image-20230815121429193

在提供的 中,你将找到指向包含生成的映像的 Microsoft blob 存储的链接。这是我提示的结果:output

image-20230815121506849

要删除图像,只需提供选项和 id,它们也会写入文件。--delete``output

结论

在这篇博文中,我们在 C# 中创建一个简单的控制台应用程序,用于使用 Azure OpenAI 服务生成映像。

标签:C#,生成,cs,OpenAI,图像,Azure,我们
From: https://blog.51cto.com/u_16210475/7233371

相关文章

  • 国标EHOME视频平台EasyCVR如何解决医疗安保困难
    随着社会经济技术的不断进步和人类生活水平的提高,人们对医疗安全的意识也越来越强烈。在如何营造安全的医疗生产环境、提供有效的医疗服务方面,政府机构正面临迫切需要解决和改善的问题。特别是在大型和专业的医院中,由于医疗设备昂贵、人员流动性高、科室职责分工细致、协同工作频繁......
  • 逆置字符串允许有空格和. 如I like China.->China. like I
    voidreverse(char*left,char*right){ while(left<right) { inttmp=*left; *left=*right; *right=tmp; left++; right--; }}intmain(){ chararr[101]={0}; gets_s(arr); intlen=strlen(arr);//求字符串长度 //逆置整个字符串 reverse(......
  • 通过运行中的容器生成 Docker Compose 配置文件
    背景笔者之前有一次不小心删除了原始的docker-compose.yml文件,不过正在运行的Docker容器还在,找了许久,发现一个方法可以从这些容器中生成一个等效的DockerCompose配置文件。本文将介绍使用autocompose工具从正在运行的容器中反向生成docker-compose.yml文件。安装所需工......
  • 使用Webpack进行模块化开发与打包
    1.什么是WebpackWebpack是一个现代化的JavaScript模块打包工具,它可以将多个模块打包成一个或多个静态资源文件。通过Webpack,我们可以将项目中的各个模块进行模块化开发,并将它们打包成一个或多个可供浏览器加载的静态资源文件。2.Webpack的优势使用Webpack进行模块化开发与打包......
  • nacos集群搭建
                                    ......
  • NC201985 立方数
    题目链接题目题目描述对于给定的正整数N,求最大的正整数A,使得存在正整数B,满足\(A^3B=N\)输入包含T组数据,1≤T≤10,000;\(1≤N≤10^{18}\)输入描述第一行数字T表示数据组数接下来一行,T个正整数N输出描述T行,每行一个数字表示答案示例1输入42724754输出3......
  • 数字IC设计中用到的EDA工具
    仿真验证工具:Cadence的Incisive、Synopsys的VCS、Mentor的QuestaSim逻辑综合工具:Cadence的Gneus、Synopsys的DesignCompiler(DC)形式验证工具:Cadence的Conformal、Synopsys的Formality静态时序分析工具:Cadence的Tempus、Synopsys的PrimeTime(PT)自动布局布线工具:Cadence的In......
  • FCKEditor 从word中复制内容带多张图片
    ​ 图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪......
  • 适用于小空间mcu的移位查表(ntc查表输出温度)
    需要数组从小到大排列,电路是ntc上拉所以数组和ad值都用4095相减。点击查看代码voidTemp(){u8temp,count;u16temp_ad_v;temp_ad_v=4095-Board_GetAD_12bit(ADC_CH4); temp=0x00; count=0x40;//0x20,MAX:63;0x40,MAX:127;0x80,MAX:191......
  • c# Htpp遇到307重定向,二次请求时不会附带请求头部信息
    情况:Get请求需要添加Token获取数据;问题1:postman请求可以成功返回json数据,但是c#(HttpCilent、RestClient)程序请求时提示”token无效“;原因:postman和c#(HttpCilent、RestClient)遇到重定向时都会自动二次请求但是c#二次请求时不会附带第一次请求的头部信息,而postman会;解决方案:......