Logo Ernie.SG

演示:故事的声音

2024年5月2日
1 分钟阅读
暂无标签
Table of Contents

2023年8月,我列出了自己想在 A.I. 上推进的三个关键主题:多模态、开源,以及生成式代理。“故事的声音”这个演示,正好可以作为一个例子:如何在一个大家熟到不能再熟的界面里,也就是 WhatsApp,提供一套双语、会随用户调整的互动叙事体验。我也试过把用户的语音输入变成鼓声,以及生成封面图,但这些还没有放进线上环境。这发生在 Meta AI 之前;如果你看这个界面的演进路线(Streamlit -> Chainlit -> WhatsApp),最后这个选择基本上一半来自亲眼看见人们被其他选项折磨,另一半则纯粹来自我自己的懒。

我当时心里有这些设计约束:

  • 故事应该沿用《男孩与鼓》的结构:一路上会遇到不同的人,每一轮都有物品交换;整体叙事必须遵守这个骨架

  • 同时把市场名称、交换的食物之类的东西本地化

  • 并且在合适的时候,总是尽量邀请用户输入,让他们参与进来

  • 它应该有合适的开头,也要有合适的结尾

  • 还要能合理处理用户发疯式的回复(比如它如何回应用户提议去卖 Ray-Ban Meta 眼镜)

演示:故事的声音

The Performing Arts x Tech Lab 是在2023年8月开始的。一开始我做了大量提示工程,也塞了各种 hack,确保每一轮只生成该出现的故事片段,再让下一段生成接住用户刚才的回复,同时还要试图在限定轮数内把故事收尾。这个做法并不理想,因为面对胡言乱语的用户输入时并不稳。幸好,你真正需要的只是更多智能。

A.I. 进步的故事,其实一直都是:我们必须从未来往回带路,因为模型只会越来越聪明、越来越便宜、越来越快。事实上,它们已经是这样了。在这个项目里,我“炒掉”了 GPT-4 和 Kimi;3月19日听 Hugh 推荐之后,我试了一会儿,就直接换成 Claude 3 Opus。我们最终的公开演示是在4月5日。

注:音频生成还没有优化,所以在演示里大约需要15秒才会完成并播放;这个延迟问题在下面可以读到的电话版本里已经处理了

为什么这个项目重要?

从讲故事的角度来看,这就是现代版的“自己选路线的冒险故事”,本来就很好玩。这里面的学习可以用来重新想象角色扮演游戏。它的双语性质(而且完全没有理由不能做成多语)也扩大了可及性,让新受众更容易进来。我们在滨海艺术中心(The Esplanade)做公开展示时,有人问我还需要多久才能支持更多故事,这个问题一度让我困惑。后来我意识到,作为构建者,我其实没能从一个完全第一次接触它的人的角度来看这件事;但简短答案是:我可以在几秒内把它扩展到任意数量的故事,甚至可能是毫秒级。大家缺的上下文是:大型语言模型(LLMs)已经强到一种程度,它们至少吸收了预训练数据里摄入过的那么多文化知识。我的意思是,故事可以根据用户画像更新地点和物品,比如在演示里,一个声称自己来自韩国的用户,会看到妈妈去东大门市场。所谓 A.I. 不能理解你独特的语境或词汇,是一个 神话。我们其实可以。更短的说法通常是:很多组织要么还没把这些数据数字化,要么没有能力在自己的数据集上做优化。

从架构上我也这样看:把输出约束在某个语料范围内,接收用户输入,再基于这个输入生成回复,这个一般性的想法其实非常像一种“设计模式”,可以广泛套用到各种场景,从面试准备机器人到客服代理等等。

在我们的现场演示和展览期间,观众也可以拨打我设置的一个电话号码(对,真的是电话号码),和 A.I. Kamini 说话,让她在电话里给你讲故事。它和文字聊天是类似的体验,只不过你完全处在语音的领域里;而且因为做了优化,语音输出的流式播放实际上顺畅得多。它听起来像一次真正的电话交谈,尽管系统的智能程度低于 Claude 3 Opus。

接下来呢?

我人在中国的时候把它部署到了 GCP 上,总体来说它看起来也确实按预期完成了工作:没有需要修的 bug;它存在的问题或限制也都是已知的,只是我没有处理,因为,呃,时间?所以 Lab 之后可能要补的地方包括:用 WebSockets 来流式传输音频回复,让速度更快;以及处理多个用户输入,而不是假设用户只会用一个字符串回复一次。这些会进我的待办。除此之外,我也在热切等待更好的华语语音克隆技术;如果有人有比 Elevenlabs 更好的东西,请拿来。

现在我已经有一个能跑的代码库了,接下来想部署并提供生成式代理。我想在合适的节点恰当地使用 LLM,把工作流自动化,让这条管线的输出最终变成一个动作,变成世界状态的一次改变。它可以很简单,比如给我自己的视频自动转录、翻译、生成字幕,然后上传;也可以更复杂,比如一个代理,接收你交给它的任何非结构化数据,判断该用什么 schema,也就是该套什么数据结构,再从非结构化数据里输出结构化数据。我认为后面这个代理会对几类人有用:想从田野录音里提取数据的研究者;想丰富馆藏数据并把整件破事自动化的 GLAM 机构(也就是不只对图像生成丰富的嵌入,还要对视频、信件等等生成转录、文本和相关元数据);甚至也包括那些我本来就应该在做的考试和面试准备机器人。

在重新思考软件如何构建、以及原生围绕 A.I. 构建的体验到底可以有多强这件事上,我们现在还处在极早期。它们会让人高效多少。它们又会变得多么可扩展、多么可堆叠。任何不能通过 APIs 和其他软件好好对接的方案,都应该算犯罪(除非你真的、真的没得选)。

请继续关注我的更新!


最初发布于 PubPub:erniesg.pubpub.org/pub/xlkdc79p