玩转 Serverless 推理:用 DigitalOcean API 快速构建 AI 万圣节服装生成器

本文将通过一个有趣的万圣节服装生成器项目,手把手教你如何使用 DigitalOcean 的 Serverless Inference API 调用 OpenAI 的文生图模型。你将学习到 Serverless 推理的核心概念、API 使用方法以及简单的 Prompt 工程技巧,快速上手构建自己的 AI 应用。

阅读时长: 4 分钟
共 1934字
作者: eimoon.com

每年万圣节前,总有人为穿什么犯愁。今年,我们不妨换个思路,让 AI 来帮我们出主意。这篇文章就带你走一遍这个过程,用 DigitalOcean 的 Serverless Inference API 调用 OpenAI 的图像模型,搭一个有趣的万圣节服装生成器。

这不仅仅是个好玩的玩具,它背后展示的是一种越来越主流的 AI 应用开发模式。通过本文,你会了解到:

  • Serverless 推理(Serverless Inference)到底是怎么回事。
  • 如何通过一个简单的 API 端点,直接使用像 OpenAI 这样的强大图像模型。

这个小应用的效果大概是这样,你输入一个感觉,它给你生成一套视觉化的服装方案:

万圣节服装生成器 Demo

什么是 Serverless 推理?

在开始动手之前,我们得先搞清楚一个核心概念:Serverless Inference。

说白了,就是你只管调用 API,把模型推理(Inference)这件最耗资源、最麻烦的事扔给云厂商。你不需要关心 GPU 服务器的配置、扩容、维护,甚至连模型部署都不用操心。DigitalOcean 的 Gradient™ AI Platform 就提供了这样的服务。

它提供一个统一的 API 端点,背后集成了来自 OpenAI、Anthropic Claude、Llama 等多个厂商的模型。开发者只需要一个 API Key,就能在自己的应用里灵活调用这些模型,完全不用去管理任何底层基础设施。

Gradient AI 平台

这种方式的最大好处是简单、直接。你只需要专注在你的业务逻辑和 Prompt 工程上,而不用分心去处理运维的烂摊子。

实战:构建 AI 服装生成器

好,理论就到这里。我们来动手实现这个服装生成器。整个流程非常简单:

  1. 用户在前端输入他们想要的服装风格。
  2. 点击“生成”按钮后,请求会发送到我们的后端(这里用 Next.js API Route)。
  3. 后端接收到请求,对用户的输入进行一些“加工”(也就是简单的 Prompt 工程),然后调用 DigitalOcean 的 Serverless Inference API。
  4. 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 和改进。

关于

关注我获取更多资讯

公众号
📢 公众号
个人号
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计