使用 Node.js 掌握 DALL-E API 调用:综合指南

DALL-E 是 OpenAI 开发的一种生成式预训练转换器 (GPT) 模型,可以根据文本描述生成图像。它在文本和图像数据集上进行训练,使其能够理解两者之间的关系并生成与给定文本描述相匹配的图像。该 API 可供开发人员使用,并且可以与各种编程语言(如 JavaScript、Python 等)集成。在本教程中,您将学习如何将 DALL-E 与 Node.js 结合使用。

为了在 Node.js 中使用 DALL-E,我们需要先准备一个项目。如何清除计算机上的 DNS 缓存因此,让我们从创建一个新的空项目文件夹开始:

$ mkdir dalle-nodejs

并更改为新创建的项目文件夹:

$ cd dalle-nodejs

让我们使用以下命令创建一个 package.json 文件:

$ npm init -y

然后我们准备安装 openai npm 包:

$ npm install openai

OpenAI Node.js 库提供了从 Node.js 应用程序对 OpenAI API 的便捷访问。在接下来的步骤中,我们将使用这个库来实现我们的 Node.js 示例应用程序。

接下来我们要安装 express、body-parser 和 cors 包。

npm install express body-parser cors

此外,我们确实需要安装 dotenv 包:

$ npm install dotenv --save

要开始实施,请在项目文件夹中创建一个名为 index.js 的新文件和一个新文件 .env:

$ touch index.js .env

在文本编辑器中打开文件 .env 并插入以下环境变量,该变量保存来自您的 OpenAI 帐户的 API 密钥:

OPENAI_API_KEY="INSERT YOUR OPENAI API KEY HERE"

获取 OpenAI API 密钥

要获取 OpenAI API 的 API 密钥,您需要在 OpenAI 网站 (https://openai.com/) 上注册一个免费的 OpenAI 帐户:

要注册一个帐户,请单击主页右上角的“注册”按钮,然后按照提示创建一个新帐户。创建帐户后,您可以通过访问帐户设置的“API”部分来获取 API 密钥。

在“API”部分,您会找到一个标有“生成 API 密钥”的按钮。单击此按钮可生成一个新的 API 密钥,然后您可以使用该密钥从您的 Node.js 应用程序向 OpenAI API 发出请求。请务必妥善保管您的 API 密钥,不要与其他任何人共享。

实施 Node.js 应用程序

现在打开 index.js 并开始在文件顶部包含以下两个 require 语句:

const { Configuration, OpenAIApi } = require("openai");
require('dotenv').config()

在下面添加以下三行代码:

const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");

此代码导入三个模块:express、cors 和 body-parser。

  • express是一个流行的 Node.js 网络框架,可以轻松路由和处理 HTTP 请求。

  • cors是一种中间件,可以通过各种选项启用跨源资源共享 (CORS)。

  • body-parser是解析 HTTP 请求正文的中间件,可以更轻松地从请求中提取数据。

我们将在下面使用所有三个包来设置 Node.js / Express 服务器。

接下来将以下代码添加到 index.js 中:

const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

此代码使用 API 密钥初始化 OpenAI API。

第一行创建 Configuration 类的一个新实例,它接收一个包含 API 密钥的对象。API 密钥取自 process.env.OPENAI_API_KEY,它使我们能够访问存储在 .env 文件中的 API 密钥。

第二行创建 OpenAIApi 类的一个新实例,它接受在第一行中创建的配置对象。这将创建一个 OpenAI API 客户端实例,可用于向 OpenAI 的 API 服务发出 API 请求。

接下来让我们通过包含以下代码行来创建和配置 Express 服务器实例:

// Set up the server
const app = express();
app.use(bodyParser.json());
app.use(cors());

此代码设置一个 Express.js 服务器并将其配置为使用 body-parser 和 cors 中间件。

const app = express()创建 Express.js 应用程序的实例并将其分配给常量变量 app。

app.use(bodyParser.json())` 用于配置 body-parser 中间件以解析请求正文中发送的 JSON 数据。这允许服务器将请求正文中的 JSON 数据作为请求对象中的对象进行访问。

app.use(cors())用于配置cors中间件。该中间件允许跨源资源共享,这意味着可以从与其托管的域不同的域访问服务器。

让我们继续设置端点 ( /image),它将用于从文本描述生成图像:

// Set up the DALL-E endpoint
app.post("/image", async (req, res) => {
  // Get the prompt from the request
  const { prompt } = req.body;

  // Generate image from prompt
  const response = await openai.createImage({
    prompt: prompt,
    n: 1,
    size: "1024x1024",
  });
  // Send back image url
  res.send(response.data.data[0].url);
});

此代码为 DALL-E 图像生成服务设置端点。

app.post("/image", async (req, res) => {为路径 /image 的 POST 请求设置路由。它是一个异步函数,将请求和响应对象作为参数。

const { prompt } = req.body;从请求主体中提取提示变量,预计为 JSON 格式。

const response = await openai.createImage({用于使用 OpenAI API 从提示生成图像。createImage 函数将一个对象作为参数,参数如下:

  • 提示:用于生成图像的文本提示。

  • n:要生成的图像数。

  • size:生成图片的大小。

res.send(response.data.data[0].url);用于将生成的图像的 URL 作为响应发回。

最后我们需要激活服务器来监听端口 8080:

// Start the server
const port = 8080;
app.listen(port, () => {
  console.log(`Server listening on port ${port}`);
});

竞争源代码

最后,让我们看一下 index.js 中现在应该可用的完整源代码:

const { Configuration, OpenAIApi } = require("openai");
require("dotenv").config();

const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");

const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

// Set up the server
const app = express();
app.use(bodyParser.json());
app.use(cors());

// Set up the DALL-E endpoint
app.post("/image", async (req, res) => {
  // Get the prompt from the request
  const { prompt } = req.body;

  // Generate image from prompt
  const response = await openai.createImage({
    prompt: prompt,
    n: 1,
    size: "1024x1024",
  });
  // Send back image url
  res.send(response.data.data[0].url);
});

// Start the server
const port = 8080;
app.listen(port, () => {
  console.log(`Server listening on port ${port}`);
});

测试 Node.js 应用程序

现在是时候测试我们的应用程序了。因此,我们需要使用以下命令启动 Node.js 应用程序:

$ node index.js

然后您应该看到一条消息信息,表明服务器现在正在端口 8080 上运行。

让我们直接通过命令行使用 curl 命令向 /image 端点发送 HTTP POST 请求:

$ curl -X POST -H "Content-Type: application/json" -d '{"prompt":"A moose in the snow"}' http://localhost:8080/image

POST 请求的正文格式为 JSON 并包含提示属性。分配给此属性的文本值包含我们希望由 DALL-E 生成的图像的描述。

如果您执行此命令,几秒钟后您将在命令行上收到一个指向生成的图像的 URL。

将此 URL 字符串(需要删除 URL 字符串末尾的 % 符号)复制到浏览器中。应加载并显示图像文件:

结论

DALL-E 是一个强大的 AI,用于从文本描述生成图像。DALL-E 提供了一个 API,可以在您自己的应用程序中轻松使用。在本文中,您了解了如何轻松地将 DALL-E 的 API 集成到您的 Node.js 应用程序中。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pxr007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值