随笔:使用OpenAI的Embeddings API和Complation API实现客服问答

2023-11-08

去年11月openAI推出了Chat GPT 掀了好大一股浪。 前段时间看了一下openAI的API看不看如何通过openAI 的语言处理模型来处理一下客服回复。下面做个笔记记录一下。

为什么研究?

Open AI 现有的模型没有我们特定场景下的知识,以卷纸电商为例,比如卷纸分为200g和140g的, 价格也不一样,这些信息openAI也不会在他们的模型中去训练, 所以我们要想办法让模型去学习这些跟我们自己业务场景相关的知识。

如何实现?

经过仔细阅读openai的文档,目前整理了两种方式来实现:


方式一: 将问答知识点以csv文件方式保存在本地,然后将转化为嵌入向量集之后获取近似的sections(跟问题的答案近似的回复)来组装prompt,然后通过open ai的completions api来实现。

参考链接:openai-cookbook/Question_answering_using_embeddings.ipynb at main · openai/openai-cookbook · GitHub

本文也只是记录链接中的实现思路,并无实际代码,代码直接参考链接中的文档。用意是帮我记录实现过程:

1. 使用pandas读取csv文件

2. 使用openAI embedding为读取的csv文件创建嵌入向量文件 -document_embeddings

3. 根据问题从嵌入向量文件中找出一批相似回答的向量集(用numpy.dot来代替cosine余弦相似值)

4. 将找出的这批相似回答的向量集组装到一个prompt中

5. 将组装好的prompt 和嵌入向量文件,通过openAI Completions API的自然语言的处理结果返回

6. 将completion返回的回答,通过websocket通信返回给前端,比如使用goeasy websocket 通信。 快速入门 - 几行代码搞定websocket实时通讯 | GoEasy文档

或者结合GoEasy在线客服接口来实现: GoEasy在线客服demoWebsoket和IM Demo体验和示例源码下载 - GoEasy; 源码下载:在线客服IM聊天(Uniapp 小程序 Vue React Taro H5): GoEasy IM在线客服, 为Web前端开发者打造,支持H5、Uniapp和各种小程序

方式二:采用向量数据库来保存转换之后的向量值,然后从数据库查询通过问题来查询近似向量的值,然后组装prompt,通过open ai的completions api来实现。

参考链接: Generative QA with OpenAI 

方式二用于数据量比较大的场景,因为openai的api是根据tokens来收费的,所以使用向量数据库可以优化搜索,只将搜索后的结果加入到completion api中可以大大降低成本。

1.安装向量数据库,比如, pinecone (使用的是方式一中openai的github官网项目中推荐的第一个数据库)

2. 按照自定义的格式准备数据集(json对象)。例如将客服一次会话中聊天内容作为一次数据集

3. 将准备的数据集中的主要内容,分别存入向量数据库中

        3.1. 初始化pinecone连接

        3.2. 在pinecone中创建索引

        3.3.循环准备的数据集,将有意义的字段(比如问答内容)向量化,可以多个数据集一次性导入(比如一个会话中的咨询内容可以更新插入为一个数据)。

        3.4. 向数据库中插入向量数据本身和原数据。向量数据用于做向量查询,原数据将用于后面调用openai 的completion api的时候准备promt。

        3.5. 从向量数据库中查询近似数据,得到匹配的内容(原数据)(得到的近似数据将封装成为prompt内容便于接下来调用completion api)

        3.6. 调用open ai 的complation api,根据筛选之后的内容和ada-002模型分析返回最后的回复

 4. 将completion返回的回答,通过websocket通信返回给前端,比如使用goeasy websocket 通信。 快速入门 - 几行代码搞定websocket实时通讯 | GoEasy文档

或者结合GoEasy在线客服接口来实现: GoEasy在线客服demoWebsoket和IM Demo体验和示例源码下载 - GoEasy; 源码下载:在线客服IM聊天(Uniapp 小程序 Vue React Taro H5): GoEasy IM在线客服, 为Web前端开发者打造,支持H5、Uniapp和各种小程序

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随笔:使用OpenAI的Embeddings API和Complation API实现客服问答 的相关文章

