python创建智能问答机器人

微信和chatgpt

这个在另外一篇文章:微信接入chatgpt

背景

  1. 最近一直都在忙做文本机器人的事情,所以就很少发公众号文章了。
  2. 目前机器人的代码,已经全部发布在github上了。
  3. 做机器人的目的:一方面是为了锻炼自己的代码能力,一方面也是因为自己想做一些有趣的时候。
  4. 这个项目足够优雅,只需要python环境即可,就算是没有显卡也都行。而且即开即用,我也不喜欢安装太多的依赖包。

下面就是完整的介绍了。效果的话,也不介绍了,反正有点意思,这里放几个截图:

这里因为使用的是一个“怼人的知识库”导致返回的答案就很气人。
其实这里也可以换成别的知识库,都是可以的。都是通用的。

仓库地址:https://github.com/yuanzhoulvpi2017/questionAnswerSystem

介绍

本项目是在不借助数据库的情况下:

  1. 基于pandas、numpy、pytorch实现数据的curd的(替代数据库的)
  2. 基于transformers、sentence-transformers实现文本转向量的
  3. 基于fastapi对外暴露接口的
  4. 问答机器人。

目的

  1. 实现一个问答机器人(基于sbert来做)其实是想做搜索,其实我感觉nlp和搜索也都差不多,都是策略问题。
  2. 不依赖数据库,实现数据管理的crud。
  3. 希望依靠numpy、fastapi能做一个拥有redis功能的数据库(听起来很可笑,我自己也觉得肯定是不可能的,我就是想试一试,提高代码能力)。
  4. 在实现的过程中,我希望把整个nlp问答机器人的数据流都打通。数据流打通,至于用什么数据库之类的,都是小事情。

实现的功能有什么

  1. crud中的R功能,也就是Read。或者干脆就叫搜索吧。起码要有搜索功能
  2. crud中的c功能,也就是Create。对应到一个完整的问答机器人,也就是:创建知识条目
  3. crud中的u功能,也就是update。对应到这个项目里面,也就是:更新知识条目的答案更新知识条目中相似问法
  4. crud中的d功能,也就是delete。对应到这个项目里面,也就是: 删除知识条目删除相似问法
  5. 其实还有转换功能,实现文本转向量功能。
  6. 还有计算相似度功能,主要是基于cos距离
  7. 还有分组统计的功能,主要是使用mrr来计算。

缺点

  1. 没有考虑并发,但其实一般1秒处理100条,基本上不是问题。
  2. 应该有很多缺点,大家可以提issue给我。

数据结构

一个完整的知识库中的条目,起码要有这三个部分:

  1. 标题:这个知识库的标题是什么。一般来说都是文本。
  2. 答案:这个是要返回的结果,或者叫答案。一般是文本,有的是接口,我这里不管了,都是文本。
  3. 相似问法:相似问法是对标题的补充,尽可能覆盖用户会提问的语句内容。
  4. 其实还有别的,比如条目类型、创建时间等,我这里有的就省略了。

我这里采用标题和相似问法剥离的处理方式。把他们分为两个表:

程序上的中间表

1. 标题表(pandas保存)

维度有:

  1. 标题:title
  2. 答案:answer
  3. 创建时间:create_time
  4. 修改时间:modify_time
  5. rep_id:和相似问法表关联
  6. 状态:status_question: 0代表关闭,1代表激活

2. 相似问法表(pandas保存)

维度有:

  1. rep_id:和标题表问法关联
  2. 相似问法:similarity
  3. 创建时间:create_time
  4. 修改时间:modify_time
  5. 状态: status_similar: 0代表关闭,1代表激活
  6. 索引:sim_index

还有两个表:

  1. 相似问法的向量:对相似问法做encoding,保存为numpy向量
  2. 标题的向量:对标题做encoding,保存为numpy向量

硬件要求。

这个对硬件要求不高。唯一要求就是,起码内存要16G以上。

常规版本:

我的MacBook pro 16寸的(内存16G,无cuda)

高配版本:

  1. cpu:12700
  2. 内存:64G
  3. 显卡:nvidia-3090
  4. ubuntu-22.04

运行

