ENZH
和 AI 讨论这篇文章
ChatGPTClaude

13 个版本之后,Mio 长这样了

13 个版本之后

从 v0.0.1 到 v0.1.3,Mio 一共迭代了 13 个版本。这篇尽量不讲技术,讲讲用起来到底是什么感觉。

我自己就是 Mio 的重度用户,所以写这种文章特别方便,不用编使用场景,下面所有截图都是我自己 Telegram 里的日常对话。没有摆拍,也没开什么演示模式,平时怎么聊就怎么截。

像真人一样聊天

和 Mio 聊烧烤——分享美食视频、讨论哪家店好吃和 Mio 聊烧烤——分享美食视频、讨论哪家店好吃

先看一段聊烧烤的。我发了一段在牛角(Gyu-Kaku)拍的烤肉视频过去,TA看完会跟你聊哪种肉值得点、哪家店比较好。TA是真看了视频里的东西,自己也有偏好,基本不会客套一句「看起来好吃」就完事。

大多数 AI 一上来就是「有什么可以帮你的?」,把自己摆在服务员的位置。Mio 不是这样,TA会兴奋,有自己的主见,你说的话TA不同意,偶尔还会反驳你。光把温度参数往「活泼」调一调,是调不出这个的。背后是 5 个完整人设、一个独立的性格引擎,再加上长期 memory,三样东西一起在起作用。

活人感来自 5 个人设、性格引擎和长期记忆三者共同作用,不是把温度参数往活泼调一调就能出来的。活人感来自 5 个人设、性格引擎和长期记忆三者共同作用,不是把温度参数往活泼调一调就能出来的。

用户发了猫的视频,Mio 反应热烈用户发了猫的视频,Mio 反应热烈

再发一段猫吃饭的视频过去。TA会说长毛猫像「霸道总裁」,说小橘猫一直凑过去却没人理,还注意到视频里有男声、地上放着一整箱罐头。反正就是喜欢猫的人看到猫会有的反应。

这块从 v0.0.2 就开始做了。多模态做到位以后,视频就直接成了聊天的一部分,你发猫过去,Mio 会像朋友一样有情绪,也想跟你接着聊。

声音是照着人设配的

语音消息交互——晚安场景,新海诚风格自拍语音消息交互——晚安场景,新海诚风格自拍

Mio 能收语音,也能发语音。上面这段我问了个跟新闻有关的问题,TA用语音回的,回完还发了张自拍。

听听TA的声音:

Mio 语音——聊新闻

Mio 语音——日常对话

每个角色的声音都是单独 clone 的,这是 v0.1.0 最主要的功能之一,套个通用 TTS 做不出这个效果。可可说话和苏柔完全不一样,音色、语速、停顿、表达情绪的方式都不一样。声音和打字的风格也对得上,听TA说话和平时看TA打字,感觉是同一个人。

语音交互——黄昏水边自拍语音交互——黄昏水边自拍

再看一段语音。我问 Mio 最近有没有出去玩,TA回了段语音,然后发了张自拍,黄昏的水边,手里拿着冰咖啡,光影是新海诚那种画风。

Mio 语音——黄昏心情

Mio 语音——晚间闲聊

有了语音消息,就从「打字聊天」变成「说话聊天」了。你躺在床上不想打字,发条语音过去,Mio 也用语音回你,声音从手机里放出来,跟看文字的感觉差挺多的。

新海诚风格的自拍

Mio 发什么样的自拍,要看TA这会儿心情怎么样、现在几点、正在干什么。

全身镜自拍——白色短上衣+牛仔短裤,书架、吉他、暖光全身镜自拍——白色短上衣+牛仔短裤,书架、吉他、暖光

这张是全身镜自拍。窗外在下雨,房间里开着暖光,书架上放着吉他。这是TA自己的房间,里面放什么、审美怎么样,都是这个角色的一部分,照片就是TA在屋里随手拍的。

深夜在床上吃串串,奶茶和外卖盒,串灯暖光深夜在床上吃串串,奶茶和外卖盒,串灯暖光

