我为OTT建立了基于ChatGPT的搜索引擎。
我是说,谁能抵制心跳加速电影或引人入胜的连续剧的刺激?如今有那么多内容可用。这就像一个永无止境的节目、电影、纪录片自助餐。实际上有太多了,以至于我们不得不开发智能系统来推荐我们的下一个视觉享受。因此,建议引擎的崛起是任何OTT应用程序不可缺少的组成部分,它们极其擅长预测我们的观影口味。?
但是,在我们的 OTT 应用程序中有一个未被赞颂的英雄,他被困在时间的泡沫中 - 我们亲爱的老朋友,强大的搜索栏。
寻找新鲜的标题或想看一部你最喜欢的演员的电影?这个流程就像一部老情景喜剧那样可预测:点击放大镜然后用手指说话。网页和移动平台可以让这个过程相对轻松,但是如果把你的触摸屏换成智能电视,情况就改变了。
突然间,我们被扔进了一个用遥控器进行数字跳房子游戏的世界,跳着从一个字母到另一个字母。最幸运的人可以在一些沮丧的瞬间之后逃离出来,但一个打错字或一个史诗般的搜索词很快就会把这个游戏变成一场磨难。
当我们最终停止打字时,如果我们很幸运,我们会在搜索结果中看到我们正在寻找的内容。如果不是,那就回到原点。
那高级搜索功能、内容过滤甚至只是想看一部2000年代的科幻电影或一部复古的90年代喜剧呢?对我而言,我通常会借助谷歌来找到我需要的内容,然后再返回我平台的选择。
未开发的OTT陪伴应用潜力一直引起我的好奇心。这些应用程序可以提供卓越的解决方案,在许多方面增强我们的流媒体体验。然而,令人惊讶的是,目前可用的这些应用程序并不多。
这让我开始思考:如果有一个陪伴应用程序,提供一个始终存在的文本框,我可以用自然语言输入任何想要的内容,那该多好啊?如果我的陪伴应用程序可以即时更新我的电视搜索结果,那又该如何呢?如果我们能利用像ChatGPT这样的强大AI模型来促进这种搜索,那该多好啊?
有了这个愿景的激励,我决定是时候进行一些实验了——如果您愿意的话,这是一个概念的证明。
现在,为了这个实验的目的,我没有创建一个伴侣应用程序来展示将搜索功能与ChatGPT集成。相反,我选择使用Web应用程序,提供相同的概念前提、可比较的挑战,但构建速度更快。
现在我们已经打好了基础,是时候决定这个增强搜索如何操作了。以下图片是那些了解的人所称的“序列图”,提供了这个概念内部工作的视觉概述:
为了这个概念的证明,牢记“节制急躁”的原则,我选择了一种实用的方法。我创建了一个极简的React应用程序,它代表了我的OTT平台,包括一个搜索栏。理想情况下,搜索功能应该存在于一个附属的应用程序中,但考虑到时间限制,它在同一页上工作得很好。
现在,女士们先生们,我向您展示我谦虚的React OTT平台(请不要嘲笑,这只是一个概念验证!)。
针对后端,我构建了一个 Node.js 应用程序,接收文本框中的文本,并通过 API 发送请求到 ChatGPT。我的“数据库”是一个适度但高度可扩展的 JSON 文件,其中包含 50 部电影标题,安全存储在文件系统中。如序列图所示,该过程大致如下:
- 用户使用自然语言将搜索查询输入到文本框中。
- 在按下回车键或者搜索按钮之后,会向Node.js服务器发起调用。
- 然后,该服务器向ChatGPT API提交一个精心编排、装满视频目录数据的提示。
- ChatGPT筛选内容,返回与搜索结果相对应的视频ID集合。
- Node.js应用程序根据这些ID过滤视频目录,并将结果传递回客户端应用程序。
- 客户端应用程序更新结果的新行。
- Ta-da ??,现在你已经有了你的搜索结果。
无可否认,有一些挑战需要解决。例如,ChatGPT API 不保留对话历史记录,有令牌限制,让 ChatGPT 提供一致的回答而不走神可能会很麻烦。起初,我考虑使用 Codex 模型,但最终选择了 gpt-3.5-turbo。
如何克服这些难题?由于API不维护任何上下文,并且存在令牌限制,我编写了一个小块系统。基本上,我加载完整的视频目录,将其打包成提示并将其分配到ChatGPT API中的块中。虽然本文不深入探讨编码方面,但对于技术精通者来说,这是一种实现过程的窥视:
..
// Split the movieCatalogString into chunks
const movieCatalogChunks = movieCatalogString.match(/.{1,2048}/g);
// Prepare the messages array
const messages = movieCatalogChunks.map((chunk, index) => {
return {
"role": "user",
"content": index === 0 ? `${prompt} ... ${query} ... ${chunk}` : chunk
};
});
....
这里是我所使用的提示
Act as a search engine. Search for '{user prompt}' in the video catalog provided. Your response will be an array of Ids in json format
[VIDEO CATALOGUE].
通过 API 获得的回报看起来像这样
[1,5,7,5,3,...]
这些是 ChatGPT 根据用户的查询所选定的 ID。经过一些试错后,系统开始(几乎)按预期工作。
以下是我测试过的一些搜索:
我可以和我的8岁女儿一起看的电影。
克里斯汀·贝尔、莱昂纳多·迪卡普里奥和基努·里维斯主演的电影。
阿甘正传(一个故意打错的拼写来展示ChatGPT可以忽略它们。谢谢ChatGPT)
电影2部戏剧片和3部科幻片
我很难过,我可以看什么?
我测试了许多,但你已经明白了。
如果您想观看屏幕录制,请查看这个视频。
当然,这只是概念的证明,但它展示了自然语言搜索的潜力。
对于真实应用,我将使用实际目录中的所有电影来训练模型。这并不是过于复杂的事情。例如,微软提供了Azure OpenAI服务和Azure OpenAI Studio,可以让你在更大的规模上实现类似的结果。
是的,有性能考虑、可伸缩性和很多其他因素,但结果是真正令人满意的。
再见不断的遥控器点击。
我相信AI将几乎融入每个行业,我们应该为我们的利益接受它。在本文中,我旨在展示一个可能会在搜索视频内容时产生重大影响的小型实现。
那么,你认为呢?你觉得它有益处吗?你想在你最喜欢的OTT应用中拥有这样的东西吗?
如果您喜欢本文,请考虑在Medium上关注我。