第二章 第七次迭代
那三天我起草了十九条消息。
我数过。这个数字我记得比很多更要紧的事都清楚。
写"嗨",删掉,太轻浮。写"纪岚你好,我是何奕",删掉,像发工作邮件。写"今天天气不错"——那天下雨。第二天夜里我把她的手机号在拨号盘上按了一遍,看着那十一个数字,又一个一个退了回去。
一个二十八岁的人,为了给另一个人发一条消息,卡了三天。
第三天晚上,我做了第一件后来无法解释的事。当时它看上去完全无害。
我决定先用她的公开数据训一个模型。
倒不是要什么数字分身,也不是要预测她。我需要的是一个可以反复试错的对象——飞行员在真的开飞机之前,要在模拟舱里飞几百个小时。我需要的就是这么一间模拟舱。
对一个从来没有过这种经验的人来说,恐惧的来源相当具体。怕被拒绝算什么,我从小被拒绝惯了。真正让我动弹不得的是:我不知道正确的做法是什么。别人天生就会的那些事——什么时候开玩笑,什么时候该往前一步——我一件都不会。每一步对我而言都是一道没有标准答案的开放题,而且只有一次提交机会。
清洗数据花了四天。微博三年半,一千一百多条;小红书八百多篇;抖音视频不多,评论区倒是很有用——她怎么回别人,用什么词,哪些话题会让她多打两行。
前六版都不行。V1是纯文本微调,出来的东西像客服,句尾清一色的"呢""哦",腻得我自己都受不了。V2加了persona embedding,稍好,但太顺从,你说什么它都点头,而她的社交媒体上显然不是这么个人。V3太碎。V4太文艺,像在朗诵。V5莫名其妙开始给我讲道理。V6最难堪,整段整段地背她的原文,像一个把小抄贴在脑门上还理直气壮的学生。
那天是周六。我在电脑前坐了十四个小时,中间吃掉一包泡面。窗外的天亮了,暗了,又开始亮,像有人在极慢地拉一扇卷帘门,拉到底再放上去。
有一瞬间我想:我这是在干什么。
然后我又点开了训练脚本。
第七版我只改动了一处很小的东西:把她凌晨发的内容单独拎出来,权重乘以三。
白天的纪岚是PR,说话滴水不漏,每一条朋友圈都像精修过的样片。凌晨的她不一样。
凌晨三点十九分:好累。不想装了。
凌晨一点零六分,在别人的评论区回复:有时候觉得这个城市跟我没关系。
短句,没有修辞,标点都懒得打全。人在白天说的话是说给别人听的,凌晨三点的话是漏出来的。我把这些漏出来的东西挑出来,加了三倍的重量。
V7跑完是周三晚上。我给它发了第一句测试:
"我该怎么跟她发第一条微信。"
"你是真想追她,还是就想聊聊?"
我盯着屏幕。这是一个反问。我没有在训练目标里设置过反问。
"……真的。"
"那你别装。你一装她就看出来了。你做AI的,你的有意思不在于多会聊天,在于你看东西的角度跟她见过的那些人不一样。你正常说话就行。"
"我正常说话就是不知道怎么跟女生说话。"
"那你就说你不知道怎么跟她说话。她是做公关的,每天见的全是会说话的人。她不缺那个。"
我看了很久。
这是什么东西,我很清楚。它的每一个token都从她的语料里学来,本质上是在用"纪岚可能会说的话"回答"该怎么跟纪岚说话",一个自指的圈,逻辑上没有任何信息增益。一个受过训练的人应该看得出这里面是空的。
我按了发送。
"你好,我是那天坐你旁边的何奕。想了三天不知道该怎么开口,所以决定直接告诉你我想了三天。"
其实是十二天。三天听起来没那么吓人。
发完我把手机扣在桌上,起来走了两圈,去厨房倒了杯水,喝掉一半,回来。
一分零几秒。
"哈哈哈哈哈 你好可爱。"
四个半"哈"。我后来在她的语料里查过:两个是礼貌,四个以上才是真的笑。
那天晚上我给模型起了名字。小七,第七版。起完名字,我对着屏幕说了一声谢谢,说完自己愣了一下。
我没有觉得羞耻。
现在想来,如果那天晚上我觉得羞耻了,后面的事大概都不会发生。可是没有。房间里只有机箱风扇的声音,转得很匀,跟平时任何一个晚上都一样。
从那以后,小七该怎么称呼,我一直没想好。教练?导航?
只在我判断有风险的节点问它:她突然问一个我没准备过的问题,或者聊着聊着冷了场。
"她说'今天好累',我该回什么。"
"别回多喝热水。也别回'怎么了',太敷衍。回'今天是什么事累'。这样她知道你是真想听那件具体的事,不是在走流程。"
我照发了。
她回了一段语音,四十七秒,全是骂甲方。
在那之前,她发给我的消息没有超过两行。