在华为开发者空间,借助华为云对话机器人服务 CBS您可以零代码创建一个大模型 RAG (Retrieval-Augmented Generation,即检索增强生成)应用,来实现 AI 助手的智能问答能力。本实验借助华为云CBS提供的可访问API,在项目代码中通过几行代码引入 AI 助手,用户就可以在网站上看到一个 AI 助手,实现与之对话。

华为开发者空间,汇聚鸿蒙、昇腾、鲲鹏、GaussDB、欧拉等各项根技术的开发资源及工具,致力于为每位开发者提供一台云主机、一套开发工具及云上存储空间,让开发者基于华为根生态创新。点击链接,免费领取您的专属云主机

实验流程

说明:

  1. 用户创建智能机器人,增加私有知识;

  2. 准备SDK接入信息;

  3. 在CodeArts IDE 上开发Web项目;

  4. 在Web项目添加调用智能问答机器人服务的SDK并体验;

  5. (可选)为了便于分享给其他人访问使用,可以将Web项目部署在弹性云服务器上。

实验资源

本次实验花费总计约1.1元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。

创建智能问答机器人

  1. 在浏览器中输入华为云网址:https://www.huaweicloud.com/进入华为云首页。

  2. 在华为云的首页右上方,点击“登录”,在弹出的对话框中输入自己的用户名和密码。

  3. 在华为云首页,依次选择“产品”>“人工智能”>“智能问答机器人”,进入智能问答机器人 QABot页面。

  1. 点击“立即使用”按钮进入管理页面。

  2. 点击“购买问答机器人”按钮进入购买页面。

    选择“试用”购买即可。

增加私有知识

登录对话机器人服务管理控制台,在左侧菜单栏中选择“智能问答机器人”。在机器人列表,点击“机器人管理”进入管理页面,页面如下图所示。

对问答机器人添加私有知识可以从知识库和技能平台两个方面入手:

知识库

在“问答机器人”页面左侧导航栏中选择“知识库 > 问答管理”,在问答管理页面执行如下操作:

  1. 在问答管理中单击添加按钮新建问题分类,例如“IT问题”。

  2. 在问答管理中单击“新建”创建问答语料,详细创建过程请参见管理问答语料

这里我们输入几个问答语料,在后面测试的时候使用。

Q:忘记密码怎么办

A:‌通过安全模式重置密码‌(无需密码重置磁盘)

Q: 蓝屏了怎么办

A:蓝屏后请重启PC,重启无效后,建议联系技术支持人员

技能平台

在“问答机器人”页面左侧导航栏中选择“技能平台 > 技能管理”,在技能管理页面执行如下操作:

点击“添加技能”按钮选择感兴趣的类型,建议从“预置技能”入手,点击下一步,选择感兴趣的技能,点击确定完成配置。

部署Web项目

本小节需要部署一个Python Web项目,可以是自己的项目,如果没有项目可以使用示例项目,代码地址如下:

git clone https://github.com/nishaotang/huawei_cbs_demo.git
  1. 进入云主机,打开终端。

  2. 执行命令安装python:

sudo apt-get install python-is-python3
  1. 验证python是否安装完成,出现图片所示表示我们python的环境变量已经配置完成:

python

  1. 打开CodeArts IDE,点击“打开项目”选择事先准备好的python Web项目文件夹点击“打开“按钮,等待加载完毕。

  2. 本样例以Python Flask框架为例。在下方 bash面板中输入如下命令,完成flask安装:

pip install flask
  1. 使用如下命令启动项目,出现下图所示表示启动成功(app.py为入口文件):

python app.py

  1. 打开浏览器访问地址http://127.0.0.1:5000/展示效果如下:

调用AI助手实现智能问答

  1. 登录“我的凭证 > 访问秘钥”页面,获取Access Key(AK)和Secret Access Key(SK)。

  1. 登录“我的凭证 > 项目”页面,获取待使用区域的“项目ID”。调用服务时会用到这些信息,请提前保存。

本样例以“华北-北京四”区域为例,获取对应的项目ID(project_id)。

  1. 登录对话机器人服务管理控制台,在左侧菜单栏中选择“智能问答机器人”。在机器人列表,获取机器人ID(qabot_id)。

  1. 安装SDK

使用SDK前,需要安装“huaweicloudsdkcore”和“huaweicloudsdkcbs”。代码如下:

# 安装核心库
pip install huaweicloudsdkcore
# 安装CBS服务库
pip install huaweicloudsdkcbs
  1. 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。本示例中的ak和sk保存在环境变量中,运行本示例前请先在本地环境中配置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK,以及项目id和机器人ID,打开终端,输入以下命令打开环境变量配置文件:

vi ~/.bashrc

设置环境变量,保存文件并退出编辑器:

export HUAWEICLOUD_SDK_AK="已获取AK值"
export HUAWEICLOUD_SDK_SK="已获取SK值"
export HUAWEICLOUD_PROJECT_ID="已获取项目id"
export HUAWEICLOUD_QABOT_ID="已获取机器id"

