你可以通过 OpenAI 的 API 访问 DALL·E,这样你就可以将它的功能集成到你的 Python 程序中。

本教程[1]将带你:

快速上手 OpenAI 的 Python 库探索与图像天生干系的 API 调用根据文本提示天生图像制作天生图像的不同版本将 Base64 格式的 JSON 相应转换成 PNG 图像文件环境准备

如果你对 DALL·E 的强大功能感到好奇,并希望将其集成到你的 Python 项目中,那么这篇文章正是你须要的。
在本节中,你将快速理解如何开始在你的代码中利用 DALL·E 来创建图像。

安装 OpenAI Python 库

请确保你的 Python 版本至少是 3.7.1,并创建一个虚拟环境来隔离项目依赖。
接下来,安装 OpenAI 供应的 Python 库,以便利用 DALL·E 的功能。

Python 若何运用 DALLE 和 OpenAI API 生成图像1

$ python --versionPython 3.12.5$ python -m venv venv$ source venv/bin/activate(venv) $ python -m pip install openai

openai 包让您可以访问完全的 OpenAI API。
在本教程中,您将重点关注图像天生,它使您可以与 DALL·E 模型交互,根据文本提示创建和编辑图像。

获取您的 OpenAI API 密钥

您须要 API 密钥才能成功进行 API 调用。
注册 OpenAI 并通过单击仪表板菜单,然后单击导航菜单左下角的 API 密钥来创建新的项目 API 密钥:

在此页面上,您可以创建和管理您的 API 密钥,这使您可以访问 OpenAI 通过其 API 供应的做事。
您可以创建和删除密钥。
单击“创建新密钥”以创建新的 API 密钥,并复制弹出窗口中显示的值。
复制此键的值,以便稍后可以在项目中利用它。
您只会看到该键值一次。

将您的 API 密钥保存为环境变量

保存 API 密钥并使其可用于 Python 脚本的一种快速方法是将其保存为环境变量。
选择您的操作系统以理解如何:

(venv) $ export OPENAI_API_KEY="<your-key-value-here>"

通过实行这条指令,你可以在当前的终端会话中设置一个名为 OPENAI_API_KEY 的环境变量,以便访问你的 API 密钥。
请记住,一旦你关闭了终端窗口,这个密钥就会失落效。

你可以根据个人喜好来命名这个环境变量,但如果你按照 OpenAI 的官方文档建议,利用 OPENAI_API_KEY 这个名字,那么你就能够直策应用文档中的代码示例,无需进行额外的配置。

现在,准备事情已经完成,你的 API 密钥也已安全存储,你可以开始根据文本提示来天生图像了。

根据文本描述天生图像

首先,通过命令行界面调用 openai 库来确保你的环境已经配置完毕,准备开始利用。

(venv) $ openai api images.generate -p "a vaporwave computer"

该命令将向 OpenAI 的图像 API 发送要求,并根据文本提示“蒸汽波打算机”创建图像。
因此,您将收到一个 JSON 相应,个中包含指向您新创建的图像的 URL:

{ "created": 1723549436, "data": [ { "b64_json": null, "revised_prompt": null, "url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org ⮑ -H8Satq5hV2dscyutIStbN89m/user-O5O8mpE4TugEI9zqpxx8tGPt/img-4rDZEQ ⮑ leCdzAD3fuWowgLb5U.png?st=2024-08-13T10%3A43%3A56Z&se=2024-08-13T1 ⮑ 2%3A43%3A56Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&sk ⮑ oid=d505667d-d6c1-4a0a-bac7-5c84a87759f8&sktid=a48cca56-e6da-484e- ⮑ a814-9c849652bcb3&skt=2024-08-12T23%3A00%3A04Z&ske=2024-08-13T23%3 ⮑ A00%3A04Z&sks=b&skv=2024-08-04&sig=c%2BBmroDkC0wkA2Lu8MxkvXH4xjdW5 ⮑ B18iQ4e4BwJU6k%3D" } ]}

