我在做一个中文 AI 创作平台(对话、图片、视频、音频都有)。半年下来,最大的收获不是功能,而是一堆反直觉的坑。挑 4 个有数据的分享一下,对做 AI 应用的朋友可能有用。 1. 「无审查」往往卡在托管商,不在模型本身 同一个图片编辑模型 Seedream V5 Pro ,放在三家托管商上,用 40 条容易触发审核的编辑指令和同一张原图逐条测试( 2026 年 8 月实测),被内容策略拒绝的比例分别是 0%、12.5% 和 90%。模型是同一个,差别全在托管商自己加的那一层审核:有的托管商在接口上根本没有提供关闭安全检查的开关,有的审核是概率性的,同一句话重试一次可能就过了。 所以挑「无审查」服务时,看名字没用,要看它实际跑在哪家,实测拒绝率是多少。 2. DeepInfra 的 TTS 一过 15 秒就变成白噪声 长文本语音合成时,大约 60 秒的音频会在中段突然变成刺耳的白噪声。 抓包后发现,DeepInfra 在一个本该是裸 PCM 数据的流里,每 15 秒左右插入一行 45 字节的 SSE 心跳: : ping - \r\n\r\n PCM16 一个采样占 2 字节,而 45 是奇数。心跳一插进去,后面所有采样的字节都错位了一位,听起来就是白噪声。解决办法是在流里识别并剥掉这一行。如果你也在用 DeepInfra 的流式 TTS ,可以检查一下 300 字以上的长文本。 3. Vercel 函数冻结,会吞掉「发出去就不管」的写入 计量日志和服务端埋点我们最初是 fire-and-forget 写的( void fetch(...) ,不 await )。后来发现,Vercel 的函数实例在响应发出后就会被冻结,没写完的 promise 会被挂起,直到下一个请求把实例唤醒才继续,而那时连接早已超时。 丢不丢取决于写入能不能在响应发出前的几毫秒内完成:复用热连接的数据库 INSERT 多半能活下来,要新建 TLS 连接的埋点请求则基本必丢。所以高峰期几乎看不出问题,低谷期和单次调用会稳定地丢数据,统计结果在半夜系统性偏低。 解决办法是用 @vercel/functions 的 waitUntil 把这些 promise 包起来,实例会等它们完成再冻结。修好之后,单次调用并静默 150 秒,计量和埋点也都能在响应后约 200ms 内落地。如果你在 Vercel 上做统计,发现半夜的数据总是少一截,可以查查这个。 4. 长对话越长,回复末尾越容易出现乱码 我们统计了某个无审查模型回复末尾出现乱码的比例,发现它随上下文长度单调上升:上下文在 8k token 以内时约 0.01%,超过 48k 时到了 1.95%。短对话根本复现不出来,所以一开始一直以为是偶发故障。 更麻烦的是,一旦历史里出现过一次乱码,模型会照着抄下去。把 temperature 调到 0.7 之后,这种「被污染的历史」引发的乱码从 7/40 降到了 1/40 。所以先调采样参数,比去砍上下文更有效。 最后说点题外话 这个项目从头到尾都是几乎我一个人在做。半年下来最大的感受是:一个人靠技术挣钱,养活自己是可以的。前提是选一个大厂不愿意做、或者做不好的方向,然后把那些脏活累活一件件干完。上面这些坑,没有一个是写功能时想得到的。 工具方面,最想夸两家。Vercel 是真好用:每个分支自动部署一个预览环境,合并到主干就上线,一个人也能保持很快的发布节奏,上面那个冻结的坑算是我交的学费。Cloudflare 是真良心:对象存储不收出口流量费,图片和视频这种大流量业务能省下一大笔钱,连域名邮箱都是免费转发的。 平台叫 [思畅 AI]( https://sichang.xyz ),网页端可以免费试用,也有兼容 OpenAI 和 Anthropic 接口的 API ,可以直接接 Claude Code 。 4 月 发过一帖 ,当时大家提的意见都记下了。模型方面,默认模型已经换掉了。隐私方面,我们不再做「不存储」这种没法验证的承诺,改为隐私和便利并重:对话保存在账号下,手机、电脑多台设备可以同时使用,消息实时同步;传输全程 HTTPS, 数据库静态加密,数据按账号隔离;对话不用于训练任何模型,可以随时一键导出或删除。这里不是端到端加密,想要绝对的隐私,本地模型仍然是最好的选择。 欢迎拍砖。


  • 情报分类:服务器与云资源
  • 分类依据:内容涉及服务器、云资源或网络线路
  • 信息来源:服务器 / V2EX
  • 发布时间:2026/10/15 22:52:22