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

news2024/11/14 20:34:34

无穷尽的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.coloradmin.cn/o/1272557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

概念理论类-k8s :架构篇

转载:新手通俗易懂 k8s :架构篇 Kubernetes,读音是[kubə’netis],翻译成中文就是“库伯奈踢死”。当然了,也可以直接读它的简称:k8s。为什么把Kubernetes读作k8s,因为Kubernetes中间有8个字母…

代理模式 1、静态代理 2、动态代理 jdk自带动态代理 3、Cglib代理

文章目录 代理模式1、静态代理2、动态代理jdk自带动态代理 3、Cglib代理 来和大家聊聊代理模式 代理模式 代理模式:即通过代理对象访问目标对象,实现目标对象的方法。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操…

采购流程的简要概述

外部采购流程 一般来讲,企业的采购业务一般是对外采购活动,一个比较典型采购业务循环通常包括:需求提报、货源确定和供应商选择、采购订单处理、采购订单状态跟踪监控、到厂收货、发票校验、付款。 以下对几个节点进行详细的解释&#xff…

指针数组以及利用函数指针来实现简易计算器及typedef关键字(指针终篇)

文章目录 🚀前言🚀两段有趣的代码✈️typedef关键字 🚀指针数组🚀简易计算器的实现 🚀前言 基于阿辉前两篇博客指针的基础篇和进阶篇对于指针的了解,那么今天阿辉将为大家介绍C语言的指针剩下的部分&#…

算法通关村第十八关青铜挑战——透析回溯的模板

大家好,我是怒码少年小码。 回溯是最重要的算法思想之一,主要解决一些暴力枚举也搞不定的问题(组合、子集、分割、排列、棋盘等等)。性能并不高,但是哪些暴力枚举都无法ko的问题能解出来就可以了🤣。 这一…

ESP32-Web-Server编程- 通过 Highcharts 创建图表(Chart)实时显示设备信息

ESP32-Web-Server编程- 通过 Highcharts 创建图表(Chart)实时显示设备信息 概述 上节讲述了通过 Server-Sent Events(以下简称 SSE) 实现在网页实时更新 ESP32 Web 服务器的传感器数据,并通过表格显示传感器的数据。…

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-BiLSTM-Multihead-…

MySQL之JDBC

💕"我像离家的孤儿,回到了母亲的怀抱,恢复了青春。"💕 作者:Mylvzi 文章主要内容:MySQL之JDBC 一.什么是JDBC? JDBC编程就是通过Java 代码来操纵数据库 数据库编程, 需要数据库服务器提供一些API供程序…

C语言每日一题(42)删除链表的倒数第N个结点

力扣网 19 删除链表的倒数第N个结点 题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head …

Linux下查看目录大小

查看目录大小 Linux下查看当前目录大小,可用一下命令: du -h --max-depth1它会从下到大的显示文件的大小。

Python字符串大小写转换的函数及用法

Python字符串由内建的str类代表,那么str 类包含哪些方法呢?Python 非常方便,它甚至不需要用户查询文档,Python 是“自带文档”的。 这里需要读者简单掌握两个帮助函数: dir():列出指定类或模块包含的全部…

深入解析 Python 中 Parsel 的两种数据提取方式

更多资料获取 📚 个人网站:ipengtao.com 在网络爬虫的世界中,数据提取是至关重要的一环。Python 提供了许多强大的工具,其中之一就是 parsel 库,专门用于解析和提取 HTML 或 XML 数据。本篇博客将深入探讨 parsel 中两…

8. 队列

队列(queue)是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断加入队列的尾部,而位于队列头部的人逐个离开。 如下图所示,我们将队列的头部称为“队首”,尾部称为“队尾”&#xff…

聚硫醇固化剂Capure3-800含巯基-SH环氧固化剂TDS说明书

聚硫醇固化剂Capure3-800含巯基-SH环氧固化剂TDS说明书

【程序员的自我修养03】深入了解ELF文件格式

绪论 大家好,欢迎来到【程序员的自我修养】专栏。正如其专栏名,本专栏主要分享学习《程序员的自我修养——链接、装载与库》的知识点以及结合自己的工作经验以及思考。编译原理相关知识本身就比较有难度,我会尽自己最大的努力,争取…

Python 异常处理(try except)

文章目录 1 概述1.1 异常示例 2 异常处理2.1 捕获异常 try except2.2 抛出异常 raise 3 异常类型3.1 内置异常3.2 自定义异常 1 概述 1.1 异常示例 异常:程序执行中出现错误,若不处理,则程序终止 示例代码: v 6 / 0 # 除数不…

滴水逆向三期笔记与作业——02C语言——07 多维数组

OneNote防丢 多维数组 一、二维数组的初始化1.1 二维数组初始化1.2 给定部分值1.3 二维数组省略第二层的{}1.4 省略长度1.5 多维数组寻址1.6 作业 一、二维数组的初始化 1.1 二维数组初始化 代码1 int arr[3][4] { {1,2,3,4}, {5,6,7,8}, {9,7,6,5} }; 代码2 int arr[3*4…

科普:什么是合同生命周期管理?

在当前,企业面临自身转型升级与行业数字建设的挑战,急需一种系统化的解决方案,帮助企业在自身运作方面实现降本增效,为拓展业务获得发展提供助力,而合同生命周期管理在其中就扮演着十分重要的角色。 一、合同生命周期…

超详细!Opencv人脸识别!附源码!

一、新建环境 注意!!确定后需要关闭项目,重新打开,终端的环境才会变化!! 二、下载安装包(只需要3个即可) 1. 下载dlib包 pip install dlib-19.19.0-cp38-cp38-win_amd64.whl.whl …

数据结构学习笔记——二叉树的遍历和链式存储代码实现二叉树

目录 一、二叉树的遍历(一)二叉树的先序遍历(DLR)(二)二叉树的中序遍历(LDR)(三)二叉树的后序遍历(LRD)(四)二…