从一行文字到一幅画:用 Node.js + OpenAI 打造你的 AI 画师

171 阅读4分钟

用 Node.js + OpenAI 打造属于你的 AI 图片生成器

在 AIGC(生成式人工智能)的浪潮下,越来越多开发者开始用 Node.js 结合 OpenAI SDK 来构建属于自己的 AI 应用。从生成文本到生成图片,这种能力的普及让「创作」进入了真正的自动化时代。

在上篇Node.js+OpenAI的文章中,我们为自己编写了一首情歌,本文则将带你一步步从零搭建一个 Node.js + OpenAI 的图片生成项目,了解后端调用大模型的核心流程,并重点讲讲为什么现在越来越多开发者选择 pnpm 来取代 npm —— 它不仅更快,还能帮你节省大量磁盘空间。


一、AIGC:从文本到图像的新时代

AIGC(AI Generated Content,生成式人工智能)是当前最热门的方向之一。
它的核心能力在于「生成」——无论是文本、图片、音频还是代码,AI 都能基于输入提示自动输出创作内容。

目前 OpenAI 提供了多种模型:

  • 文本生成:gpt-3.5-turbo-instructgpt-4o-mini 等;
  • 图片生成:dall-e-2dall-e-3
  • 语音生成与识别:ttswhisper 等。

今天我们要做的,就是用 Node.js 调用 OpenAI 的 图片生成接口(dall-e-3) ,让 AI 根据文字提示绘制出想象中的画面。


二、初始化项目:用 pnpm 代替 npm

初始化项目:

npm init -y

这会生成一个 package.json 文件,用来描述你的项目依赖与脚本。

不过接下来,我们要用更现代、更高效的包管理器 —— pnpm


为什么要用 pnpm?

pnpm 全称 Performant npm,是目前 Node.js 生态中性能最强、最节省空间的包管理器。
相较于传统的 npmyarn,它最大的优势在于:

  1. 更快的安装速度
    pnpm 使用硬链接(hard link)与符号链接(symbolic link)机制,将公共依赖存放在全局内容寻址仓库(store)中。
    当不同项目依赖同一个包时,pnpm 只会存一份,然后用链接的方式共享,而不是每次都重新复制。
  2. 更小的磁盘占用
    因为依赖是共享的,你的多个项目不会重复占用空间,这在大型 monorepo 或多项目环境中非常有用。
  3. 严格的依赖隔离机制
    pnpm 默认不会像 npm 那样“扁平化依赖树”,能有效防止依赖污染问题,让包版本更加可控。

安装 pnpm:

npm install -g pnpm

接着使用 pnpm 安装项目依赖:

pnpm i openai dotenv

这一步会安装:

  • openai:OpenAI 官方 SDK,用于调用 GPT、DALL·E 等模型;
  • dotenv:用于加载 .env 文件中的环境变量。

三、配置环境变量:保护你的 API Key

在项目根目录下创建一个 .env 文件:

OPENAI_API_KEY=你的真实_API_Key

⚠️ 千万不要把 .env 上传到 GitHub 或任何公开仓库!
它通常被列入 .gitignore 中以保护敏感信息。


四、编写主程序:main.mjs

Node.js 在 ES 模块(ESM)环境下使用 .mjs 作为后缀,支持 import/export
创建文件 main.mjs

// 模块化导入
import OpenAI from "openai";
// 导入dotenv
import { config } from "dotenv";

// 读取.env文件
config({ path: ".env" });

// 打印环境变量(仅测试用,可删除)
console.log(process.env);

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  // 可以自定义 API 地址,例如使用代理或第三方服务
  baseURL: "https://api.agicto.cn/v1",
});

// 主函数(异步)
const main = async () => {
  // 调用图片生成接口
  const response = await client.images.generate({
    model: "dall-e-3", // DALL·E 3 模型
    prompt: "A spaceship flying through the universe", // 文字描述
    n: 1, // 生成一张图
    size: "1024x1024", // 图片尺寸
  });

  console.log(response.data[0].url);
};

// 执行主函数
main();

五、运行项目

直接运行:

node main.mjs

几秒钟后,你会在控制台看到一个图片 URL。
复制到浏览器中打开,就能看到 AI 绘制的图片了

就像下面这样

屏幕截图 2025-10-29 201916.png


六、核心原理解析

  1. dotenv 的作用
    dotenv 会在程序启动时读取 .env 文件,将其中的键值对写入 process.env,这样你就可以安全地访问 process.env.OPENAI_API_KEY
    这是一种非常常见的后端配置方式。

  2. OpenAI SDK 的工作流程
    OpenAI 类负责封装与服务器的通信逻辑,client.images.generate() 会向 baseURL 发起一个 HTTP POST 请求。
    它将 prompt、模型名、尺寸等参数发送到服务器,然后返回生成图片的 URL。

  3. 异步编程 async/await
    调用 OpenAI API 是网络请求,会花一定时间。
    asyncawait 可以让异步代码像同步代码一样书写,逻辑更加清晰:

    const response = await client.images.generate({...});
    

    相当于告诉 JS:等图片生成完再执行下一行。


七、前端与后端的桥梁:process 与 document

很多前端开发者初次写 Node.js 会发现一个有趣的区别:
浏览器环境下有 document,Node.js 环境下没有 DOM,而是提供了一个全局对象 process

  • document 是前端访问页面结构的入口;
  • process 是后端访问运行时环境的入口。

在 Node.js 中,process 承担着读取环境变量、监听信号、管理资源等关键角色。
process.env 正是我们连接配置与代码的桥梁。


八、总结与延伸

到这里,你已经完成了一个完整的 AIGC 图片生成小项目,涉及以下知识点:

✅ 使用 pnpm 管理依赖,快速又节省空间
✅ 使用 dotenv 管理环境变量
✅ 用 OpenAI SDK 调用 DALL·E 模型生成图片
✅ 理解 Node.js 的模块化与异步机制