了解如何使用我们的 DALL·E 型号
原文链接:Image generation – OpenAI API
介绍
图像 API 提供了三种与图像交互的方法:
- 根据文本提示从头开始创建图像
- 根据新的文本提示创建现有图像的编辑
- 创建现有图像的变体
本指南介绍了使用这三个 API 终结点的基础知识以及有用的代码示例。要了解它们的实际效果,请查看我们的 DALL·E 预览应用程序。
图像 API 处于测试阶段。在此期间,API 和模型将根据你的反馈进行改进。为了确保所有用户都能舒适地制作原型,默认速率限制为每分钟 50 张图像。如果您想提高速率限制,请查看这篇帮助中心文章。随着我们详细了解使用情况和容量要求,我们将提高默认速率限制。
用法
生成
图像生成端点允许您在给定文本提示的情况下创建原始图像。生成的图像的大小可以是 256×256、512×512 或 1024×1024 像素。较小的尺寸生成速度更快。您可以使用 n 参数一次请求 1-10 张图像。
1 2 3 4 5 6 |
response = openai.Image.create( prompt="a white siamese cat", n=1, size="1024x1024" ) image_url = response['data'][0]['url'] |
描述越详细,就越有可能获得您或您的最终用户想要的结果。您可以在 DALL·E 预览应用程序,以获得更多提示灵感。下面是一个快速示例:
提示 | 生成 |
---|---|
一只白色的暹罗猫 | |
一只白色暹罗猫的特写工作室摄影肖像,看起来很好奇,背光的耳朵 |
可以使用 response_format 参数将每个图像作为 URL 或 Base64 数据返回。网址将在一小时后过期。
编辑
图像编辑端点允许您通过上传遮罩来编辑和扩展图像。蒙版的透明区域指示应编辑图像的位置,提示应描述完整的新图像,而不仅仅是擦除的区域。此端点可以启用类似 DALL·E 预览应用程序。
1 2 3 4 5 6 7 8 |
response = openai.Image.create_edit( image=open("sunlit_lounge.png", "rb"), mask=open("mask.png", "rb"), prompt="A sunlit indoor lounge area with a pool containing a flamingo", n=1, size="1024x1024" ) image_url = response['data'][0]['url'] |
图像 | 掩码 | 输出 |
---|---|---|
提示:阳光明媚的室内休息区,游泳池内有一只火烈鸟
上传的图片和蒙版必须是小于 4MB 的方形 PNG 图片,并且尺寸必须相同。生成输出时不使用蒙版的非透明区域,因此它们不一定需要像上面的例子那样与原始图像匹配。
变化
图像变体端点允许您生成给定图像的变体。
1 2 3 4 5 6 |
response = openai.Image.create_variation( image=open("corgi_and_cat_paw.png", "rb"), n=1, size="1024x1024" ) image_url = response['data'][0]['url'] |
图像 | 输出 |
---|---|
与编辑端点类似,输入图像必须是小于 4MB 的方形 PNG 图像。
内容审核
系统会根据我们的内容政策过滤提示和图片,并在举报提示或图片时返回错误。如果您对误报或相关问题有任何反馈,请通过我们的帮助中心与我们联系。
特定语言提示
NODE.JS PYTHON
使用内存中的图像数据
上面指南中的 Node.js 示例使用该模块从磁盘读取图像数据。在某些情况下,您可能将图像数据放在内存中。下面是一个示例 API 调用,它使用 Node.js 对象中存储的图像数据:fs
Buffer
1 2 3 4 5 6 7 8 9 |
// This is the Buffer object that contains your image data const buffer = [your image data]; // Set a `name` that ends with .png so that the API knows it's a PNG image buffer.name = "image.png"; const response = await openai.createImageVariation( buffer, 1, "1024x1024" ); |
使用 TypeScript
如果您使用的是 TypeScript,您可能会遇到一些图像文件参数的怪癖。下面是通过显式强制转换参数来解决类型不匹配的示例:
1 2 3 4 5 6 |
// Cast the ReadStream to `any` to appease the TypeScript compiler const response = await openai.createImageVariation( fs.createReadStream("image.png") as any, 1, "1024x1024" ); |
下面是内存中图像数据的类似示例:
1 2 3 4 5 6 7 8 9 10 11 |
// This is the Buffer object that contains your image data const buffer: Buffer = [your image data]; // Cast the buffer to `any` so that we can set the `name` property const file: any = buffer; // Set a `name` that ends with .png so that the API knows it's a PNG image file.name = "image.png"; const response = await openai.createImageVariation( file, 1, "1024x1024" ); |
错误处理
API 请求可能会由于输入无效、速率限制或其他问题而返回错误。这些错误可以通过语句处理,错误详细信息可以在 或 中找到:try...catch
error.response
error.message
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
try { const response = await openai.createImageVariation( fs.createReadStream("image.png"), 1, "1024x1024" ); console.log(response.data.data[0].url); } catch (error) { if (error.response) { console.log(error.response.status); console.log(error.response.data); } else { console.log(error.message); } } |