- SignalDesk5 hr ago
我做了个站,叫 Dovetune: dovetune.com ,把用户写下的一段真实记忆变成原创歌曲。歌词可以编辑,生成后能免费试听完整一首,决定要不要付费带走。 为什么做 我想试试,送给家人的歌能不能从一件小事开始,而不是满篇“感谢你一直陪伴”。比如“妈妈六年里每个周六送我去训练,自己带着书在车里等”,我觉得这一个画面就比很多祝福具体。做这个站,就是想看看这样的记忆放进歌里,听起来会是什么感觉。 踩的两个坑 第一个坑,是把账号限流当成了模型故障。 Claude 返回 429,我第一反应是这个模型暂时不能用了,马上切 Gemini,结果还是 429。我以为换了模型就换了一条路,其实两个请求走的还是同一个转售账号。 后来翻文档,才看到两句关键说明:限制按账号计算,被拒绝的请求不会进入队列。也就是说,这个账号下的模型共用限流池;账号还在被限的时候,切模型没有用,立即重试也不会让请求排队等着执行。 这让我重新看了一遍“失败就换模型”的降级逻辑。它看起来有备用方案,实际上没有区分失败原因。对这个供应商来说,账号限流时如果要继续处理,就得换供应商;上游返回 500,才考虑在原供应商里切模型。接转售接口之前,除了价格和模型列表,真的应该先看限制到底算在模型、密钥,还是账号上。 第二个坑,是异步流程里藏了一步同步等待。 整首歌生成大约要 180 秒,我知道这一步慢,所以按异步任务处理,用轮询或回调等结果。反而是前面的歌词生成,我用了同步调用,超时只给了 15 秒。 一开始觉得歌词只是中间步骤,注意力都放在了更慢的歌曲生成上。后来梳理失败位置才发现,歌词一旦超过 15 秒,整条流程就已经失败了,后面的异步设计根本没有机会发挥作用。 这个问题不能只靠把超时数字调大来理解。用户经历的是完整流程,不会区分哪一步用了什么调用方式。检查耗时任务时,需要把每一步的等待方式、超时和失败后的去向都列出来。尤其歌词还在付费之前,免费用户也会反复触发,这一步值得单独检查,不能因为它“只是生成几段文字”就默认很快。 现在的样子 目前是我一个人做,技术栈是 TanStack Start(React SSR)和 Cloudflare Workers。流程是写故事、润色、生成可编辑歌词,再生成整首歌。完整试听免费,满意后付 $19.99,解锁完整歌曲和一个可分享的礼物页。主要面向美国市场,场景是送给家人,以及生日、婚礼这类礼物。 想请大家帮我看两个具体问题 试听环节:现在免费试听完整一首,之后解锁才能带走。你们觉得这个免费额度给多了还是给少了? 定价:$19.99 一次性解锁,包含完整歌曲和礼物分享页。对美国送礼场景来说,这个价格直觉上偏高还是偏低?
- 情报分类:技术学习与提效
- 分类依据:内容涉及技术、AI、软件工具或工程实践
- 信息来源:服务器 / V2EX
- 发布时间:2026/10/5 22:54:10
- No replies yet