引言
最近几年,“AIGC”这个词几乎无处不在。从 AI 写作、AI 绘画到 AI 视频生成,我们正站在一场内容创作革命的入口。
作为一名开发者,我一直在思考:如何用最简单的方式,把大模型能力集成进自己的项目?
于是,我决定从一个最小可运行单元出发——
用几行代码,调用 DALL·E 3 生成一张宇宙飞船穿越星云的图片。
本文将带你一步步搭建一个基于 Node.js 的 AIGC 应用,涵盖:
- 环境配置
- 包管理器选型(
pnpm) - API 密钥安全存储
- OpenAI SDK 调用
- Prompt 工程实战
- 错误处理与最佳实践
全程无框架依赖,适合初学者上手,也适合进阶者参考架构设计。
一、环境准备:为什么选择 pnpm?
我们先初始化项目:
pnpm init -y
你可能会问:为什么不直接用 npm?
pnpm 的三大优势:
| 对比项 | npm | pnpm |
|---|---|---|
| 安装速度 | 一般 | ⚡ 极快 |
| 磁盘占用 | 高(重复安装) | 💾 极低(硬链接共享) |
| 依赖隔离 | 中等 | ✅ 更好 |
pnpm(Performant npm) 是一款高性能 Node.js 包管理器,通过符号链接和内容寻址模式避免包重复安装。
# 安装依赖
pnpm add dotenv openai
一句话总结:更快、更省、更稳。
二、安全第一:使用 .env 管理敏感信息
AI 开发的第一条铁律:永远不要把 API Key 写死在代码里!
创建 .env 文件:
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BASE_URL=https://api.agicto.cn/v1
推荐使用国内代理服务(如 AGICTO),提升访问稳定性。
然后在代码中加载:
import { config } from 'dotenv';
config({ path: '.env' });
这样,process.env.OPENAI_API_KEY 就能安全读取密钥了。
别忘了把
.env加入.gitignore!
# .gitignore
.env
node_modules/
三、核心代码:调用 DALL·E 3 生成图像
文件名:main.mjs(注意是 .mjs,启用 ES Module)
// main.mjs —— AIGC 应用主入口
import { config } from 'dotenv';
import OpenAI from 'openai';
// 加载环境变量
config({ path: '.env' });
// 创建 OpenAI 客户端
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: process.env.BASE_URL || 'https://api.openai.com/v1',
});
// 主函数
const main = async () => {
try {
console.log(' 正在生成图片...');
const response = await client.images.generate({
model: 'dall-e-3',
prompt: 'A spaceship flying through a colorful nebula, cinematic lighting, 4K',
n: 1,
size: '1024x1024',
quality: 'standard',
style: 'vivid',
});
const imageUrl = response.data[0].url;
console.log(' 图片生成成功!');
console.log('图片地址:', imageUrl);
} catch (error) {
console.error(' 请求失败:', error.message);
if (error.response) {
console.error('详细错误:', error.response.data);
}
}
};
main();
说明:
client.images.generate():调用 DALL·E 系列模型。prompt:提示词是关键!越具体,效果越好。style: 'vivid':色彩更鲜艳,适合科幻场景。quality: 'hd'可选,但价格更高。
四、Prompt 工程:让 AI 听懂你的话
“垃圾输入,垃圾输出。” —— 在 AIGC 时代,这句话比任何时候都重要。
好的 Prompt 应该包含:
| 维度 | 示例 |
|---|---|
| 主体 | 宇宙飞船 |
| 场景 | 星云、行星环、黑洞边缘 |
| 风格 | 电影级光影、赛博朋克、数字艺术 |
| 技术参数 | 4K、超现实、高细节 |
推荐写法模板:
[主体] 在 [场景] 中,呈现 [风格],强调 [细节]
示例:
"A futuristic spaceship gliding through a glowing purple nebula, digital art style, ultra-detailed, 4K resolution, cinematic lighting"
你会发现,生成的图像质量明显提升。
🛠 五、开发建议 & 最佳实践
| 建议 | 说明 |
|---|---|
使用 main.mjs 入口 | 模块化、易维护 |
添加 try/catch | 防止程序崩溃 |
| 支持多 Base URL | 方便切换服务商 |
| 日志友好化 | 用 emoji 提升可读性 |
不提交 .env | 安全红线 |
六、常见 LLM 代理地址(国内可用)
如果你遇到网络问题,可以尝试以下代理:
baseURL: 'https://api.302.ai/v1' // 302.ai
baseURL: 'https://api.agicto.cn/v1' // AGICTO
baseURL: 'https://openai.api2d.net/v1' // API2D
这些平台通常提供更快的响应速度和更友好的计费方式。
七、下一步:构建你的 AIGC 流水线
这个小项目只是一个起点。你可以继续扩展:
1. 自动化内容生成
- 用 GPT 生成歌词 → 用 DALL·E 生成封面图 → 自动发布为音乐作品
2. Web 化
- 用 Express 搭建后端 API
- 前端上传 Prompt → 返回图片链接
3. CLI 工具化
- 打包成命令行工具:
aigc-gen --image "a cat in space"
4. Prompt 库管理
- 抽象出常用模板,支持复用和版本控制
总结
| 技术点 | 是否掌握 |
|---|---|
| pnpm 包管理 | ✅ |
| .env 安全配置 | ✅ |
| OpenAI SDK 调用 | ✅ |
| DALL·E 3 图像生成 | ✅ |
| Prompt 工程技巧 | ✅ |
| 异步错误处理 | ✅ |
你已经具备了构建一个完整 AIGC 应用的基础能力。
结语
AIGC 不再是“未来科技”,而是当下每一个开发者都能掌握的生产力工具。
正如 Linus 所说:“Talk is cheap. Show me the code.”
而今天,我们可以加一句:
“Show me the prompt.”
参考资料
💬 欢迎在评论区分享你的生成结果或 Prompt 技巧!