Openai通用特定领域的智能语音小助手

news/2024/5/20 9:12:11 标签: 语音识别, 人工智能, openai, gpt

无穷尽的Q&A

钉钉...钉钉... 双双同学刚到工位,报销答疑群的消息就万马纷沓而来。她只能咧嘴无奈的摇摇头。水都还没有喝一口就开始“人工智能”的去回复。原本很阳光心情开始蒙上一层薄薄阴影。在这无休无止的Q&A中,就算你对工作有磐石一般强硬,有芦苇一般坚韧... 也经不住如此水滴石穿般消磨。工作激情便如磨刀之石,不见其消,日有所损。

然则,不只双双有这样的困境,人事的同学也是每天为各种简单的咨询扰得不胜其烦,牢骚满腹;还有负责合同用章的coco同学同样不堪其扰... 更让人苦恼是无人值班的周末,问的同事在焦急的等待,而支持的同事可能无法及时响应...

“母婴护理”做为公司的核心业务,虽然每个护士同学上岗前都有过专业的训练,但是在实践过程中难免遇到各类问题,这时她们只有去问有经验的护士或者护士长...

所有种种问题,最后都是由一名“专家”完成了解答。这个“专家”在哪里,这成了我一直思考的问题。显然,我还不至于去搞一个真正的“专家系统”。

OpenAi Assistant 横空出世

面对上面的困境,我们也有尝试使用 openai 的 emebedding能力,但是效果不是太好,并且每次问答要花费50美分;也用闻达独立搭建过,就是不太稳定(可能是没部署好吧,老是要重启)。一直在想,为啥如雨后春笋般出现的各路大模型,没有一个可以非常方便的让我们导入领域知识呢。一筹莫展之时,OpenAi 11月7号的发布会给我带来了希望。其中新增的Assistant就如立于高山之巅远看东方已见光芒四射喷薄欲出的一轮朝日。发布会只有45分之短,但是其涵盖的内容却不短。鉴于英文听力能力欠缺,找了一个“AI同声中文版”发布会视频,有需要的可以点击「链接」观看,一定不虚此点。

一个简单的通用方案&问题

OpenAi 的assistant 已经具备了根据提供的领域知识检索(retrieve)特定问题的答案了。接下来就是接入企微自建应用,考虑到语音便利性,这次增加了对语音的支持,通过腾讯云asr接口识别语音,再通过文字调用Assistant。大致组件如下图。其中问答有个特别的地方就是在创建一个 “Run”后,需要轮询检查其是否是终态,如果是 “completed”再去检索消息,获取最终的回复。

实现一个Assistant的流程如下,为了偷懒,我就直接在平台创建了assistant及上传文件。

1.Create an Assistant in the API by defining its custom instructions and picking a model. If helpful, enable tools like Code Interpreter, Retrieval, and Function calling.

2.Create a Thread when a user starts a conversation.

3.Add Messages to the Thread as the user ask questions.

4.Run the Assistant on the Thread to trigger responses. This automatically calls the relevant tools.

有了想法,趁着大好的周末,早上带着两娃去学校踢球,贪婪的享受着冬日阳光,消耗完体力娃子们,吃过午饭便早早的开始了午睡。趁着着孩子们睡觉的光景,我又有大把的时间开始打代码实现想法了。有时真感觉自己不再年轻了,遛个娃,写个代码就觉得可以受用一个周末。

由于之前的一些准备工作,不到两小时demo就基本完成了。没有压力之下的代码,几乎不用调试就跑起来了,原来没有压力也可以动力十足,也许这就是专注的力量。基本用起来是没啥问题了,唯一的问题就是响应时间几乎在30秒左右。对于人事一类的问答尚可,一些需要快速响应的场景,这个时间稍微慢了些。

近些时间尝试过好几种方式,这里也简单做个对比,鉴于能力,这个对比不一定准确,仅供参考。


方式

响应速度

单次花费

稳定性

整体

Fine-tuning

20s

训练成本高,难度大。效果不好。

Embeddings

20s

高(50美分)

单次成本高,回答不全面

Assistant

30+s

低(数美分)

回答全面,响应速度稍差

闻达

20s

自备服务器,稳定性不太好。

未来的思考

目前是直接嫁接在企业微信的自建应用之上(钉钉也是同理),可以通过不同应用对应不同的Assistant,解决不同场景的答疑。任何企业,只要有现成资源的情况下,任何问答场景都可以快速应用。

如果要移植到微信小程序或者app,就可以使用同声传译插件快速语音识别,并可通过tts 文字转语音,提升应用的便利性。

希望语音小助手的上架,可以为双双同学,为coco同学,为那些每天还埋没在无休无止的问答中的同事们带来些许支持,扫除阴影,还他们一个阳光的心情。

微信:jijunjian

成为一名优秀的程序员!


http://www.niftyadmin.cn/n/5228343.html

相关文章

深度学习:什么是知识蒸馏(Knowledge Distillation)

1 概况 1.1 定义 知识蒸馏(Knowledge Distillation)是一种深度学习技术,旨在将一个复杂模型(通常称为“教师模型”)的知识转移到一个更简单、更小的模型(称为“学生模型”)中。这一技术由Hint…

浅谈java中的锁

根据标准锁的分类 偏向锁 / 轻量级锁 / 重量级锁;可重入锁 / 非可重入锁;共享锁 / 独占锁;公平锁 / 非公平锁;悲观锁 / 乐观锁;自旋锁 / 非自旋锁;可中断锁 / 不可中断锁。 偏向锁 / 轻量级锁 / 重量级锁…

Luminar Neo1.16.0(ai智能图像处理)

Luminar Neo是一款ai智能图像编辑软件,它专注于使用人工智能技术来实现对照片的快速、高效和创造性的编辑。 具体来说,Luminar Neo可以自动移除景观或旅行照片中令人分心的元素,例如电话线、电线杆等,从而增强照片的整体质量。同…

【刷题笔记】H指数||数组||二分查找的变体

H指数 最新编辑于2023.11.29 之前的代码写得有点抽象,实在抱歉,好像我自己都不理解当时自己怎么写的,现在重新更新了代码,保证好理解。 1 题目描述 https://leetcode.cn/problems/h-index/ 给你一个整数数组 citations &#xf…

开闭原则:提高扩展性的小技巧

什么是开闭原则 开闭原则的英文全称是 Open Closed Principle,简写为 OCP。它的英文描述是: software entities (modules, classes, functions, etc.) should be open for extension , but closed for modification。我们把它翻译成中文就是:软件实体(模块、类、方…

开源运维监控系统-Nightingale(夜莺)应用实践(未完)

一、前言 某业务系统因OS改造,原先的Zabbix监控系统推倒后未重建,本来计划用外部企业内其他监控系统接入,后又通知需要自建才能对接,考虑之前zabbix的一些不便,本次计划采用一个类Prometheus的监控系统,镜调研后发现Nightingale兼容Prometheus,又有一些其他功能增强,又…

.Net 字符集与编解码

0 .NET 字符集编解码 .Net 内部使用的字符集是Unicode,如果需要编码为其他诸如GBK、UTF8编码,可以通过Encoding 类来实现。 using System.Text;void PrintBytes(byte[] bytes) {foreach (var b in bytes){Console.Write("{0:X} ", b);}Conso…

CentOS一键安装docker脚本

CentOS安装Docker一键脚本 在CentOS上安装Docker是许多项目中常见的任务之一。为了简化这个过程,你可以使用下面的一键脚本。 #!/bin/bash# 卸载旧版本(如果有) sudo yum remove -y docker \docker-client \docker-client-latest \docker-c…