输入以下命令使配置文件生效。

source ~/.bashrc

  1. 在CodeArts IDE项目中新建文件huawei_cbs.py,完整代码如下(复制文档中python代码时,可能会导致格式错误,可以从下载的项目资料中获取huawei_cbs.py文件内容!):

# coding=utf-8
import os,json
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkcore.http.http_config import HttpConfig
# 导入CBS服务库huaweicloudsdkcbs
from huaweicloudsdkcbs.v1.region.cbs_region import CbsRegion
from huaweicloudsdkcbs.v1 import * def cbsUtil(question):
# 使用默认配置,如出现'HttpConfig' is not defined报错,请检查是否已正确安装sdk
config = HttpConfig.get_default_config()
# 根据需要配置是否跳过SSL证书校验
config.ignore_ssl_verification = False # 默认连接超时时间为60秒,读取超时时间为120秒,支持统一指定超时时长timeout=timeout,或分别指定超时时长timeout=(connect timeout, read timeout)
config.timeout = 10 # 配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。
# 请勿将认证信息硬编码到代码中,有安全风险。
ak = os.getenv('HUAWEICLOUD_SDK_AK')
sk = os.getenv('HUAWEICLOUD_SDK_SK')
project_id = os.getenv('HUAWEICLOUD_PROJECT_ID')
qabot_id = os.getenv('HUAWEICLOUD_QABOT_ID')
basic_credentials = BasicCredentials(ak, sk, project_id)
# 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务CBS的 CbsClient 为例
client = CbsClient.new_builder() \
.with_http_config(config) \
.with_credentials(basic_credentials) \
.with_region(CbsRegion.value_of("cn-north-4")) \
.build()
try:
request = ExecuteQaChatRequest()
request.qabot_id = qabot_id
request.body = PostRequestsReq(
question = question
) response = client.execute_qa_chat(request) #问答型机器人回复
if response.reply_type == 0:
return response.qabot_answers.answers[0].answer
#任务型机器人回复
elif response.reply_type == 1 :
return response.taskbot_answers.answer
#闲聊回复
elif response.reply_type == 2:
return response.chat_answers.answer
else:
return '请求失败'
except exceptions.ClientRequestException as e:
print(e.status_code)
print(e.request_id)
print(e.error_code)
print(e.error_msg)
return e.error_msg
  1. 修改app.py文件用于请求接口函数,添加如下代码(复制文档中python代码时,可能会导致格式错误,可以从下载的项目资料中获取app.py文件内容!):

@app.route('/aiApi',methods=['POST'])
def aiApi():
prompts = request.form.get('prompts')
message = huawei_cbs.cbsUtil(prompts)
print(message)
return jsonify({'success': True,'message':message})
  1. 修改前端js用于调用后端接口,代码如下(复制文档中js代码时,可能会导致格式错误,可以从下载的项目资料中获取web.js文件内容!):

// 发送信息到后台
ajaxRequest = $.ajax({
url: '/aiApi',
type: 'POST',
data: data,
success:function(response){ // 处理后端返回的响应
if (response.success) {
//自定义回复显示代码 使用response.message
} else {
//自定义失败显示
}
},
error: function(jqXHR, textStatus, errorThrown) {
//自定义异常处理
}
});
  1. 调整完成后可以出现如下图所示效果。

输入问题1:忘记密码怎么办?

AI助手回答如下图所示:

输入问题2:蓝屏了怎么办?

AI助手回答如下图所示:

至此,基于云主机的Web项目增加AI助手就体验完成。

如果想让更多的人体验项目AI助手,可以将Web项目部署到弹性云服务器上,如没有弹性云服务器请参照 附录 操作,部署后就可以分享给其他人访问。

创建虚拟私有云和安全组

  1. 在华为云首页,依次选择“产品”>“网络”>“虚拟私有云VPC”,进入服务页面,然后点击“开始使用”进入创建虚拟私有云页面。

  2. 在创建页面,“名称”“子网名称”填入默认名称,企业项目选择“default”,点击“立即创建”完成虚拟私有云的创建。

购买弹性云服务器

  1. 在华为云首页,依次选择“产品”>“计算”>“弹性云服务器 ECS”,进入弹性云服务器 ECS页面。

  1. 点击“购买”按钮进入购买页面。

  2. 按照如下规格购买:

  1. 点击“立即购买”完成购买。

项目发布流程该手册不多赘述,详细部署过程请参考弹性云服务器ECS部署,项目部署后就可以分享给其他人体验。

点击关注,第一时间了解华为云新鲜技术~

