使用 Apifox 和 OpenAI API 生成图像
OpenAI 的 DALL·E 模型具有图像生成功能,目前官方提供了三条接口,分别是:创建图像(Create image)、创建图像编辑(Create image edit)和图像变体(Create image variation)。其中,要生成的图像数,必须介于 1 到 10 张之间;生成的图像大小,必须是 256x256
、512x512
或 1024x1024
这三者之一。本文将介绍这三条接口的使用,为了方便讲解,将借助 Apifox 来操作,如果你已经迫不及待的想要尝试,可 点击此处 直接访问。
起步
API 密钥
要使 OpenAI 的 API 能够正常访问,你需要准备一个 API key,访问 OpenAI 官网,注册一个账号后即可查看你的 API 密钥。
Apifox 账号
Apifox 是 API 文档、API 调试、API Mock和自动化测试一体化协作平台,使用受众为整个研发技术团队,主要使用者为前端开发、后端开发和测试人员。在正式开始之前,如果你还没有账号,你可访问 Apifox 官网 进行注册。
设置环境变量
当准备好 API 密钥后,就可以在 Apifox 里新建一个项目,并在项目中设置环境变量的前置URL为https://api.openai.com/v1
,并将 API key 保存在环境变量中,如下图所示:
除此之外,你需要在项目的“根目录->Auth”下,选择类型为“Bearer Token”,并将你设置在环境变量中的 API key 作为请求时的 token,如下图所示:
创建图像(Create image)
“创建图像”的接口为POST
https://api.openai.com/v1/images/generations
,该接口支持的请求参数如下:
参数 | 类型 | 是否必需 | 说明 |
prompt | string | 是 | 所需图像的文本说明,支持的最大长度为 1000 个字符 |
n | integer | 否 | 要生成的图像数,必须介于1到10之间,默认为 1 |
size | string | 否 | 要生成的图像的大小,必须是 256x256 、 512x512 或 1024x1024 |
response_format | string | 否 | 生成的图像的格式,必须是 url 或b64_json ,默认为 url |
user | string | 否 | 代表最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为 |
在 Apifox 中,创建该接口,并填写请求路径、请求参数。其中,请求参数可以为:
{
"prompt": "A colorful sunset over the mountains",
"n": 2,
"size": "1024x1024"
}
点击发送按钮,你将收到响应,响应中会有两条 url 链接,Ctrl + 鼠标左键
点击即可查看图片。
当然,Apifox 提供可视化的操作,你可在后置操作中添加如下脚本,即可在控制台查看到生成的图像(在控制台点击Visualize
即可查看)。
// 将接口返回数据,封装成自己需要的结构
var resp = {
response: pm.response.json().data[0].url
}
// html 模板字符
var template = `<html><img src="{{response}}" /></html>`;
// 设置 visualizer 数据。传模板、解析对象。
pm.visualizer.set(template, resp);
创建图像编辑(Create image edit)
“创建图像编辑”的接口为POST
https://api.openai.com/v1/images/edits
,该接口支持的请求参数如下:
参数 | 类型 | 是否必需 | 说明 |
image | string | 是 | 要编辑的图像。必须是有效的PNG文件,小于4MB,并且是方形的。如果没有提供蒙版,图像必须具有透明度,这将被用作蒙版。 |
mask | string | 否 | 附加图像,其完全透明区域(例如其中alpha为零)指示 image 应在何处编辑。必须是有效的PNG文件,小于4MB,并且与原始image 具有相同的尺寸 |
prompt | string | 是 | 所需图像的文本说明,支持的最大长度为 1000 个字符 |
n | integer | 否 | 要生成的图像数,必须介于1到10之间,默认为 1 |
size | string | 否 | 要生成的图像的大小,必须是 256x256 、 512x512 或 1024x1024 |
response_format | string | 否 | 生成的图像的格式,必须是 url 或b64_json ,默认为 url |
user | string | 否 | 代表最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为 |
在 Apifox 中,创建该接口,并填写请求路径、请求参数以及上传png
格式的图片文件。图片的处理你可以在 https://www.photopea.com/ 编辑,上传的图像要具有透明度。
以下是一个图像处理后的图片示例,上传一张带有透明图层的图片,并设置 prompt 为“小鸟在飞”:
图像变体(Image variation)
图像变体的接口为POST
https://api.openai.com/v1/images/variations
,该接口支持的请求参数如下:
参数 | 类型 | 是否必需 | 说明 |
image | string | 是 | 用作变体基础的图像。必须是有效的 PNG 文件,小于 4MB,且为正方形。 |
n | integer | 否 | 要生成的图像数,必须介于1到10之间,默认为 1 |
size | string | 否 | 要生成的图像的大小,必须是 256x256 、 512x512 或 1024x1024 |
response_format | string | 否 | 生成的图像的格式,必须是 url 或b64_json ,默认为 url |
user | string | 否 | 代表最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为 |
在 Apifox 中,创建该接口,并填写请求路径、请求参数以及上传png
格式的图片文件。发送请求经过处理后,即可查看结果。如图,改变后的图像颜色明显更鲜艳,当然,也更抽象了:
总结
以上就是 OpenAI 的“图像生成”接口的介绍 ,这几个 API 目前还处在测试(Beta)阶段,未来有望跟 ChatGPT 一样上升到一个新台阶。
另外,如果你想学习更多关于 OpenAI 的其它 API,也可访问在线的 OpenAI API Hub 项目。项目中包含了 OpenAI 官方提供的所有 API,你可以根据需要进行操作,比如你可以通过 OpenAI 的接口来生成图像、上传音视频文件并转文本、翻译、创建聊天机器人、创建微调等。项目中有些目录下会有相关的 MarkDown 文件,里面会简要介绍某个功能模块怎么使用。
注:在使用该项目之前,请查看“项目说明”
其它扩展
如果你想要学习更多 AI 相关的知识,欢迎访问如下扩展:
- OpenAI 中文学习文档:OpenAI 中文文档
- ChatGPT 提示词指南:Prompt 学习指南
- 面向开发者的 Prompt 指南: Prompt 工程指南