单击您的 URL 或将其复制并粘贴到浏览器中以查看图像。
这是 DALL·E 针对这一哀求设想的图像:

你的天生图像会是独一无二的。
这是由于扩散模型仅在你发起要求时才天生图像。

提示:你天生的图像的链接仅在一小时内有效,以是如果你对天生的图像感到满意并希望长期保存,请务必及时将其下载到你的电脑上。

当你向 API 发送要求时,须要遵守 OpenAI 的利用条款。
如果你供应的文本提示违反了这些条款,你将收到缺点提示,并且如果屡次违规,你的账户可能会被封禁。

既然你已履历证了所有设置都精确无误,并且对利用 OpenAI API 天生图像的功能有了初步理解,接下来你将学习如何将其整合到 Python 脚本中。

调用 API

能够通过命令行界面(CLI)天生图像固然不错,但如果能将这项功能集成到你的 Python 运用中就更棒了。
你可以借此构建许多激动民气的项目!

打开你常用的代码编辑器,编写一个脚本。
这个脚本将用于根据文本提示天生图像,操作办法与你之前在命令行中进行的操作类似。

但这一次,你将明确指定要利用的 DALL·E 模型版本:

from openai import OpenAIclient = OpenAI()PROMPT = "A vaporwave computer"response = client.images.generate( model="dall-e-3", prompt=PROMPT,)print(response.data[0].url)

与之前类似,这段代码向 API 发送了一个经由认证的要求,根据 PROMPT 中的文本天生一张图片。
这段代码还做了一些优化,以便你在脚本中添加更多功能:

第 3 行初始化了 OpenAI 的一个实例,并将其存储为 client。
这个实例已经包含了身份验证信息,由于你已经将环境变量命名为 OPENAI_API_KEY。
如果你遵照了这个命名规则,它会自动从你的环境变量中获取 API 密钥值。
当然,你也可以在创建实例时直接通过 api_key 参数通报 API 密钥。

第 5 行将文本提示定义为一个常量。
这样做的好处是,如果你须要修正提示文本,只须要在脚本顶部找到这个常量并进行修正,非常方便。

第 7 行调用了 client 的 .images.generate() 方法。
接下来的几行代码展示了你可以通报给这个方法的一些参数。

第 8 行指定利用更新的 DALL·E 3 模型,它不仅以不同的办法处理你的提示,还支持不同的参数设置、图片尺寸和质量,与默认的 DALL·E 2 模型有所差异。

第 9 行将 PROMPT 的值通报给名为 prompt 的参数。
这样,你就为 DALL·E 供应了用于天生图片的文本。
别忘了,你之前在命令行中调用 API 时也通报了文本提示。

末了,你还须要获取天生图片的 URL,以便在线查看。
为此,你须要访问相应工具的 .url 属性,并在第 12 行将其值打印到终端。

当你实行这个脚本时,你将得到一个类似于之前的输出,但现在只会显示 URL,而不会显示完全的 JSON 相应。

(venv) $ python create.pyhttps://oaidalleapiprodscus.blob.core.windows.net/private/org-H8Satq5hV2d⮑ scyutIStbN89m/user-O5O8mpE4TugEI9zqpxx8tGPt/img-hMAEPhuqVH73JMRQ6BOV4J⮑ Hz.png?st=2024-08-13T10%3A56%3A54Z&se=2024-08-13T12%3A56%3A54Z&sp=r&sv⮑ =2023-11-03&sr=b&rscd=inline&rsct=image/png&skoid=d505667d-d6c1-4a0a-b⮑ ac7-5c84a87759f8&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2024-0⮑ 8-12T21%3A36%3A11Z&ske=2024-08-13T21%3A36%3A11Z&sks=b&skv=2023-11-03&s⮑ ig=D7K6UF353uO3wJDOovbeyBsn2yaf384kEotVbjJ5SB4%3D

