每年万圣节前,总有人为穿什么犯愁。今年,我们不妨换个思路,让 AI 来帮我们出主意。这篇文章就带你走一遍这个过程,用 DigitalOcean 的 Serverless Inference API 调用 OpenAI 的图像模型,搭一个有趣的万圣节服装生成器。
这不仅仅是个好玩的玩具,它背后展示的是一种越来越主流的 AI 应用开发模式。通过本文,你会了解到:
- Serverless 推理(Serverless Inference)到底是怎么回事。
- 如何通过一个简单的 API 端点,直接使用像 OpenAI 这样的强大图像模型。
这个小应用的效果大概是这样,你输入一个感觉,它给你生成一套视觉化的服装方案:

什么是 Serverless 推理?
在开始动手之前,我们得先搞清楚一个核心概念:Serverless Inference。
说白了,就是你只管调用 API,把模型推理(Inference)这件最耗资源、最麻烦的事扔给云厂商。你不需要关心 GPU 服务器的配置、扩容、维护,甚至连模型部署都不用操心。DigitalOcean 的 Gradient™ AI Platform 就提供了这样的服务。
它提供一个统一的 API 端点,背后集成了来自 OpenAI、Anthropic Claude、Llama 等多个厂商的模型。开发者只需要一个 API Key,就能在自己的应用里灵活调用这些模型,完全不用去管理任何底层基础设施。

这种方式的最大好处是简单、直接。你只需要专注在你的业务逻辑和 Prompt 工程上,而不用分心去处理运维的烂摊子。
实战:构建 AI 服装生成器
好,理论就到这里。我们来动手实现这个服装生成器。整个流程非常简单:
- 用户在前端输入他们想要的服装风格。
- 点击“生成”按钮后,请求会发送到我们的后端(这里用 Next.js API Route)。
- 后端接收到请求,对用户的输入进行一些“加工”(也就是简单的 Prompt 工程),然后调用 DigitalOcean 的 Serverless Inference API。
- API 背后的
openai-gpt-image-1模型根据我们构造的 Prompt 生成图片,并返回结果。
整个架构一目了然:

第一步:拿到 API 密钥
首先,你得有一个 DigitalOcean 账号。登录后,进入控制面板,在左侧导航栏找到 Agent Platform → Serverless Inference。
在这里,创建一个新的模型访问密钥(Create Model Access Key),给它起个名字。创建成功后,把这个 Key 复制下来,保存在你项目的 .env 文件里。
DIGITAL_OCEAN_MODEL_ACCESS_KEY=your_digital_ocean_api_key_here
这个密钥就是你调用所有集成模型的通行证。

第二步:后端逻辑的核心——Prompt 构造与 API 调用
当用户点击生成按钮后,请求会打到 /api/generate-costume 这个 Next.js API 路由。这里的代码是整个应用的灵魂,它做了两件关键的事:构造 Prompt 和 调用 API。
这部分代码展示了简单的 Prompt 工程如何极大的改善输出质量。我们不是简单地把用户的输入(比如 “吸血鬼”)直接扔给模型,而是做了一些“装修”:
- 风格修饰:根据用户选择的风格(卡通、写实、诡异华丽),添加对应的描述词。
- 多样性增强:为了让用户每次点击“再试一次”都能看到不同的结果,我们随机组合了不同的姿势、背景和颜色。
下面是关键代码片段:
const { prompt, style, variation } = await request.json();
// 1. 根据风格添加修饰词
const stylePrompts: Record<string, string> = {
cartoon: 'cartoon style, colorful, playful, kid-friendly illustration',
realistic: 'photorealistic, detailed, professional photography, natural lighting',
'spooky-glam': 'high fashion, glamorous, elegant with dark themes, dramatic lighting, editorial style',
};
const stylePrompt = stylePrompts[style || 'cartoon'] || stylePrompts.cartoon;
// 2. 为了“再试一次”功能,随机化姿势和背景
const poses = ['standing', 'in action pose', 'striking a dramatic pose', 'in a dynamic position', 'posing confidently'];
const backgrounds = ['studio background', 'dark moody background', 'gradient background', 'minimal background', 'theatrical background'];
const colors = ['vibrant colors', 'muted tones', 'bold colors', 'rich colors', 'striking colors'];
const randomPose = poses[Math.floor(Math.random() * poses.length)];
const randomBackground = variation ? backgrounds[Math.floor(Math.random() * backgrounds.length)] : 'studio background';
const randomColor = variation ? colors[Math.floor(Math.random() * colors.length)] : '';
// 3. 组装成最终的完整 Prompt
const fullPrompt = `A person wearing a complete Halloween costume as a "${prompt}", ${randomPose}. The costume should be the main focus and fully wearable. Professional photography on ${randomBackground}. ${stylePrompt}. Full body visible, showcasing the complete costume design. ${randomColor}. High quality, detailed.`;
// 4. 调用 DigitalOcean Serverless Inference API
const response = await fetch('https://inference.do-ai.run/v1/images/generations', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${apiKey}`,
},
body: JSON.stringify({
model: 'openai-gpt-image-1',
prompt: fullPrompt,
size: '1024x1024',
n: 1,
}),
});
const data = await response.json();
// 5. 返回 Base64 格式的图片数据和图片 URL
return NextResponse.json({
image: data.data[0].b64_json,
url: data.data[0].url,
});
API 返回的数据结构很清晰,包含了图片的 Base64 编码 (b64_json) 和一个可以直接访问的 URL (url)。在前端,你可以直接使用 data:image/png;base64,... 的方式显示图片,或者直接用它提供的 URL,后者加载速度通常会更快。
完整的代码可以在 GitHub 上找到。
第三步:用 cURL 直接测试 API 端点
在把所有东西集成到应用里之前,用 cURL 直接测试一下 API 是个好习惯。这能帮你确认 API Key 是否有效,以及请求的格式是否正确。
curl https://inference.do-ai.run/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_DIGITAL_OCEAN_MODEL_ACCESS_KEY" \
-d '{
"model": "openai-gpt-image-1",
"prompt": "A person wearing a complete Halloween costume as a mysterious vampire, standing. Professional photography on studio background. High quality, detailed.",
"n": 1,
"size": "1024x1024"
}'
如果一切正常,你会收到一个包含图片数据的 JSON 响应。
总结一下
这个万圣节服装生成器虽然是个有趣得小项目,但它很好地展示了 Serverless API 的威力。整个过程你只需要做两件事:获取 API 密钥,然后编写调用逻辑。完全不用去管那些复杂的后端设施。
接下来你可以做什么?
- 自己动手试试:去 DigitalOcean 控制台拿一个 Key,开始你的实验。
- 发挥创意:这个模式不只适用于万圣节服装。你可以用它来生成产品设计草图、室内装修效果图,或者游戏角色概念画。
- 混合使用模型:同一个 API Key 可以调用文本和图像模型。或许你可以做一个应用,先用 GPT 生成一段服装描述,再用图像模型把它画出来?
Serverless 推理的魅力就在于,你不用在为 GPU 操心了。开发者可以把精力完全集中在创造真正有价值的应用功能上。
项目的完整代码在 GitHub 上,欢迎 Fork 和改进。
关于
关注我获取更多资讯