简单几步,基于云主机快速为Web项目添加AI助手的更多相关文章

  1. Spring Boot入门-快速搭建web项目

    Spring Boot 概述: Spring Boot makes it easy to create stand-alone, production-grade Spring based Appli ...

  2. 云服务器+tomcat+mysql+web项目搭建部署

    云服务器+tomcat+mysql+web项目搭建部署 1.老样子,开头墨迹两句. 作为我的第二篇文章,有很多感慨,第一篇人气好低啊,有点小丧气,不过相信我还是经验少,分享的都是浅显的,所以大家可能不 ...

  3. 基于Swagger+SpringBoot快速构建javaweb项目

    章节导航 SpringBoot&Swagger简介 数据模型和接口定义 项目框架生成 业务逻辑实现 项目源码地址 github项目路径:https://github.com/Vikezhu/s ...

  4. Django+nginx+gunicore+supervisor+阿里云主机 部署博客项目

    1 准备阶段 1 新鲜的阿里云主机 2 购买一个喜欢的域名 3 创建python的虚拟环境 2 阿里云主机的选取 咱们就是为了实验,我买了最便宜的阿里云主机 3 阿里云主机创建一个超级用户 3.1 默 ...

  5. Spring-Boot快速搭建web项目详细总结

    最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...

  6. 基于SpringBoot + Mybatis实现SpringMVC Web项目

    一.热身 一个现实的场景是:当我们开发一个Web工程时,架构师和开发工程师可能更关心项目技术结构上的设计.而几乎所有结构良好的软件(项目)都使用了分层设计.分层设计是将项目按技术职能分为几个内聚的部分 ...

  7. 阿里云服务器部署Java Web项目全过程

    最近需要将一个Java Web项目部署到服务器上,方便多人共享访问.这也是我第一次接触服务器之类的东西,也花了一点时间,最终总算部署成功,写下一篇文章记录以便日后回顾. 购买服务器 第一步当然是需要购 ...

  8. 用Spring Boot零配置快速创建web项目(1)

    一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...

  9. 开发基于CXF的 RESTful WebService web 项目 webservice发布

    配置步骤 开发基于CXF的 RESTful WebService 1.创建Web项目并导入CXF的jar 2.在Web.xml中配置 CXFServlet <servlet> <se ...

  10. ItelliJ基于Gradle创建及发布Web项目(二)

    上一篇介绍了IteliJ创建WEB项目的过程,这一篇介绍一下和本地WEB服务器(以Tomcat为例)的关联方法和发布流程. WEB服务器的关联 1. 点击IDE右上角的一个带有三角形标识的按钮,如下图 ...

随机推荐

  1. How to set keyboard for xshell 8 beta? 快捷键设置

    今天发现xshell8 不能使用Ctrl + v,就找了一下攻略,发现版本不对,都是低版本的,针对还处于测试期间的xshell 8,没有攻略. 那就自己摸索吧,看了几眼,发现:xshell 8 挪位置 ...

  2. Redis实战11-实现优惠券秒杀下单

    本篇,咱们来实现优惠券秒杀下单功能.通过本篇学习,我们将会有如下收获: 1:优惠券领券业务逻辑: 2:分析在高并发情况下,出现超卖问题产生的原因: 3:解决超卖问题两种方案:版本号法及CAS法 4:乐 ...

  3. 小tips:使用babel-upgrade从babel6升级babel7

    基础使用 完整使用参考地址:https://www.npmjs.com/package/babel-upgrade 使用方式: # npx lets you run babel-upgrade wit ...

  4. vue+webpack工程中怎样在vue页面中引入第三方非标准的JS库或者方法

    方法一:异步加载第三方库 在我们的vue工程中新建如下路径:src/utils/index.js,在index.js中实现如下方法: export function loadScript(url) { ...

  5. manim边学边做--通用多边形

    manim提供了通用多边形模块,可以绘制任意的多边形. 通用多边形模块有两种,Polygon和Polygram. Polygon是一个几何学术语,主要指的是由三条或三条以上的线段首尾顺次连接所组成的平 ...

  6. Figma 学习笔记 – Auto Layout

    用途 Auto Layout 有点像 CSS 的 Flex, 它还带有 responsive 的概念.使用它以后可以替代掉不少 constraints 的写法. 用法 一个 parent 抱着多个 c ...

  7. ASP.NET Core Library – Excel 读写

    前言 以前写过 EPPlus 的笔记, 但后来 EPPlus 开始收费了.... (这好像是 .NET 生态的宿命) 在找替代方案中看中了微软的 Open XML SDK. 但经过一番折腾, 它确实太 ...

  8. DQL—查询操作

    一.查询语法 select 字段列表 from 表名列表 where 条件列表 group by 分组列表 having 分组后条件 order by 排序字段 limit 分页限定 (提供一个表来操 ...

  9. transaction_timeout:达到事务超时时终止会话

    功能实现背景说明 我们已经有两个参数来控制长事务:statement_timeout 和 idle_in_transaction_session_timeout.但是,如果事务执行的命令足够短且不超过 ...

  10. 进程管理中的active_mm是做什么的?

    在Linux内核中,进程管理涉及到许多复杂的数据结构和机制,其中active_mm是与内存管理相关的一个关键概念.理解active_mm需要先了解与之相关的一些基本内核结构和概念. 基本概念 mm_s ...