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

去年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和各种小程序

你可能感兴趣的:(人工智能,深度学习,嵌入式实时数据库)