单击链接或将其粘贴到浏览器中以查看天生的图像。
由于您现在利用的是 DALL·E 3 模型,以是输出可能看起来更引人瞩目:

这表明图像的质量和细节有了显著提高,看起来新模型对蒸汽波风格的理解更加深入。

虽然这很有可能,但在背后还有一些其他成分也在影响着图像细节的提升。
当你要求利用 DALL·E 3 模型天生图像时,它会在天生图像前对你的提示进行重新编辑。

如果你想知道 DALL·E 在天生图像时实际利用的修正后的提示是什么,你可以通过 .revised_prompt 属性来查看。

# ...print(response.data[0].revised_prompt)

在要求天生图像时,常日来说,供应更详细的描述会得到更空想的结果。
在你的描述中加入更多的细节可以大幅提升效果!
例如,下面是天生上面图像所用的详细描述:

想象一台带有蒸汽波风格的打算机;它像是一台80年代的老式机器,被霓虹粉和蓝色光晕所包围。
它的设计充满了怀旧感,机身装饰着复古的字体。
外壳上印有发光的数字棕榈树,让人遐想到老式视频游戏中的场景。
背景中可以看到希腊雕塑和蒸汽波设计中常见的故障日落图案,完美地结合了当代与复古的元素。

这比你最初供应的描述要详细得多!

把稳:只有对 DALL·E 3 模型的要求才会进行提示重写,以是如果你利用的是 DALL·E 2,这个属性将不存在。

虽然 DALL·E 3 能够天生更令人印象深刻的图像,但它不许可你关闭提示重写功能,这意味着你对输出的掌握会减少。
此外,这个模型目前还没有完备开放所有功能。

因此,在本教程的后续部分,你将连续利用 DALL·E 2。
首先,编辑脚本,在调用 .generate() 方法时添加一些额外的参数。
同时,不妨也为你最初的描述增加一些细节:

from openai import OpenAIclient = OpenAI()PROMPT = "An eco-friendly computer from the 90s in the style of vaporwave"response = client.images.generate( model="dall-e-2", # Default prompt=PROMPT, n=1, size="256x256",)print(response.data[0].url)

你已经为你的描述增加了一些细节,并切换回了默认的 DALL·E 2 模型。
此外,你还添加了两个新参数来进一步定制天生的图像:

第 10 行将数字 1 指定给参数 n。
这个参数许可你定义想要根据描述天生的新图像数量。
n 的值应在 1 到 10 之间,默认为 1。

第 11 行设置了 size 参数的值。
通过这个参数,你可以指定 DALL·E 天生图像的尺寸。
这个参数须要是一个字符串,可用的尺寸会根据你利用的模型而有所不同。
对付 DALL·E 2,可选的尺寸有 "256x256"、"512x512" 或 "1024x1024"。
每个字符串都代表了你将收到的图像的像素尺寸,默认为最大的 "1024x1024"。

在你的脚本末了,你再次将天生图像的 URL 输出到终端。
你已经移除了打印 .revised_prompt 的代码行,由于在 DALL·E 2 中这个值是不存在的。

当你实行脚本后,你会得到一个新的 URL 作为回应。
点击这个链接或将其复制到你的浏览器中,就可以查看天生的图像了。
和之前一样,你的图像会有所不同,但该当与你在 PROMPT 中利用的描述相似。
由于你这次利用的是 DALL·E 2,以是图像的细节可能会比上一次少一些。

你可能会把稳到,这次天生的图像比你之前创建的要小得多。
这是由于你通过 size 参数指定了天生一张 256x256 像素的图片。
较小的图像本钱较低,以是你刚刚省下了一笔用度!
作为一个节省本钱的成功者,大概你还想保存其他东西——比如你的图像数据。

[1]Source: https://realpython.com/generate-images-with-dalle-openai-api/