简单几步,基于云主机快速为Web项目添加AI助手
在华为开发者空间,借助华为云对话机器人服务 CBS您可以零代码创建一个大模型 RAG (Retrieval-Augmented Generation,即检索增强生成)应用,来实现 AI 助手的智能问答能力。本实验借助华为云CBS提供的可访问API,在项目代码中通过几行代码引入 AI 助手,用户就可以在网站上看到一个 AI 助手,实现与之对话。
华为开发者空间,汇聚鸿蒙、昇腾、鲲鹏、GaussDB、欧拉等各项根技术的开发资源及工具,致力于为每位开发者提供一台云主机、一套开发工具及云上存储空间,让开发者基于华为根生态创新。点击链接,免费领取您的专属云主机
实验流程

说明:
用户创建智能机器人,增加私有知识;
准备SDK接入信息;
在CodeArts IDE 上开发Web项目;
在Web项目添加调用智能问答机器人服务的SDK并体验;
(可选)为了便于分享给其他人访问使用,可以将Web项目部署在弹性云服务器上。
实验资源
本次实验花费总计约1.1元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。

创建智能问答机器人
在浏览器中输入华为云网址:https://www.huaweicloud.com/进入华为云首页。
在华为云的首页右上方,点击“登录”,在弹出的对话框中输入自己的用户名和密码。
在华为云首页,依次选择“产品”>“人工智能”>“智能问答机器人”,进入智能问答机器人 QABot页面。

点击“立即使用”按钮进入管理页面。
点击“购买问答机器人”按钮进入购买页面。
选择“试用”购买即可。

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

对问答机器人添加私有知识可以从知识库和技能平台两个方面入手:
知识库
在“问答机器人”页面左侧导航栏中选择“知识库 > 问答管理”,在问答管理页面执行如下操作:
在问答管理中单击添加按钮新建问题分类,例如“IT问题”。
在问答管理中单击“新建”创建问答语料,详细创建过程请参见管理问答语料。

这里我们输入几个问答语料,在后面测试的时候使用。
Q:忘记密码怎么办
A:通过安全模式重置密码(无需密码重置磁盘)

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

技能平台
在“问答机器人”页面左侧导航栏中选择“技能平台 > 技能管理”,在技能管理页面执行如下操作:
点击“添加技能”按钮选择感兴趣的类型,建议从“预置技能”入手,点击下一步,选择感兴趣的技能,点击确定完成配置。
部署Web项目
本小节需要部署一个Python Web项目,可以是自己的项目,如果没有项目可以使用示例项目,代码地址如下:
git clone https://github.com/nishaotang/huawei_cbs_demo.git
进入云主机,打开终端。
执行命令安装python:
sudo apt-get install python-is-python3
验证python是否安装完成,出现图片所示表示我们python的环境变量已经配置完成:
python

打开CodeArts IDE,点击“打开项目”选择事先准备好的python Web项目文件夹点击“打开“按钮,等待加载完毕。
本样例以Python Flask框架为例。在下方 bash面板中输入如下命令,完成flask安装:
pip install flask
使用如下命令启动项目,出现下图所示表示启动成功(app.py为入口文件):
python app.py

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

调用AI助手实现智能问答
登录“我的凭证 > 访问秘钥”页面,获取Access Key(AK)和Secret Access Key(SK)。

登录“我的凭证 > 项目”页面,获取待使用区域的“项目ID”。调用服务时会用到这些信息,请提前保存。
本样例以“华北-北京四”区域为例,获取对应的项目ID(project_id)。

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

安装SDK
使用SDK前,需要安装“huaweicloudsdkcore”和“huaweicloudsdkcbs”。代码如下:
# 安装核心库
pip install huaweicloudsdkcore
# 安装CBS服务库
pip install huaweicloudsdkcbs
认证用的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

在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
修改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})
修改前端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:忘记密码怎么办?
AI助手回答如下图所示:

输入问题2:蓝屏了怎么办?
AI助手回答如下图所示:

至此,基于云主机的Web项目增加AI助手就体验完成。
如果想让更多的人体验项目AI助手,可以将Web项目部署到弹性云服务器上,如没有弹性云服务器请参照 附录 操作,部署后就可以分享给其他人访问。
创建虚拟私有云和安全组
在华为云首页,依次选择“产品”>“网络”>“虚拟私有云VPC”,进入服务页面,然后点击“开始使用”进入创建虚拟私有云页面。
在创建页面,“名称”“子网名称”填入默认名称,企业项目选择“default”,点击“立即创建”完成虚拟私有云的创建。

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

点击“购买”按钮进入购买页面。
按照如下规格购买:



