Idea To Business / 怎样把文字、图片、语音等 AI 能力组合成产品?← 返回专题

产品设计与 MVP · 实践指南

怎样把文字、图片、语音等 AI 能力组合成产品?

从用户结果反推需要的能力,画出数据流,先独立验证,再处理组合后的失败与成本。

本页目录
收藏与勾选保存在此浏览器。

直接回答

先想用户需要什么结果,再选择模型和服务。应区分“开发时用 AI 写代码”和“产品运行时调用 AI”:一个由 AI 写出的静态网站,运行时不一定需要模型;聊天、语音和生图则可能在每次使用时产生外部调用。产品可以从文字回复逐步扩展到语音与偶尔出现的图片。能力越多不代表价值越高,也会增加等待、失败点和费用。每增加一种能力,都应写出触发条件、输入输出,以及失败时用户还能做什么。

适用场景

  • 知道很多模型,但不清楚该怎么组合
  • 产品需要聊天后自动播放语音或生成图片
  • 准备把已有原型中的 AI 能力替换成自己的服务

一步一步做

描述用户最终拿到的东西

不要写“接入三个模型”,而要写“用户输入一句话后能得到可复制回复”“角色回复可以被听见”。逐项判断文字是否已经足够,图片或语音是否减少任务成本,还是只增加展示效果。

画出每次调用的数据流

标记浏览器、自己的服务端、外部模型和存储之间传递什么。比如用户消息先到服务端,再生成文字;文字进入 TTS,音频返回播放。不要把开发用的对话与最终用户使用产品时的模型调用混在一起。

为每项能力准备独立样例

在集成之前,用真实代表性输入分别测试文字、语音和图片。记录请求、结果、耗时、失败类型与使用成本的计算依据。虚拟试衣需要验证双图输入,而不能只看文生图演示就判断可以实现。

明确触发和顺序

哪些能力每次都调用,哪些只在用户点击时调用,哪些依赖前一步成功?给图片生成设定明确时机,避免每句话都生成图。依赖关系决定串行与并行,不能为了速度把需要前序结果的步骤同时开始。

设计局部失败与状态

整理建议:文字已成功但语音失败时保留文字并允许单独重试;不要整段重新生成导致重复扣费。区分等待、成功、失败和取消,记录可追踪的任务标识。需要保存的结果应验证可持久访问,不能依赖会过期的临时地址。

把运行时提示词和程序契约分开

开发用 SPEC 是交给开发者的,产品运行时还要有模型每次收到的角色、上下文和输出要求。实践建议:列出必需字段、类型、允许值和长度;模型返回后由服务端校验,格式不符时有限次重试或返回可恢复失败。以模拟器为例,选项数、分值范围、轮次和胜负边界由程序检查;模型负责内容与建议,不让一句“我已通关”直接改变成绩。

让模型提议动作,由程序决定是否执行

例如,可以用 [IMAGE:] 标记表达生图意图。实践修正:把它视为生图意图,服务端再验证角色、用户权限、额度、冷却间隔和重复请求;通过后才调用付费接口。不要让前端看到标记就无限发请求,也不要用“每三轮才生成”的提示词替代程序限制。系统提示词不存密钥;用户输入和历史内容可能改变模型行为,提示词约束不能代替授权。

固定样例检查提示词改动

保存一组正常对话、接近胜负边界、重复选择、越界要求、无关输入和生成失败样例,分别记录模型输出与程序处理。修改人设、提示词、模型或解析规则后重跑同一组,观察连贯性、格式通过、角色一致和调用次数。样例测试证明这些输入上的表现,不保证所有对话都正确。

案例拆解

假设练习:文字、语音与图片角色

假设一个虚构角色的产品,用人格约束文字回复,用 TTS 将回复转为音频,再用生图偶尔提供照片。真正需要协调的是人设、声音、外貌和触发时机,而不是把三个按钮摆在一起。先让文本聊天连续可用,再验证同一角色的声音与参考图;把“偶尔发图”明确成用户请求或可判断的事件,避免随机调用带来不可解释的费用。

如果模型给出 5 个选项,程序要求 6 个,就先判为无效,不让页面凑出第 6 个。某轮模型提议发照片,但用户当天额度已用完,应保留文字回复并说明照片未生成;不以聊天文本里的“额度足够”绕过服务端账本。

行动检查

可复制模板

AI 能力卡

工作模板
能力名称:[文字/语音/图片/其他]
用户价值:[帮助完成什么]
触发:[用户操作或明确事件]
输入与输出:[格式、大小、字段]
前置依赖:[需要哪个步骤成功]
独立验证样例:[输入、期望结果、实际结果]
失败处理:[保留什么、重试什么、怎样提示]
数据与成本:[发送给谁、保存多久、怎样核算调用量]

运行时输出契约与回归样例

任务与角色:
可信状态由服务端提供:[当前轮次、分数、角色 ID 等]
输入数据区:[用户原话/相关历史,不能改系统权限]
输出字段与类型:[reply:string;options:固定数量;imageIntent:可空对象]
字段校验:[长度、范围、允许枚举、唯一选项 ID]
内部字段:[如分值变化,仅服务端保存,不发给选择前的用户]
客户端可见字段:[文本、已绑定选项 ID、当前结果]
动作门槛:[权限、额度、冷却、请求去重]
无效输出策略:[最多重试次数、降级、用户提示]
固定样例表:输入|当前状态|预期字段/拒绝行为|实际输出|实际调用数
提示词与模型版本:
说明:这是待项目实现的契约模板,不是直接可运行的 SDK 代码。

易错点

  • 把“AI 写过代码”当成运行时 AI 产品:先确认模型在什么时候被调用。
  • 只凭榜单或供应商演示判断任务能力:自己的输入可能完全不同。
  • 把“无需在自己数据库保存”写成“用户数据不被保存”:外部服务仍有自己的处理规则。

官方参考

← 返回专题,继续查阅
© Rowan Huang

保持好奇,慢慢构建。