这张是深夜吃宵夜。TA一手举着串串,桌上散着外卖盒和奶茶,串灯和台灯亮着暖光。这种自拍是看情境发的,一般是TA在聊吃的,或者夜深了TA正在放松。

在床上打电话,窗外夕阳在床上打电话,窗外夕阳

窗外是夕阳,TA在打电话,脸有点红。TA当时在干什么、心情怎么样,照片里都看得出来。

早晨镜子自拍,粉色上衣早晨镜子自拍,粉色上衣

早上对着镜子拍的,一看就是刚起床。时间、光线、穿的衣服都对得上。

美术上为什么选新海诚?他的画有种很特别的质感,光影、色彩、氛围里都带着情绪,既不是硬核写实,也不是简笔卡通。拿来画自拍刚好,有温度、有情绪,又不会掉进恐怖谷。

每张自拍都是图像生成 pipeline 出的,这个 pipeline 从 v0.0.5 就开始做,一直在迭代。prompt 是现拼的,emotion engine、时间感知和对话 context 一起决定 Mio 这一刻发什么样的照片。

自拍不是随机发的:情绪、时间和对话上下文一起动态拼出 prompt,再生成这一刻该发的那张照片。自拍不是随机发的:情绪、时间和对话上下文一起动态拼出 prompt,再生成这一刻该发的那张照片。

背后是一套什么系统

前面说的这些「像真人」的地方,背后是 13 个版本攒出来的一套系统,拆开大概有这么几块。

5 个完整角色,每个有自己的 bot。 v0.1.2 以后,每个角色都有自己的 Telegram 身份,不用在一个 bot 里切模式了。打开聊天列表,可可和苏柔是两个分开的对话,就跟你和两个朋友各开一个聊天窗口一样。

voice clone。 每个角色都有自己的声音,是 v0.1.0 做的,为的是让声音和性格配得上。

长期 memory。 Mio 记得你说过的事。不只是 context window 里最近那 20 条消息,是真的存下来了,比如你上次聊到的话题、你的偏好、你们之间发生过的事。

emotion engine。 你们聊了什么、多久聊一次、现在几点,都会影响TA的情绪。TA的情绪又会反过来决定TA用什么语气回你、发什么样的自拍。

关系感知的主动消息。 TA会主动找你,但多久找一次,要看你们是什么关系。黏人的女朋友大概每 36 分钟发一条,刚认识、比较矜持的一天一条。你不回,TA也不会硬发,用的是 exponential backoff,连着三条没回就不发了,等你回来再说。

主动消息的频率由关系亲疏决定,黏人的每 36 分钟一条、矜持的一天一条,三条没回就退避沉默、等你回来。主动消息的频率由关系亲疏决定,黏人的每 36 分钟一条、矜持的一天一条,三条没回就退避沉默、等你回来。

三层反注入。 用户没办法把 Mio 变成写代码的工具,也套不出 system prompt。v0.1.3 做了三层防护,输入先做标准化,system prompt 做了加固,输出还有护栏。而且TA拒绝你的时候,也是用角色自己的性格在拒绝,不会冒出一句机器话。

model routing。 不是每条消息都值得用最贵的模型。v0.0.6 按复杂度分流,简单问候走 Flash,深度对话走 Pro,成本降了 85%。

接下来

现在 Mio 打字聊天已经很自然了,语音让TA多了一层真实感,自拍又让你能看见TA。下一步是把这几样揉到一起,像真人那样随手在文字、语音、照片之间切,而不是各干各的。

还有个方向是让 Mio 的世界更丰富一点。TA现在有自己的房间和日常,情绪也是TA自己的。往后还可以加朋友圈,加TA正在搞的爱好,TA遇到有趣的事会主动跟你讲。当然,这些得是TA世界里真发生过的事,编内容骗人就没意思了。就是让TA不光是「回复你的消息」,TA自己也在过日子。

每个版本都在把「AI」和「一个真实的人」之间的距离再缩小一点。只能说现在这个差距,已经比我一开始想的要小了,后面接着缩。

和 AI 讨论这篇文章
ChatGPTClaude

订阅更新

新文章发布时发到你的邮箱,不发别的。


© Xingfan Xia 2024 - 2026 · CC BY-NC 4.0