这是什么功能?谁发布的?
2023年8月14日,Replicate 官方博客发布了一篇文章,宣布 Replicate 的 API 现在支持语言模型的流式输出。Replicate 是一个云端平台,开发者可以在上面运行各种 AI 模型,并通过 API 调用它们。这次更新让开发者可以像看 ChatGPT 打字一样,实时收到模型一个字一个字生成的回复,而不是等模型全部生成完才一次性拿到结果。
这个功能是 Replicate 自己开发的,属于闭源云服务。打个比方,以前你点外卖要等所有菜都做好才一起送来,现在变成了做好一道就送一道,你可以边吃边等。对于做聊天机器人的开发者来说,这能让用户体验好很多。
流式输出是怎么工作的?
在 Replicate 上使用流式输出,步骤很简单。首先,你在创建预测(prediction)时加上一个 stream 选项,设为 true。Replicate 会返回一个预测对象,里面包含一个专门的流 URL。然后,你用浏览器或命令行工具连接这个 URL,就能持续收到模型生成的每一个 token(可以理解为一个字或一个词)。
原文给出了两种示例:一种是在浏览器里用 JavaScript 的 EventSource 来接收,另一种是在终端里用 cURL 命令来接收。无论哪种方式,你都会看到类似“event: output”和“data: Sure”这样的消息一条一条出现,直到收到“done”事件表示生成结束。这就像收音机调对了频道,声音就一段一段传过来。
哪些模型已经支持?
根据原文,很多语言模型已经支持流式输出,包括 Falcon、Vicuna、StableLM,当然还有 Llama 2。Replicate 还专门建了一个“streaming language models”集合,方便开发者查看完整列表。这意味着如果你用的是这些模型,不需要额外做什么,直接开启 stream 选项就能用。
不过原文没有说明是否所有语言模型都支持,也没有列出完整的模型清单。如果你用的模型不在上述名单里,可能需要去那个集合页面确认一下。这就像有些手机支持无线充电,有些还不支持,买之前最好查一下。
开发者如何为自己的模型添加流式支持?
如果你在 Replicate 上发布自己的语言模型,原文建议你让它支持流式输出,这样用户体验会更好。如果你是在现有模型上做微调(fine-tune),那很简单:微调后的模型会自动继承基础模型的流式能力,不需要额外写代码。
如果你是用 Cog 工具自己写模型,关键是要在生成 token 时用 yield 逐个产出,而不是等全部生成完再 return 最终结果。原文还提到可以用 ConcatenateIterator 来提示输出应该拼接成一个字符串。这就像你写日记时,可以写一句发一句,而不是憋完整篇才发出去。
这个功能适合谁用?
这个功能主要适合正在开发聊天应用、实时对话机器人或任何需要即时反馈的 AI 应用的开发者。如果你在做类似 ChatGPT 那样的界面,流式输出能让用户感觉模型在“思考”和“打字”,而不是干等半天没反应。对于终端工具爱好者,也可以用 cURL 直接在命令行里看模型输出。
但如果你只是偶尔调用 API 做批量处理,不需要实时看到中间结果,那用传统的轮询(polling)或 webhook 也完全可以。流式输出不是必须的,而是一种提升体验的选择。就像看直播和看录播,内容一样,但感受不同。
有什么限制和不确定的地方?
原文没有提到流式输出的定价是否和普通调用一样,也没有说明是否有并发连接数限制、单个流的最长持续时间、或者是否所有付费计划都能用。另外,原文没有列出所有支持流式的模型完整名单,只给了几个例子和一个集合链接。
还有一个细节:原文提到“streaming output is already supported by lots of language models”,但并没有说图像模型或其他类型模型是否支持。如果你要用流式输出,最好先确认你的目标模型在支持列表里。这就像去餐厅点菜,菜单上没写的菜,最好问一下服务员有没有。
怎么验证和使用?
如果你想亲自试试,可以按照原文的步骤:先用 Replicate 的 Node.js 客户端或 cURL 创建一个带 stream: true 的预测,拿到 stream URL 后,用 EventSource 或 cURL 连接上去,就能看到逐条输出的消息。原文还提供了 llama.replicate.dev 这个示例网站,以及 Vercel 的 AI playground 可以用来对比不同模型的流式效果。
对于想深入了解的开发者,原文推荐阅读 Replicate 的流式指南和 Node.js 客户端 API 文档。如果你要发布自己的模型,记得用 Cog 的 ConcatenateIterator 来让输出正确拼接。总之,这是一个面向开发者的功能更新,普通用户不会直接感知,但会间接享受到更流畅的聊天体验。
本文由 AIGCWHY 自动监测系统发现,经结构化处理后发布。重要决策请打开原文核验。