随机推荐

  • 图像搜索引擎1

    图像搜索引擎1 使用Python颜色直方图在数据集中搜索视觉上相似的图像 这篇博客将介绍如何从头到尾创建图像搜索引擎 第一步是选择一个图像描述符 使用3D RGB直方图来表征图像的颜色 然后通过提取特征向量 即直方图 使用描述符对数据集中的
  • MATLAB学习笔记_Day10_摘要、问题假设、灵敏度分析

    学习视频 零基础教程 老哥 数学建模算法 编程 写作和获奖指南全流程培训 文章目录 1 摘要的重要性 摘要分析 2 假设的重要性 举例 3 灵敏度分析 灵敏度分析及适用参数类型 举例分析 敏感性分析总结 1 摘要的重要性 摘要分析 2 假设
  • android 调用另一个activity 简单做法

    懒了一下午 终于用不到一个小时的时间 实现了一个activity调用另一个activity 的宏远 哈哈哈哈 本做法纯属我这菜鸟的入门 本小教程不提供新建activity 的办法哈 百度一大把的 目的 我想在主窗口中调用另一个activit
  • PowerDesigner 反向工程,生成ER图

    建立好一个完整的oracle数据库之后 昨天老师让我用PL SQL Developer导出表结构的PDM文件 显示该数据库的ER图 仔细研究了一个晚上 决定放弃使用PL SQL Developer生成Oracle的ER图 捣弄了好久都没找到
  • yaml 数组_【大强哥-k8s从入门到放弃04】Yaml语法解析

    依然小福利 Python 零基础入门 2020感谢走进我的生命 Python 已更新至206集 哔哩哔哩 干杯 bilibili www bilibili com 一 K8S名称空间 嗯 名称空间是个小插曲 yaml在下面 1 Yaml文件
  • OpenCV图像腐蚀膨胀算法的Python模拟实现

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 引言 在 OpenCV Python图像矩阵不扩充边界腐蚀膨胀函数处理算法探究 https blog csdn net LaoYuanPyth
  • c++模板之萃取

    假如 我们要设计一个 Copy的模板函数 我们为了提高效率采用memcpy 可以这样写 template
  • linux_常用命令

    一 日常使用命令 常用快捷键命令 开关机命令 1 shutdown h now 立刻进行关机 2 shutdown r now 现在重新启动计算机 3 reboot 现在重新启动计算机 4 su 切换用户 passwd 修改用户密码 5 l
  • C++ template高级

    1 Template 高级属性 1 1 可变参数 CTemplatetest cpp 定义控制台应用程序的入口点 include stdafx h include
  • 调整计算机硬盘大小,固态硬盘分区如何合并 自己调整磁盘大小真的很实用

    1 首先在桌面找到 计算机 右键单击 在快捷菜单栏中选择 管理 弹出计算机管理窗口 2 在计算机管理窗口中选择 储存 磁盘管理 在右边就会显示你的分区情况了 3 我们选择一个空间比较大的盘符进行分割 举个例子 我们盘有40G是空余 我们要分
  • 使用 LangChain 和 DeepInfra 构建用于支持客户的聊天机器人

    您可能在日常在线互动中遇到过聊天机器人 但您是否考虑过为这些数字助手提供支持的技术 聊天机器人 特别是在客户支持领域 已成为现代企业的重要组成部分 可以在提高效率的同时增强客户服务 今天 我们将深入探讨LangChain和DeepInfra
  • 网络操作相关命令

    netstat r 显示路由表 I i 显示网络接口信息 s 收发包统计信息 v 显示详细信息 包括unix socket 连接状态和路径 e 还能显示user p 显示使用它的进程 l listening a 所有的 n 不解析域名 用户
  • SaltStack_00_基本操作

    文章目录 0x00 背景 0x01 基础环境安装 0x02 执行命令 0x03 数据系统Grains Pillar 0x00 背景 OS CentOS 7 SaltStack 2015 5 10 Lithium 0x01 基础环境安装 按照
  • 【Qt教程】3.1 - Qt5 event事件、Label控件的鼠标事件捕获

    1 event简介 事件 event 是由系统或者Qt本身在不同的时刻发出的 当用户按下鼠标 敲下键盘 或者是窗口需要重新绘制的时候 都会发出一个相应的事件 一些事件在对用户操作做出响应时发出 如键盘事件等 另一些事件则是由系统自动发出 如
  • Vmware vSphere 5.0系列教程之六 虚拟机及主机配置文件的创建和模板部署

    转载至 http andygao blog 51cto com 323260 838572 我们安装VMware vSphere 的目的就是在一台物理ESX主机上安装很多很多的虚拟机 我们可以通过VMware vSphere Client直
  • python(pandas + numpy)数据分析的基础操作

    文章目录 数据 NaN 值排查 统计 排序 基本统计方法 四种基本统计方法 分组 data groupby 聚合 data agg apply transform 透视图 Pandas 数据预处理 Pandas 其他函数应用 数据清洗 数据
  • 华为产品测评官-开发者之声-CodeArts体验感想

    目录 个人感想 CodeArts功能分析 总结 个人感想 2023华为产品测评官 开发者之声 活动的奖品相当诱人 有筋膜枪 鼠标 无人机等等 我承认我一开始参加这个活动是冲着奖品去的 但是真正去把这些产品都体验了一遍之后 我发现 每个产品都
  • C++实现链表合并

    include
  • 2023华为OD机试python【代表团坐车】

    前言 本答案使用python解答 如果需要Java版本题解 请参考 Java版本 题目 现在要组织一场活动 有多个代表团需要参加活动 已知多个代表团同时到达 但是接待处可用的客车只有一辆 你现在需要计算的是 可以坐满车的接待方案 并且输出有
  • 随笔:使用OpenAI的Embeddings API和Complation API实现客服问答

    去年11月openAI推出了Chat GPT 掀了好大一股浪 前段时间看了一下openAI的API看不看如何通过openAI 的语言处理模型来处理一下客服回复 下面做个笔记记录一下 为什么研究 Open AI 现有的模型没有我们特定场景下的