点击“立即购买”完成购买。
项目发布流程该手册不多赘述,详细部署过程请参考弹性云服务器ECS部署,项目部署后就可以分享给其他人体验。
简单几步,基于云主机快速为Web项目添加AI助手的更多相关文章
- Spring Boot入门-快速搭建web项目
Spring Boot 概述: Spring Boot makes it easy to create stand-alone, production-grade Spring based Appli ...
- 云服务器+tomcat+mysql+web项目搭建部署
云服务器+tomcat+mysql+web项目搭建部署 1.老样子,开头墨迹两句. 作为我的第二篇文章,有很多感慨,第一篇人气好低啊,有点小丧气,不过相信我还是经验少,分享的都是浅显的,所以大家可能不 ...
- 基于Swagger+SpringBoot快速构建javaweb项目
章节导航 SpringBoot&Swagger简介 数据模型和接口定义 项目框架生成 业务逻辑实现 项目源码地址 github项目路径:https://github.com/Vikezhu/s ...
- Django+nginx+gunicore+supervisor+阿里云主机 部署博客项目
1 准备阶段 1 新鲜的阿里云主机 2 购买一个喜欢的域名 3 创建python的虚拟环境 2 阿里云主机的选取 咱们就是为了实验,我买了最便宜的阿里云主机 3 阿里云主机创建一个超级用户 3.1 默 ...
- Spring-Boot快速搭建web项目详细总结
最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...
- 基于SpringBoot + Mybatis实现SpringMVC Web项目
一.热身 一个现实的场景是:当我们开发一个Web工程时,架构师和开发工程师可能更关心项目技术结构上的设计.而几乎所有结构良好的软件(项目)都使用了分层设计.分层设计是将项目按技术职能分为几个内聚的部分 ...
- 阿里云服务器部署Java Web项目全过程
最近需要将一个Java Web项目部署到服务器上,方便多人共享访问.这也是我第一次接触服务器之类的东西,也花了一点时间,最终总算部署成功,写下一篇文章记录以便日后回顾. 购买服务器 第一步当然是需要购 ...
- 用Spring Boot零配置快速创建web项目(1)
一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...
- 开发基于CXF的 RESTful WebService web 项目 webservice发布
配置步骤 开发基于CXF的 RESTful WebService 1.创建Web项目并导入CXF的jar 2.在Web.xml中配置 CXFServlet <servlet> <se ...
- ItelliJ基于Gradle创建及发布Web项目(二)
上一篇介绍了IteliJ创建WEB项目的过程,这一篇介绍一下和本地WEB服务器(以Tomcat为例)的关联方法和发布流程. WEB服务器的关联 1. 点击IDE右上角的一个带有三角形标识的按钮,如下图 ...
随机推荐
- 安装 Oh My Posh
Oh My Posh Oh My Posh 官网 安装 winget install JanDeDobbeleer.OhMyPosh -s winget Oh My Posh 更新很快,有时会被杀毒软 ...
- Drools与动态加载规则文件
Drools与动态加载规则文件 Drools简介 对系统使用人员来说: 对开发人员来说: Drools架构图 快速开始 Drools简介 Drools是一款基于Java的开源规则引擎,将规则与业务代码 ...
- 关于 MemoryStream 的多次写入,模拟post请求,接收方 .net core web api无法读取到流数据,报 System.IO.IOException: Unexpected end of Stream, the content may have already be en read by another component.
主要是业务不熟害死人.记录一下.真想抽自己几个嘴巴子 先说结论,知道这个结论的下面文字都是废话: 一.new MemoryStream 的时候,如果需要分次写入,只能是像下面这样子 MemoryStr ...
- 【YashanDB知识库】YMP元数据阶段二报错YAS-04204
[问题分类]YMP迁移 [关键字]YMP迁移,YAS-04204 [问题描述]数据库采用最小规格部署,机器配置2C8G,使用YMP进行数据和对象迁移,在元数据阶段二创建索引时报错:YAS-04204 ...
- C#|.net core 基础 - 如何判断连续子序列
前两天同事遇到了一个小需求,想判断一个集合是不是在另一个集合中存在,并且要求顺序一致,然后一起讨论了下应该怎么做,有没有什么比较好的方式?下面分享一下我们想到的方法,如果你也有不同的想法也可以分享给我 ...
- 小tips:nodejs请求接口超时使用中间件connect-timeout实现自动超时机制
如果在请求中不设置超时时间,那么一直处理loading卡屏状态,使用connect-timeout来设置自动超时时间. 安装: npm install connect-timeout -S 如下例子: ...
- CSS – PostCSS
前言 我第一次接触 PostCSS 是在学 Tailwind CSS 的时候. 它类似 JavaScript 的 Babel. 我没有用过 Babel, 因为 TypeScript 用的早. Post ...
- 分享3款开源、免费的Avalonia UI控件库
Avalonia介绍 Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序.它使用自己的渲染引擎绘制UI控件,确保在Windows.macOS.Linux.Android.i ...
- 实用技巧:根据menuconfig定位一个驱动涉及到的源文件
根据menuconfig定位一个驱动涉及到的源文件,这个是很常用的,因为有时候你需要参考别人的驱动代码.新手不知道如何定位驱动相关源码,这篇文章将告之. 假设我手头有一块开发板,现在我想要获取板载ov ...
- SuperMap iServer&iPortal&iEdge结合CAS 5.3服务器实现单点登录
2023-10-19 更新,由于阿里云maven镜像仓库里缺失了很多CAS5.3 依赖,如果缺少可以用附件里的同步到本地仓库 链接:https://pan.baidu.com/s/14DhRci_Am ...