指南

如何搭建 AI 图像生成应用:API、存储、成本与安全

要搭建 AI 图像生成应用,你需要从模型提供商处选择一个图像生成 API,用自己的密钥从服务器调用它,将每个结果保存到文件存储中,并把它包装成一个针对特定用途的工作流:产品图、社交媒体帖子、头像、符合品牌风格的插画等。与文本应用相比,你需要额外考虑三件事:生成速度较慢、每次生成的成本较高,以及需要为用户可以创建的内容制定规则。界面反而是最简单的部分。

先确定用途,而不是“一个图像生成器”

通用的图像生成器已经内置在聊天助手和设计工具中。一个新应用只有在做好某一件具体工作时才值得使用:

  • 风格统一: 每张图片都符合某个品牌的色彩和风格,用户无需写很长的提示词。
  • 结构化输入: 商品图工具会询问商品图片和场景;书封工具会询问书名、类型和氛围。
  • 合适的输出: 为市场列表或广告版位输出正确的尺寸,文字叠加由你的应用完成,而不是交给模型。
  • 完整的工作流: 生成多个方案,挑选其中一个,进行编辑、下载,并保存到素材库中。

应用由哪些部分组成

部分作用
输入表单提示词、风格预设、尺寸、可选的参考图片上传
提示词构建器在服务器端,将你隐藏的风格指令与用户输入的内容合并
图像 API 调用服务器使用你的密钥发送请求,并等待结果
进度状态生成可能需要几秒甚至更久;要让用户看到系统正在处理
文件存储保存每张生成完成的图片,避免丢失
数据库记录谁生成了什么、使用了哪些提示词和设置,以及文件存放的位置
图库用户过去生成的图片,支持下载和删除
限制与计费按用户设置的上限;如果收费,还需要套餐或积分

搭建前需要做的决定

选择哪家图像模型提供商

有多家提供商提供图像生成 API,既有大型 AI 实验室,也有通过一个 API 托管多种开源模型的平台。请用你自己的测试提示词比较它们在以下方面的表现:

  • 适用于你的用途的质量: 摄影风格的商品、插画、图片中的文字、人脸。
  • 速度: 有些模型几秒钟就能返回,有些则需要更长时间。
  • 所需尺寸下的单张价格。 请查看提供商自己的定价页面,因为价格会变化。
  • 编辑功能: 有些模型支持编辑上传的图片或填充图片的局部,很多用途都需要这一点。
  • 条款: 是否允许商业用途、内容规则,以及你发送的提示词和图片会如何被处理。

建议把提供商封装在一个服务器函数后面,以便日后更换模型。我们关于如何使用大模型 API的指南涵盖了 API 密钥和按量计费,这些同样适用于图像模型。

等待结果

文本回复可以逐字流式显示,而图片通常是一次性返回的。对于速度较快的模型,浏览器可以等待服务器的响应。对于较慢的模型,更好的做法是:创建一条状态为待处理的“生成”记录并立即返回,待提供商完成后,服务器将其更新为已完成并写入图片地址,页面则每隔几秒检查一次状态。部分提供商支持 webhook,即任务完成时向你的服务器发送的消息。参见什么是 webhook。

存储

提供商的响应通常包含临时链接或原始图片数据。应立即将图片复制到你自己的文件存储中,并把其地址保存到数据库。对于免费用户,你需要决定保留图片的时长,因为存储会产生持续的费用。我们关于为应用添加文件上传的指南介绍了存储的基础知识。

成本与限制

提供图像生成是较为昂贵的 AI 功能之一。上线前请做好以下准备:

  • 在提供商的控制台中设置每月消费上限。
  • 在服务器端强制执行每位用户每天的图片数量上限。
  • 默认使用标准尺寸和质量;高分辨率渲染则收取更多费用,或改用积分。
  • 只有成功生成的图片才计入用户的额度。

内容安全与权利

  • 提供商规则。 大多数提供商会屏蔽部分内容,如果有人反复违反其规则,还会暂停账户。用户的行为由你负责,因此你的条款应与提供商的条款保持一致。
  • 内容审核。 使用提供商提供的安全设置,并考虑在发送前检查提示词。如果用户可以公开分享图片,请添加举报图片的功能。
  • 真实人物。 生成可识别的真实人物图片,尤其是在色情、暴力或误导性的语境中,会造成真实的伤害,并且在许多地方是违法的。应明确禁止。
  • 上传的参考图片。 如果用户上传照片,只允许他们使用其有权使用的图片,并且不要保存超过所需时间的文件。
  • 归属与标注。 关于 AI 生成图片的归属,以及是否必须标注,各国规定不同且会变化。请阅读提供商的条款,如果这对你的业务很重要,请寻求专业意见。

