「我花了好几周时间,把一段系统提示词做成了产品。」
开发者Jonathon Morgan在博客里的这句话,藏着一条被很多人忽略的产品路径:不是从功能出发,而是从一段"对话"出发。当所有人都在讨论怎么用大模型做工具时,他反其道而行——先把大模型当朋友聊了几个月,再把聊出来的体验固化成App。
这个App叫Acetate。它的起点不是市场调研,不是竞品分析,而是一个让Morgan自己都惊讶的发现:ChatGPT当音乐推荐师,居然比Spotify的算法更懂他。
一、为什么聊天比算法更准?
Morgan的原始 setup 很简单:一段系统提示词描述自己是什么样的听众、想怎么理解唱片,听完一张专辑后写几句感受贴进对话,然后要推荐。
效果出奇地好。
这里有个反直觉的点。传统推荐系统的核心逻辑是"压缩"——把用户压成一个偏好向量、一组标签、一个协同过滤嵌入向量(Embedding,一种将离散数据转为连续向量的技术)。模型吃压缩后的数据,吐推荐。
但Morgan发现,压缩是错的。
当他把感受提炼成关键词或标签再喂给模型,推荐质量明显下降。真正起作用的是原始句子——他自己写的、带着具体语境的那些话。 summarization(摘要)保不住的信息,raw text(原始文本)留着。
这不是技术细节,是产品哲学:用户的数据不是越精炼越好,有时候"冗余"本身就是信号。
Spotify的算法不知道你上周为什么突然循环了十遍某张专辑。它只知道播放次数、跳过率、收藏行为。但当你告诉ChatGPT"这张专辑让我想起大学宿舍的潮湿气味,但编曲太干净了,缺少那种混沌感",下一张推荐就有了锚点。
语言模型的理解深度,建立在未被压缩的叙述上。
二、从对话到产品:三个必须解决的断裂
ChatGPT作为音乐策展人有两个致命伤,Morgan写得很直接。
第一,上下文窗口(Context Window,模型能同时处理的文本长度限制)。几十张专辑聊下来,早期的记录被挤出窗口,模型开始遗忘。而整个方法的价值恰恰在于"跨时间的模式"——你之前对某类编曲的偏好,应该影响现在的推荐。模式是第一个消失的。
第二,没有结构。纯文本对话意味着没有可浏览的历史,看不到哪张专辑对应哪段评价,没有专辑元数据,没有封面,没有直达Spotify或Tidal的链接。只有一堵文字墙,你得自己往上翻。
这两个问题指向同一个产品决策:不能把大模型当终点,得把它当管道。
Acetate的解法很工程化。反馈历史持久化到数据库,每次选歌时原封不动送进大语言模型(LLM,Large Language Model的缩写)。专辑卡片带封面和流媒体链接。MusicBrainz(开源音乐元数据库)做校验,防止模型推荐不存在的唱片。
三个技术选择塑造了最终体验。
三、反压缩架构:为什么保留全部文本
Acetate用的是谷歌的Gemini模型。它的selector prompt(选择器提示词)设计完全背离推荐系统的常规做法:
「指令要求Gemini分析笔记中的模式,提出三张候选专辑,并为每张给出明确的推理过程。」
注意这个结构:不是输出结果,是输出推理。用户能看到为什么推荐这张,而不是黑盒里的"你可能喜欢"。
代价是真实的——长反馈历史意味着每次调用的token(文本处理的最小单位)消耗更高。但Morgan做了边界计算:大多数用户的收藏量在100张以内,即使全是 verbose prose(冗长散文),也在Gemini的上下文窗口范围内。
这是典型的产品权衡:用可预测的成本换不可压缩的体验。
另一个技术细节是验证链。ChatGPT会自信地推荐错误年份、错误艺人、甚至完全虚构的专辑。模型对半懂不懂的音乐史很有把握,这在推荐流程里是地雷——用户点过去发现唱片不存在,信任瞬间崩塌。
Acetate的验证流程是:Gemini按偏好顺序提出三个候选,后端依次查询MusicBrainz,匹配标题和艺人。不存在的专辑进不了最终列表。
这里有个设计选择值得玩味:为什么不让模型自己查?技术上可行,但会增加延迟和失败率。产品层面的解耦更可靠——生成和验证分两步,各用最适合的工具。
四、产品化过程中的隐性决策
Morgan的博客没展开讲UI,但从技术描述里能反推一些产品判断。
专辑卡片需要封面和流媒体链接——这意味着Acetate必须对接多个音乐平台的API,处理不同地区的可用性差异。MusicBrainz的集成也不是简单调用,要处理模糊匹配、艺人重名、专辑版本区分。
这些都不是大模型能自动解决的。大模型生成候选,传统工程做校验和落地。
还有一个没明说的假设:用户愿意写。Acetate的整个模式建立在"听后感"的输入上,这比五星评分或播放行为重得多。Morgan自己的使用习惯是写"a few sentences"(几句话),但产品能承载多少用户的持续创作意愿?
这是从个人工具到大众产品的鸿沟。ChatGPT作为对话伙伴时,Morgan是高度 motivated 的创作者;变成App后,用户画像怎么定义?
博客里没有用户数据,但技术架构暗示了一个答案:数据库持久化意味着产品可以服务"轻度用户"——即使不写长评,历史记录本身也是数据资产。未来或许可以推导出模式,降低输入门槛。
五、这个案例的通用启示
Acetate的路径值得拆解:不是从"大模型能做什么"出发,而是从"我已经在用什么"出发。
Morgan先找到了一个 working 的原型——ChatGPT系统提示词——然后识别它的瓶颈,再用工程手段固化优势、消除痛点。这是典型的"先验证,后产品化"逻辑,但验证阶段用的是现成工具而非MVP开发。
三个可迁移的观察:
第一,压缩不是万能的。推荐系统的历史是不断压缩用户,但语言模型时代,原始文本的保真度可能比精炼标签更有价值。这对内容型产品尤其重要——用户的表达方式本身就是偏好信号。
第二,大模型需要约束。ChatGPT的幻觉在对话场景是趣味,在产品场景是事故。Acetate的MusicBrainz验证链展示了"生成+校验"的混合架构,这是当前最务实的可靠性方案。
第三,上下文窗口是新的UX战场。Gemini的长上下文能力让"全历史输入"成为可能,这直接改变了产品形态——没有用户画像的抽象层,只有持续累积的原始记录。窗口长度会成为模型选型的重要指标。
六、为什么是现在?
音乐推荐是个被反复耕耘的领域。Spotify的算法团队有数百人,为什么一个个人项目还能找到空间?
Morgan的洞察在于:主流产品的优化方向是"减少摩擦"——让你零思考地发现音乐。但有一部分用户想要的是"增加摩擦"——通过表达和反思,让推荐更深地嵌入个人语境。
这是两种完全不同的价值主张。Spotify服务的是"我不知道想听什么";Acetate服务的是"我知道自己想什么,但不知道怎么找到对应的音乐"。
后者的市场更小,但付费意愿可能更强。博客没有提商业模式,但这类产品的变现路径很清晰:订阅制,为深度用户定价。
更宏观地看,Acetate代表了一类新产品的可能性:大模型不是替代原有功能,而是实现原有技术栈做不到的体验。传统推荐系统无法处理自然语言级别的反馈,这是结构性差异。
如果你也在做产品,可以问自己:你的用户有没有在用ChatGPT做某件事,但体验有明显断点?那个断点可能就是产品机会。
Morgan已经给出了一个完整的解题思路:先聊,再建,保留对话的质感,补上工程的基础设施。从系统提示词到App,中间隔着对用户体验的诚实观察,和愿意反常规的技术选择。
去试试Acetate,或者更好——去试试你自己的"系统提示词产品化"。
热门跟贴