step0 安装包

按照requirements.txt的指导,安装对应的包。基本上都是nlp开发者经常用到的包,不需要特别注意

step1 开启向量引擎后台

backend_new.py是整个问答机器人的核心。这个能运行即可。需要等待一段时间,有加载模型数据和初始化知识库的步骤。

细节部分:

  1. 对外端口是8010。想要切换的话,直接在代码最后面修改即可。用的就是fastapi,熟悉fastapi的用户,随便怎么改都可以。
  2. 等全部的都加载完全之后,在浏览器里面打开:http://0.0.0.0:8010/docs 就能看到所以的暴露接口了。

step2 如何查询

如何把这个向量搜索引擎用起来呢?可以看看front_search.ipynb文件,这里会教你如何查询一个文本,并且提取结果。

step3 如何管理知识库

在文件front_admin.ipynb里面,你可以看到这些内容:

  1. 如何创建知识条目
  2. 如何删除条目
  3. 如何删除相似问法
  4. 如何更新答案
  5. 如何增加相似问法

知识库如何导出

因为你的一切修改,都是在内存里面,如果你的程序结束,那么所有的内容都会消失。比如你维护的知识条目。这个也考虑到了。在http://0.0.0.0:8010/docs
你可以看到一个叫saved2f接口,运行一下,就会把你的条目放在文件夹QADIR里面,一个是相似问法的表,一个是标题的表。

如何做微信机器人

  1. 目前还在开发微信机器人,就是类似于在群里面聊天的,等后面整理好代码,都会分享出来~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63086.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器人 Ameca「苏醒」瞬间逼真到令人恐惧,网友纷纷惊叹……

整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近日,国内外网友都被一段机器人「苏醒」的视频惊讶到。 视频开始时,机器人似乎已经睡着,眼睛闭着,头部略微向下倾斜。随着肩膀的伸展,机器…

近乎于“神”的任正非

https://www.toutiao.com/a6709410685605921284/ 大家好! 我是曙光!今天和大家谈一谈任正非。 孙子曰:“能因敌变化而取胜者,谓之神。”任正非及华为在这次中美贸易“大事件”中的种种超凡表现让人顶礼膜拜发自心底里尊称他为“战…

任正非谈鸿蒙系统有一大失误,任正非谈鸿蒙系统:能完美适应物联网 性能超安卓...

对于华为的鸿蒙系统,任正非近段时间接受采访时也是谈到了它,不过这款自主操作系统跟之前预想的并不太一样。任正非表示,赛博体育官网鸿蒙系统的产生,本身并不是为了手机用,而是为了做赛博体育官网 物联网 来用的&#…

任正非,马云,马化腾:真正顶级厉害的人,都有一个共同特点

点击“技术领导力”关注∆ 每天早上8:30推送 “比尔盖茨说微软离死亡只有180天,但是华为明天就会死亡”。面对未来遥不可及同时看不见、摸不着的危机,任正非总是如屡薄冰。 华为、腾讯、阿里这几家堪称伟大的中国企业,都是从一次次危机中淬炼…

任正非:5G 背后有个不谈恋爱的小伙子

本文经授权转自公众号:程序人生(ID:coder_life) 整理 | 伍杏玲 出品 | 程序人生(ID:coder_life) 22日,任正非在接受访问时首次“大爆料”:5G的快速发展背后,原…

从马云和任正非看创业的试错过程

最近中信出版社出版了一本书新书《管理政策》,是黄卫伟写的,黄卫伟是中国人民大学商学院教授,近十年担任华为、TCL 的高级管理顾问。 我从这本书当中摘选了一部分内容,关于容易生存和有发展前途, 创业者该怎么选&#…

技术进步需要更单纯的思考方式!

前几天看了一个节目,讨论的是机械化程度越高越先进吗?这个节目质量还是不错的,我几乎每期都看,每次都会有一些各领域的领军人物登台。但是,这一期的话题多少让我有些不敢苟同。 当然我也理解节目提出的前提&#xff0…

AI志愿填报软件靠不靠谱?