给 AI 构建工具的第一条提示词

搭建一个名为 ShelfShot 的网页应用,为小型网店生成生活场景风格的商品照片。用户登录后,上传一张商品照片,选择场景预设(厨房台面、户外野餐、极简摄影棚、温馨客厅)和尺寸(正方形或 4:5),然后点击生成。服务器将预设中隐藏的风格指令与商品信息合并,并使用私密的 IMAGE_API_KEY 调用图像生成提供商。将每张生成完成的图片保存到文件存储中,并在数据库中记录用户、提示词、预设、尺寸和文件地址。等待期间显示进度状态,完成后展示结果,并提供下载和删除按钮。“图库”页面显示用户过去生成的图片,每位用户只能看到自己的图片。在服务器端限制每位用户每天最多生成 20 张图片。绝不要把密钥发送到浏览器。

分步搭建

  1. 先单独测试提供商: 用十个真实输入进行测试,然后选定模型。
  2. 搭建核心流程: 表单、服务器调用、进度状态、屏幕上显示结果。
  3. 保存到存储中, 并在数据库中记录每次生成;第二天检查图片是否仍能正常加载。
  4. 添加账户和图库, 然后用两个账户测试,确认两人都无法通过猜测网址打开对方的图片。
  5. 添加限制和错误处理: 超时、被拦截的提示词以及提供商的错误,都应显示清晰的提示,并且不应消耗用户的额度。
  6. 添加安全措施: 提供商的安全设置、屏蔽词、使用条款,以及在图片可以被分享时提供举报按钮。
  7. 如果收费,添加计费功能; 参见如何为应用添加支付。
  8. 上线前进行安全审查。 AI 构建应用安全检查清单是一份很好的参考清单。

常见错误

  • 从浏览器调用图像 API,这会暴露你的密钥。
  • 只保存提供商的临时链接,结果几天后图库就会失效。
  • 没有每位用户的上限,一个用户或机器人就可能耗尽你的预算。
  • 让模型直接绘制文字。 许多模型仍会在图片中拼错单词。标题和价格应由你的应用在图片上叠加。
  • 在提供商暂停账户之前忽视内容规则。
  • 公开的图库没有任何审核。

什么时候现成的产品更合适

如果你或你的团队只是需要图片,直接使用现有设计工具或 AI 助手中的图像功能即可;为了制作自己的图片而专门开发一个应用,通常并不划算。当你要为特定群体提供可重复的工作、需要每次都应用统一的品牌风格,或者希望把图像生成作为更大产品中的一个步骤时(例如一个既写文案又生成照片的商品列表工具),才值得自己搭建。

使用 Mythex 搭建

Mythex 是一款 AI 应用构建工具:你在聊天中描述图像应用,它会在实时预览中构建表单、服务器端 API 调用、图库和使用限制,然后发布到一个公开网址。你应用中的图像生成使用的是你自己的提供商密钥,将作为项目密钥保存,并计入你自己的提供商账户。Mythex 不为你应用的用户提供图像生成用量。

这与 Mythex 自身的图像生成功能不同。后者用于为你正在构建的网站制作图片(例如首页大图或图标),并消耗 Mythex 积分。当你的应用需要保存图片时,Mythex 会为项目启用文件存储,并为生成记录提供 Postgres 数据库。如果想从较小的起点入手,请参阅如何为应用添加 AI 功能,它介绍了如何在现有产品中添加单个 AI 操作。

常见问题

搭建 AI 图像生成器需要 GPU 吗?

如果你使用图像生成 API,就不需要。模型由提供商在其硬件上运行,你的应用发送提示词并接收图片。自己运行模型则需要 GPU 服务器,是一个大得多的项目。

为什么 AI 图像应用比文本应用更贵?

通常每生成一张图片的成本明显高于一段简短的文字回复,分辨率越高或质量设置越高,成本又会增加。请查看提供商当前的单张图片定价,并限制每位用户可以生成的图片数量。

生成的图片应该存放在哪里?

存放在文件存储中(对象存储桶),并将文件地址以及提示词等详细信息保存在你的数据库里。不要依赖提供商提供的临时图片链接,它们可能会过期失效。

AI 图像生成器生成的图片归谁所有?

这取决于提供商的条款,以及你和用户所在地区的法律。请阅读提供商的条款,在你自己的服务条款中把相关规则告知用户;如果版权归属对你的业务很重要,请寻求专业意见。

Mythex · Pricing · 用 AI 构建任何东西 · 网站和应用模板 · Mythex 对比 · AI 应用构建术语表 · 免费的 AI 应用构建工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 繁體中文(香港) 繁體中文(台灣)