本文档明确“aiWithWechat”的开发需求,详细阐述了本系统的外部接口需求、系统功能、性能需求、技术需求以及软件运行环境等。编写此需求规格说明书是为了使使用人员和开发人员对所开发的平台有一致的理解。通过阅读此文档开发人员可以了解当前业务的具体需求和要实现的主要功能,使用人员通过阅读此文档可以确认开发人员对其业务需求的认识是否正确并对系统要实现功能有初步的了解。
本软件产品名称为“aiWithWechat”管理平台。
1) 硬件运行环境
PC服务器或云服务器,根据扩展需要,可部署在1至n台服务器上。
2) 操作环境
Windows 7/8/8.1/10以上操作系统(支持32位和64位),
浏览器(搜狗浏览器,FireFox,Chrome,IE 10以上版本)。
3) 软件环境
x64位的JDK 8或OpenJDK、Python 3.9、科学上网工具、服务器端操作系统可使用linux内核操作系统或Windows(建议使用CentOS 7以上版本)、客户端开发采用浏览器端技术进行开发。
4) 网络环境
局域网或广域网环境中。
5) 国际化
无国际化要求,软件界面及日志信息使用中文进行展示。
1) B/S:Browser/Server,浏览器/服务器模式
2) DBMS:DataBase Management System,数据库管理系统
3) IP:Internet Protocol,Internet协议
4) TCP:Transimission Control Protocol,传输控制协议
5) SSL:Secure Sockets Layer 安全套接字协议
6) AI: Artificial Intelligence 人工智能
7) ChatGPT: Chat Generative Pre-trained 聊天生成预训练转换器
8) PGVector: 用于在 PostgreSQL 数据库中进行向量相似度计算的扩展
aiWithWechat可以帮助企业或个人制作微信智能助手。在公司内部或个人电脑上部署一套aiWithWechat,可以成为一个智能助手,微信中添加该机器人,可以按照指定的问题给出答案,同时也能够在发现问题不匹配的情况下,用OpenAI的大语言模型进行问题回答。有了它,可以实现类似于客服或者助手的功能,感兴趣的话未来还可以集成第三方接口或者公司内部接口衍生出更强大的功能。例如调用实时数据查询,调用MD生成图片,通过语音进行问题回答等等。本项目1.0版本主要起到一个抛砖引玉的作用。
本软件采用B/S架构,人机交互界面采用浏览器端技术开发,aiWithWechat主要功能包括用户管理,问答设置,微信机器人等功能。
经过仔细研判,结合当前的现状及未来的业务扩展逐步梳理出系统的以下几个核心点:
问答设置:让用户能够方便的管理问题与答案。
微信机器人:启动微信机器人,在微信中进行聊天。
智能助手:根据预设问答解答提问,如果问题匹配度不高,则转由OpenAI进行回答。
目前大语言模型提供的都是云服务,且都是通过key进行认证,本项目中使用的LLM为OpenAI提供。通过weChatty构建微信机器人。
"https://api.openai.com/v1/completions" 文本生成接口
"https://api.openai.com/v1/chat/completions" 对话接口
"https://api.openai.com/v1/embeddings" 向量化接口
由于OpenAI目前禁止国内访问,因此需要用到科学上网工具,代码中配置代理,如下:
os.environ["http_proxy"] = "http://localhost:10809" os.environ["https_proxy"] = "http://localhost:10809"
目前市场上进行AI相关应用开发的语言主要是Python和NodeJS,有非常多的第三方包提供支持,如果使用Java进行开发,则会存在很多重复造轮子的问题。另外WeChatty也是基于Python进行开发的,因此本项目的中间层采用Python开发,通过postgresql作为数据的统一存储。
aiWithWechat从总体功能划分主要包括用户管理,角色管理,菜单管理,权限管理,问答管理,微信机器人,智能助手等功能。
首先通过系统管理设置相关的组织机构,人员,角色分配对应的权限;其次对问与答数据进行初始化,建立相关的问答向量数据库,再然后就是再微信中提问及得到回答了。业务流程图如下:
本系统采用B/S架构,服务器采用自有服务器或者其他云服务器,未来可根据具体需求动态扩展。使用者需要在有网络的情况下进行访问,如果自有服务器在局域网内,则需要用到地址映射相关技术。网络拓扑图如下:
系统页面由顶部logo及一级菜单及通知栏、左部二级菜单栏、中部内容区域栏等三部分组成。目前市面上的管理系统大体都是该页面布局方式,这种布局用户已经形成习惯,因此本系统页面布局还是采用该方式。下图为UI示意图:
系统管理为本系统的基础功能模块,例如字典管理,字典分类管理,日志管理,菜单管理,角色管理,人员管理等等都属于系统管理模块下。
字典分类及字典管理是为了方便系统日后的扩展以及系统的相关统计功能,理论上所有需枚举的数据都应当放入到此模块中进行管理。
日志管理按照类别分又可分为登录日志、操作日志及错误日志,日志的追踪是运维系统的核心手段之一,需要对日志进行分类分级。
菜单管理也是系统管理的常规功能之一,随着时间的推移及业务的演进,未来将会纳入各种功能点到系统当中,因此功能菜单应该是灵活可配的。菜单管理的目的就是方便日后功能的扩展,菜单管理应该采用树型结构方式,基本属性字段应该有菜单名称,url,是否可用,描述,顺序,编号等等字段。
系统实际运行中,会存在各类人员使用本系统,随着系统的不断升级,角色可能会进行调整,因此需要对角色进行管理。角色和人员应该是多对多的关系。角色的属性字段包括角色名称,顺序,描述。另外角色管理功能下应该有人员绑定功能。
使用本系统的人员的管理,属性字段应该有姓名,性别,工号,账号,密码,手机号,email,状态,入职时间等等。
为满足不同的人员或角色使用不同的功能点,因此需要对系统的菜单进行权限分配。权限分为数据级权限和菜单级权限。菜单级权限相对比较好实现,数据级权限要看做到什么粒度,本系统暂时不考虑数据级的权限实现。
菜单级权限:简单讲就是是否能使用该功能菜单。
数据级权限:此权限管理比较复杂,例如张三能看见武汉的数据但不能看见北京的数据。
操作级权限:例如有些人员只能看相关数据而不能修改相关数据。
此处管理的日志是用户使用系统时所产生的操作型日志,该功能点主要是方便相关人员查询使用本系统的操作记录,不建议提供删除的功能。如果日志量非常大,需要考虑日志的存储,备份,检索问题。
此功能点是用来管理需要进行预制的问答,例如很多公司的客服系统,固定的问题对应固定的解答。
启动中间层(主要是通过WeChatty构建微信机器人),用户通过扫码登录桌面微信。
在微信中通过可以与智能助手进行对话,当问题是问答设置的预制问题时,则采用对应的答案进行解答,当问题与预制的问题匹配度不高时,则调用OpenAI(也可以替换成其他的大语言模型)进行解答。
主要是技术选型上应该可以满足未来性能扩展的需求,尽量使用成熟的相关技术框架。例如内存数据库,消息队列,前后端分离等等。
根据前期的讨论,本系统拟采用前后端分离技术,spring boot框架技术,redis内存数据库技术,Ngnix集群部署技术,postgresql数据库技术等满足现阶段的性能需求。未来如果性能出现瓶颈点,可考虑通过微服务的方式把更细节的功能集群化部署。
本项目使用时需通过https协议,保证数据传输过程中进行加密数据。另外从管理角度看,相关的参与人员需要签署相应的保密协议。
其他硬件的安全,网络的安全,操作系统的安全,中间件的安全等等可以考虑用云平台提供的服务。
通过集群部署方式保证平台的稳定性,另外如果需要保证非常高级别的可靠性,则考虑增加相关的硬件,同时需把平台部署到不同地点的云节点上。
扫码关注不迷路!!!
郑州升龙商业广场B座25层
service@iqiqiqi.cn
联系电话:400-8049-474
联系电话:187-0363-0315
联系电话:199-3777-5101