原文地址 今年高考经历了疫情的一阵折腾延迟了整整一个月时间,在大数据的推送下高考热搜词汇频频出现在观众的视线中,一时之间成为焦点。经历了乘风破浪的高考后,风波已经告一段落,分数也陆陆续续出来,接下来今年的应…

ChatGPT闭包解答

怎么理解javaScript闭包 JavaScript 闭包是一种特殊的对象,它包含了函数及其相关作用域中的变量。它允许函数访问并保存其外部作用域中的变量,即使该函数已经离开了其作用域。 闭包的一个常见应用场景是封装私有变量。例如,在一个对象的方法内…

2020年最热门化妆品、护肤品一览表

文章目录 2020年最热门化妆品、护肤品一览表下载 Excel 2020年最热门化妆品、护肤品一览表 下载 Excel 点击开始下载

敏涵国际品牌:定义高端美妆新力量

What should I do to take care of my skin?Whats the brand of your eye shadow?What kind of lotion do you think I should buy?Sitting in front of the computer screen all day, my skin looks terrible.You should know what type of skin you have, normal, oil or …

国货美妆出海

美妆新势力出海告捷,成绩亮眼。2021年3月,花西子首次入驻海外电商平台,首日便登上销售榜Top3。2021年5月底,完美日记已拿下Shopee平台东南亚多地区美妆销量榜首。 日前,以营销著称的国货美妆新品牌纷纷出海。以完美日记…

小红书报告:2023美妆个护白皮书解读

导语 面对风云变幻的市场,消费行业始终是增长的重要引擎之一,其中美妆个护行业在过去六年里(2016-2022年)仍保持高增速与消费潜力 。 新的一年,市场呈现什么新变化,品牌又有哪些新动作?本期为…

护肤品研究

昨晚突然意识到一个问题,就是每天的护肤步骤到底有没有用,花费了很多时间和金钱,对皮肤的作用到底有没有呢?于是今天通过一天的文献搜集,初步得到结论,护肤品是有用的,美白和抗衰的精华也是有用…

雅诗兰黛集团在中国投资再升级,两大全球科研中心正式揭牌

美通社消息:雅诗兰黛集团中国首届创新日在雅诗兰黛中国创新研发中心正式启幕,"全球前沿科技研究中心"和"男士卓效护肤研究中心"揭牌。两大全球科研中心将聚焦中国消费者需求,放眼全球市场,以期实现创新领域的…

2021年全球和中国美妆个护现状分析,高端化趋势明显,国产品牌亟待发展「图」

一、全球美妆个护现状 就全球美妆个护市场而言,全球美妆个护市场规模在2015-2020年间逐年增加,在2017年开始美妆个护市场规模增速开始下降。2020年全球美妆个护市场规模为5076亿美元,同比2019年增长1.9%。预计随着男士美妆渗透率持续加深&am…

从某爆火的护肤品牌看华为云大数据BI的作用

如今,在大数据时代下,BI商业智能已不是什么新鲜的词汇与概念,甚至在我们不知不觉当中大数据BI已融入各行各业当中,为各企业提供一站式BI解决方案,帮助企业实现自身的数字化转型与跨越式发展。 那么华为云大数据BI是如…

常见化妆品品牌分类

一、欧莱雅(法国)化妆品集团公司 欧莱雅集团是法国的化妆品公司化妆品、染发用具、护肤品、防晒用品、彩妆、淡香水和香水、皮肤病研究、制药、高档消费品。 旗下品牌有: 子品牌名称说明标志赫莲娜 Helena Rubinstein(顶级&…

GPT ChatGPT 的区别是什么?

GPT(Generative Pre-trained Transformer)是OpenAI开发的一种基于Transformer模型的语言生成模型。它通过在大规模的文本数据上进行预训练,可以生成高质量的文本输出。而ChatGPT则是基于Transformer模型构建的一种针对对话生成的系统。 它们两…

科大讯飞webAPI文字转语音

可能会遇到的坑 原文链接 自行了解 js webWorker线程 我的目录结构 TTS.js代码 // 科大讯飞 文字->语音 import {downloadPCM, downloadWAV} from /common/download.js import CryptoJS from crypto-js import { Base64 } from js-base64 var transWorker new Worker(../…