接入QAnything的AI问答知识库,可私有化部署的企业级WIKI知识库

举报
yd_272730458 发表于 2024/03/03 14:46:05 2024/03/03
【摘要】 zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具,提供在线化的知识库管理功能,专为私有化部署而设计,最大程度上保证企业或个人的数据安全,可以完全以内网的方式来部署使用它。 您也可以将其作为企业产品的说明文档来使用,支持一键将整个空间的内容开放到互联网,提供有不同风格的开放文档页样式可供选择,以及适配了在手机端、小程序中文档的展示,省去为产品的说明文档而定制开发系统的成本。

zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具,提供在线化的知识库管理功能,专为私有化部署而设计,最大程度上保证企业或个人的数据安全,可以完全以内网的方式来部署使用它。

您也可以将其作为企业产品的说明文档来使用,支持一键将整个空间的内容开放到互联网,提供有不同风格的开放文档页样式可供选择,以及适配了在手机端、小程序中文档的展示,省去为产品的说明文档而定制开发系统的成本。

安装知识库系统

1. 下载Java并安装
版本号:JAVA 1.8 及以上,本项目使用JAVA语言开发,启动时会依赖JAVA的运行时环境

2. 安装数据库依赖
私有化部署后应用产生的所有数据都存储在自己的MySQL数据库中,数据库安装成功后,需要手动创建一个库:create database zyplayer_doc;

3. 下载安装文件
到官网可下载最新版安装文件:https://doc.zyplayer.com/#/integrate/zyplayer-doc/install,同时也可使用Docker或宝塔进行安装

4. 修改配置并启动
修改文件夹下的 application.properties 里面的数据库链接和帐号密码,双击文件夹下的 startup.bat 启动项目,启动后访问:http://127.0.0.1:8083 ,默认账号:zyplayer 密码:123456

文档的编写

在知识库首页新建空间,进入空间即可新建文档进行编辑,也可以上传或新建Office文档进行在线协同编辑

image.png

image.png

接入QAnything实现AI问答

服务的接入

可通过私有化部署的方式,或者使用QAnything云服务,将应用信息填入到系统中,并开启内部文档或开放问答的启用开关
QAnything 开源地址:https://github.com/netease-youdao/QAnything
QAnything 云服务地址:https://ai.youdao.com/console/#/service-singleton/qanything

image.png

在空间中启用

在空间的设置页中将 AI知识库同步 开关开启,等待同步完成后在空间的高级搜索和开放文档页面即会出现AI问答选项

image.pngimage.png

在文集中启用

只需要将文集引用到的空间全部开启 AI知识库同步 ,文集搜索界面则会出现AI问答选项

image.png

AI问答限流

在AI问答配置处可配置问答限流,可按 用户或全系统 配置 每天/每小时/每分钟 的问答次数限制,防止恶意刷量。

image.png

API开放问答接口

可通过开放接口的方式实现指定空间或文集进行问答,可用于智能客服等场景使用

同步请求地址:http://127.0.0.1:8083/openApi/v1/ai/chats/sync ,请求代码示例:

public static void main(String[] args) {
	// 组装请求参数
	Map<String, Object> paramMap = new HashMap<>();
	paramMap.put("space", "uta2JteQtykCil4b0ePSMp");
	paramMap.put("question", "zyplayer-doc文档管理系统是什么?");
	paramMap.put("salt", UUID.randomUUID());
	// 加密参数
	String privateKey = "MIICeAIBAxxxxxxxxDMKVrlHqf";
	String content = JSON.toJSONString(paramMap);
	String sha256 = SecureUtil.sha256(content);
	RSA rsaPrivate = SecureUtil.rsa(privateKey, null);
	String encrypt = rsaPrivate.encryptHex(sha256, KeyType.PrivateKey);
	// 发送请求
	String url = "http://127.0.0.1:8083/openApi/v1/ai/chats/sync";
	String body = HttpUtil.createPost(url).form("content", content).form("encrypt", encrypt).execute().body();
	System.out.println(body);
}

流式请求地址:http://127.0.0.1:8083/openApi/v1/ai/chats/stream ,请求代码示例:

public static void main(String[] args) {
	CountDownLatch latch = new CountDownLatch(1);
	Map<String, Object> paramMap = new HashMap<>();
	paramMap.put("space", "uta2JteQtykCil4b0ePSMp");
	paramMap.put("question", "zyplayer-doc文档管理系统是什么?");
	paramMap.put("salt", UUID.randomUUID());
	// 加密参数
	String privateKey = "MIICeAIBAxxxxxxxxDMKVrlHqf";
	String content = JSON.toJSONString(paramMap);
	String sha256 = SecureUtil.sha256(content);
	RSA rsaPrivate = SecureUtil.rsa(privateKey, null);
	String encrypt = rsaPrivate.encryptHex(sha256, KeyType.PrivateKey);
	// 发送请求
	Map<String, Object> bodyMap = new HashMap<>();
	bodyMap.put("content", content);
	bodyMap.put("encrypt", encrypt);
	WebClient webClient = WebClient.create("http://127.0.0.1:8083");
	Flux<AiChatStreamResult> eventStream = webClient.post()
			.uri("/openApi/v1/ai/chats/stream")
			.bodyValue(bodyMap)
			.retrieve()
			.bodyToFlux(AiChatStreamResult.class);
	Disposable disposable = eventStream.timeout(Duration.ofSeconds(60)).subscribe(data -> {
		// 在这里处理每次获取到的数据
		if (Objects.equals(data.getName(), "response")) {
			logger.info("message: {}", data.getMessage());
		} else if (Objects.equals(data.getName(), "complete")) {
			logger.info("sourceList: {}", data.getSourceList());
		} else if (Objects.equals(data.getName(), "failed")) {
			logger.info("failed: {}", data.getErrMsg());
		}
	}, error -> {
		// 处理错误
		logger.error("ChatStream error", error);
		latch.countDown();
	}, () -> {
		// 处理流结束事件
		logger.info("ChatStream complete");
		latch.countDown();
	});
	try {
		// 最多等待60秒
		latch.await(60, TimeUnit.SECONDS);
	} catch (InterruptedException e) {
		logger.error("等待超时:{}", e.getMessage());
	}
	disposable.dispose();
}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。