基于OpenAi通用特定领域的智能语音小助手
无穷尽的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
成为一名优秀的程序员!
基于OpenAi通用特定领域的智能语音小助手的更多相关文章
- 基于百度通用翻译API的一个翻译小工具
前几天写了一个简单的翻译小工具,是基于有道翻译的,不过那个翻译接口有访问限制,超过一定次数后会提示访问过于频繁,偶然发现百度翻译API如果月翻译字符少于200万是不收取费用的,所以就注册了一个百度开发 ...
- 基于 Serverless +企业微信打造 nCoV 疫情监控小助手
最近的一些疫情信息很让人揪心,为了方便大家掌握疫情信息,在空闲之余做了一个关于 nCoV 的疫情监控小助手.主要的功能是通过企业微信的 WebHook 来推送疫情信息.这里将使用 Serverless ...
- 基于特定领域国土GIS应用框架设计及应用
基于特定领域国土GIS应用框架 设计及应用 何仕国 2012年8月16日 摘要: 本文首先讲述了什么是框架和特定领域框架,以及与国土GIS 这个特定领 ...
- 用Java开发的【智能语音开发板MEGA ESP32AI】
有点激动 ~ ~ ~ 新鲜出炉,用视频看看效果哦 我们新研发出世的语音开发板MEGA ESP32AI,来看看吧,有点腻害哦!!!先演示下功能语音控制开关等.播报天气 戳下面链接看视频哦? MEGA E ...
- DSSA特定领域软件体系结构
一.何为DSSA 特定领域软件架构(Domain Specific Software Architecture,DSSA)是一种有效实现特定领域软件重用的手段.简单地说,DSSA就是在一个特定应用领域 ...
- 基于STM32+华为云IOT设计智能称重系统
摘要:选择部署多个重量传感器和必要的算法.通过WiFi 通信模块.GPS定位模块,采集车辆称重数据一地理位置信息,并通过网络发送至云平台,设计图形化UI界面展示称重.地图位置等重要信息,实现对称重系统 ...
- 转:IT巨头纷纷“卡位” 智能语音成人机交互入口必争之地
http://www.cs.com.cn/xwzx/hwxx/201707/t20170712_5368595.html 随着物联网的迅速发展,作为重要接口的智能语音技术已成为国内外IT巨头的必争之地 ...
- 基于事件驱动的DDD领域驱动设计框架分享(附源代码)
原文:基于事件驱动的DDD领域驱动设计框架分享(附源代码) 补充:现在再回过头来看这篇文章,感觉当初自己偏激了,呵呵.不过没有以前的我,怎么会有现在的我和现在的enode框架呢?发现自己进步了真好! ...
- 基于OpenAI的代码编辑器,有点酷有点强!
最近随着OpenAI的一系列大动作,把软件领域搅的天翻地覆.各行各业各领域,都出现了大量新产品. 开发工具领域首当其冲,各种新工具层出不穷,今天TJ就给大家推荐一个全新的开发工具:Cursor 从官网 ...
- 基于Labelstudio的UIE半监督智能标注方案(本地版)
基于Labelstudio的UIE半监督智能标注方案(本地版) 更多技术细节参考上一篇项目,本篇主要侧重本地端链路走通教学,提速提效: 基于Labelstudio的UIE半监督深度学习的智能标注方案( ...
随机推荐
- 如何用 ModelScope 实现 “AI 换脸” 视频
前言 当下,视频内容火爆,带有争议性或反差大的换脸视频总能吸引人视线.虽然 AI 换脸在市面上已经流行了许久,相关制作工具或移动应用也是数不胜数.但是多数制作工具多数情况下不是会员就是收费,而且替换模 ...
- 图解算法,原理逐步揭开「GitHub 热点速览」
想必每个面过大厂的小伙伴都被考过算法,那么有没有更快了解算法的方式呢?这是一个老项目,hello-algo 用图解的方式让你了解运行原理.此外,SQL 闯关自学项目也是一个让你能好好掌握 SQL 技术 ...
- [nginx]防范空主机头
空主机头防范主要是防止别人恶意将域名解析到服务器IP上. 配置示例 方式一,增加vhost # http的空主机头防范 server { listen 80 default; server_name ...
- [golang]简单的文件上传下载
前言 某次在客户内网传输数据的时候,防火墙拦截了SSH的数据包,导致没法使用scp命令传输文件,tcp协议和http协议也只放开了指定端口,因此想了个用http传输的"曲线救国"方 ...
- [prometheus]基于consul的服务发现
前言 prometheus默认使用静态配置文件监控服务,每次添加服务都要重载,比较麻烦.好在官方提供多种动态服务发现的方法,常用的一般有基于文件服务发现.基于consul服务发现和基于dns服务发现, ...
- __wakeup()魔术方法绕过(CVE-2016-7124)
__wakeup()魔术方法绕过(CVE-2016-7124) 漏洞简介 在php反序列化数据过程中,如果类中存在__wakeup方法,调用 unserilize() 方法前则先调用__wakeup方 ...
- 震惊!CSS 也能实现碰撞检测?
本文,我们将一起学习,使用纯 CSS,实现如下所示的动画效果: 上面的动画效果,非常有意思,核心有两点: 小球随机做 X.Y 方向的直线运动,并且能够实现碰撞到边界的时候,实现反弹效果 小球在碰撞边界 ...
- Python colorama 设置控制台、命令行输出彩色文字
为了方便调试代码,经常会向stdout中输出一些日志,但是大量日志,有时不好定位问题. 使用终端打印特定颜色字符串,可以突出显示关键性的信息,帮助用户更好地识别和理解输出内容. https://pyp ...
- jenkin部署(docker+gitlab)
第一部分 安装部署 1.1 gitlab安装部署 最小配置 内存至少4g,系统内核至少在3.10以上 uname -r 可查看系统内核版本 默认docker已经安装 1.安装gitlab 127机器 ...
- PLC通过Modbus转Profinet网关与合康变频器Modbus通讯案例
PLC通过Modbus转Profinet网关(XD-MDPN100)与合康变频器Modbus通讯,实现了两个设备之间的数据交互.Profinet是一种基于以太网的实时工控网络协议,而Modbus是一种 ...