【案例教学】华为云API对话机器人的魅力—体验AI垃圾分类机器人

news2025/1/21 1:03:07

云服务、API、SDK,调试,查看,我都行

阅读短文您可以学习到:人工智能AI自言语言的情感分析、文本分词、文本翻译

1 IntelliJ IDEA 之API插件介绍

API插件支持 VS Code IDE、IntelliJ IDEA等平台、以及华为云自研 CodeArts IDE,基于华为云服务提供的能力,帮助开发者更高效、便捷的搭建应用。API插件关联华为云服务下的 API Explorer、DevStar、CodeLabs、SDK 中心和 CLI 中心产品,致力于为开发者提供更稳定、快速、安全的编程体验。

在本插件中,我们提供了但不局限于如下的功能:

对接华为云API开放平台,支持用户检索API、查看API文档、调试API、以及提供SDK示例代码供用户学习如何使用API。

提供华为云SDK代码片段补全功能,SDK依赖包自动引入,加速用户集成华为云API。

对接华为云开发体验馆Codelabs,提供500+云服务代码示例,向导式教程帮助用户快速学习。

说明:

在IntelliJ IDEA等系列平台和VS Code IDE,华为云API插件的名称是Huawei Cloud API。而在CodeArts IDE,API插件是IDE原生内置的,名称是华为云API开发套件。

API插件在IntelliJ IDEA等系列平台和VS Code IDE的使用依赖底座插件,请提前安装底座插件。

2 API插件安装--IntelliJ IDEA

2.1 IntelliJ IDEA等平台

安装准备:下载并安装JDK1.8或更高版本。下载并安装IntelliJ IDEA 2020.2或更高版本。

须知:IntellIj平台同时支撑包括Goland、Pycharm等在内的IDE,若在其它相关IDE上开发,请下载配置好对应语言的编译器或者解释器。这里以IDEA为例介绍IntelliJ平台插件的安装流程,其他IntelliJ系列的IDE请参考IDEA。

开始安装:Toolkit-华为云

您可以在直接在IDE插件市场或者直接在JetBrains插件市场下载离线包安装。

IDE安装

  1. 在IntelliJ IDEA顶部菜单栏中选择File > Settings,在Settings对话框的左侧导航栏中单击Plugins。
  2. Plugins区域单击Marketplace,在搜索栏中输入Huawei Cloud API。
  3. Search Results区域会出现Huawei Cloud API,单击Install,完成后重启IDE。

离线包安装:

  1. 进入插件市场搜索Huawei Cloud API,进入插件详情页,在Versions页签下选择想要版本的API插件,点击Download下载离线的插件压缩包保存到本地。。
  2. 在IntelliJ IDEA顶部菜单栏中选择File > Settings,在Settings对话框的左侧导航栏中单击Plugins。
  3. 在Plugins区域单击 ,再单击Install Plugin from Disk...。
  4. 在Choose Plugin File对话框中选择离线安装包(不用解压),并按照IntelliJ IDEA安装页面的提示,完成后续安装步骤。

说明:若当前您想要安装插件的IntelliJ IDE已经在桌面打开,则进入插件市场搜索Huawei Cloud API,进入插件详情页,在右上角会识别到本地已经打开的IDE,点击相应按钮,在弹出的IDE窗口中点击ok,则IDE后台会开始安装相应版本的API插件。

安装验证:在IntelliJ系列平台上安装插件成功后在左侧的导航栏中可以看到Huawei Cloud Toolkit图标,点击后面板会出现Huawei Cloud API的字样,则说明安装成功。

3 使用对话流程,搭建复杂逻辑的AI对话场景

3.1 华为云API

左侧展示API列表,可以查询所有API,目前云服务206,APIs9213

Toolkit-华为云

3.2 使用对话流程配置复杂场景的多轮对话

什么是对话机器人服务?

对话机器人服务(Conversational Bot Service)是一款基于人工智能技术,针对企业应用场景开发的云服务,主要包括智能问答、智能质检、定制对话机器人和任务型对话等功能。

对话机器人服务中的技能管理是打造任务型对话技能的工具平台。通过创建管理不同技能和词典,满足不同的用户需求,实现不同场景下的多轮对话能力。

在本案例中,您将使用CBS的技能管理为机器人快速配置技能,通过多轮对话实现机器人垃圾分类技能。

案例目标:掌握使用CBS技能的使用方法。掌握使用CBS创建垃圾分类流程配置的方法。

体验垃圾分类机器人配置,需要完成以下准备工作:

创建华为云账号并实名认证。

注册华为云账号。完成实名认证,推荐使用扫码认证。https://support.huaweicloud.com/usermanual-account/zh-cn_topic_0133456714.html

下载数据:

.
├── DB_query_rubbish_type.py
└── rubbish_dict.txt

创建试用版智能问答机器人:由于技能管理是专业版智能问答机器人下的功能,因此首先我们需要购买一个试用版专业版问答机器人。 点击此链接,进入对话机器人服务智能问答机器人页面,点击右上角的购买问答机器人,进入问答机器人购买页面。https://console.huaweicloud.com/cbs/?region=cn-north-4#/home/qa-robot

分别输入问答机器人名称,选择试用的计费模式,并点击立即购买完成支付,即完成试用专业版机器人创建。

问答机器人创建成功后,返回对话机器人服务主页面,等待机器人创建成功后,点击“机器人名称”进入机器人,左侧的标签栏中会有一项技能管理。

创建词典:

添加垃圾类型词典,进入对话机器人服务,点击进入相应的机器人,点击“技能平台”,再点击“实体管理”按钮,按照下图指导添加垃圾类型词典:https://console.huaweicloud.com/cbs/?region=cn-north-4#/home/qa-robot

词典标识:rubbish

词典名称:垃圾物品

点击“确认”按钮,创建该词典,并进入“编辑”页面。

导入词条

点击页面上的“导入”按钮,然后点击“添加文件”按钮,上传本地文件夹下的rubbish_dict.txt文件,导入模式选“追加”,最后点击“确定”按钮,即可完成垃圾物品词典词条导入。如下图所示:

技能配置:

本节将添加语料并标注,配置机器人的“垃圾分类”技能。

点击此链接,https://console.huaweicloud.com/cbs/?region=cn-north-4#/home/qa-robot。进入对话机器人服务的“技能管理”,新建垃圾分类技能并进行技能配置。

创建技能

点击“添加技能”按钮,选择“多轮对话技能”,点击下一步,输入技能名称:垃圾分类,如下图所示:

创建意图:

技能创建完成后,点击进入“垃圾分类”技能,在意图列表中点击“创建”按钮,如下图指导填写:

意图标识:query_rubbish_type

意图名称:判断垃圾种类

然后点击“确认并继续设置”按钮,继续配置该意图。

添加用户问法语料

进入“判断垃圾种类”意图的“用户问法”,点击“用户问法语料”输入框下方的蓝色字体“批量添加用户问法语料”,复制下方的语料至弹出对话框,点击“确认”完成用户问法预料导入。

书怎么处理

书是什么垃圾

其他垃圾包括牙签吗

其他垃圾里有护手霜

卫生纸如何回收

卫生纸属于哪种垃圾

厨余垃圾包括苹果皮吗

厨余垃圾里有土豆皮吗

可乐瓶应当怎样处理

可回收垃圾包括铁皮吗

语料添加完之后,滑动页面到最下方,点击“保存”。可以得到如下结果:

添加槽位

往下滑动页面,找到“槽位管理”页面,创建槽位:rubbish(垃圾类别),然后点击“添加槽位”按钮,按照如下指导,添加rubbish_goods槽位:

关联槽位:不关联

槽位标识:rubbish_goods

槽位名称:垃圾物品

是否必须:

追问轮数:1

输入框:你说的能再具体点吗?

词典选择:rubbish

答案候选:不勾选

然后点击“确定”按钮。槽位添加完成后,滑动页面到最下方,点击“保存”。

语料标注:

往上滑动页面,回到“用户问法”,对“用户问法语料”列表中的语料进行标注。

选中关键词,然后使用槽位对关键词标注。

标注完成后,如下图所示:

添加用户问法模板

点击“用户问法”中的“用户问法模板”页面中添加模板。

点击“添加模板”按钮。模板内容如下图所示,在相应位置点击下方槽位名称插入相应槽位。完成配置后用户即可使用模板的问法与机器人进行对话。

添加模板:

问法模板添加完成后,滑动页面到最下方,点击“保存”。

配置对话流程

点击“配置对话流程”,完成复杂的对话逻辑配置。

从左侧节点栏拖拽一个“条件判断”节点到“对话开始”节点下方,并连接起来两个点。

点击“条件判断”,完成如下图所示的设置:

再从左侧节点栏拖拽一个“信息收集”节点到“条件判断”节点下方,并连接起来两个节点,如下图所示:

函数配置可参考此链接中的第六章节:

开发体验馆Codelabs

函数参考代码如下:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# @Version : Python 3.6
import json
import requests
# 定义一个垃圾类型的处理建议词典
rubbish_info = {
    0: "分类投放可回收物时应保持清洁干燥,避免污染,轻投轻放;其中废纸尽量平整;立体包装物请清空内容物,清洁后压扁投放;有尖锐边角的,应包裹后投放。",
    1: "充电电池、纽扣电池、蓄电池投放时应注意轻放;油漆桶、杀虫剂如有残留请密闭后投放;荧光灯、节能灯易破损连带包装或包裹后投放;废药品及其包装应一并投放进垃圾桶中。",
    2: "有包装物的厨余垃圾应取出后分类投放;大块骨头和椰子壳、榴莲壳等不易生化降解,作为干垃圾进行投放;纯液体(如牛奶等)食物垃圾可直接倒入下水口;其余应沥干水分后再投放进厨余垃圾桶。",
    3: "干垃圾应尽量沥干水分,投入干垃圾容器内。",
}

# 调用垃圾分类API
def get_response(word, mode=1):
    """
    调用天行API接口 获取垃圾分类信息
    :param word: 需要查询的垃圾物品
    :return: 返回改垃圾物品的分类信息
    """
    key = "替换成apikey" # 可浏览https://www.tianapi.com/注册获取apikey
    url = "http://api.tianapi.com/lajifenlei/index"
    data = {
        "key": key,
        "word": word,
        "mode": mode,
    }
    headers = {'Content-type': 'application/x-www-form-urlencoded'}
    res = requests.post(url, data=data, headers=headers, verify=False)
    return res.json()
# 函数入口
def handler(event, context):
    """
    """
    slot_temp = json.dumps(event, ensure_ascii=False)
    slot_info = json.loads(slot_temp)
    logg = context.getLogger()
    logg.info(slot_temp)
# 获取槽位信息,即槽位取到的值
    word = slot_info.get("goods", None)
    result = {
        "content": "我不知道这是什么,换个垃圾物品吧~"
    }
    if word:
        res = get_response(word)
# 判断API响应码
        if res['code'] != 200:
            result["content"] = "数据源资源不足!"
            return json.dumps(result, ensure_ascii=False)
        all_data_list = res.get("newslist", [{}])
        filter_data_list = list(filter(lambda x: x.get("name", "") == word, all_data_list))
        if filter_data_list:
            _type = filter_data_list[0].get("type", 4)
            rubbish_result = ""
            logg.info(word)
# 根据垃圾类型拼接返回值
            if _type == 0:
                rubbish_result = "{}是可回收垃圾。投放建议:{}".format(word, rubbish_info[_type])
            elif _type == 1:
                rubbish_result = "{}是有害垃圾。投放建议:{}".format(word, rubbish_info[_type])
            elif _type == 2:
                rubbish_result = "{}是厨余垃圾(即湿垃圾)。投放建议:{}".format(word, rubbish_info[_type])
            elif _type == 3:
                rubbish_result = "{}是其他垃圾(即干垃圾)。投放建议:{}".format(word, rubbish_info[_type])
            else:
                pass
            if rubbish_result:
                result["content"] = rubbish_result
    logg.info(json.dumps(result, ensure_ascii=False))
return json.dumps(result, ensure_ascii=False)

模型训练发布

在“垃圾分类技能”页面中,进入“发布测试”页面,点击“训练模型”按钮,勾选“用户常用问法”,技能阈值默认即可。点击“确定”开始模型训练,训练时长大概3分钟。

模型训练完成后,点击“线上发布”按钮发布模型。

技能体验:

模型发布完成后,回到“技能管理”页面,点击右上角“对话体验”按钮

下图是一组对话样例:

4 参考文献

创建一个问答机器人_ 对话机器人服务 CBS_用户指南_智能问答机器人_华为云

https://console.huaweicloud.com/cbs/?region=cn-north-4#/cbs/management/skills

5 体验插件的魅力

华为云devkit已上线

Toolkit-华为云协同华为云云端的云服务产品,支持主流 IDE 平台包括(IntelliJ系列、VS Code),以及华为云自研 CodeArts IDE,提供诸如API检索调试、代码补全、一键部署等丰富功能,致力于为开发者提供更稳定、快速、安全的编程体验。icon-default.png?t=N7T8https://developer.huaweicloud.com/develop/toolkit.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sudowrite:基于人工智能的AI写作文章生成工具

【 产品介绍】 名称 Sudowrite 成立/上线时间 2023年 具体描述 Sudowrite是一个基于GPT-3的人工智能写作工具,可以帮助你快速生成高质量的文本内容, 无论是小说、博客、营销文案还是学术论文。 Sudowrite可以根据你的输入和指…

BUSMASTER使用记录(一):基本收发、报文过滤、报文录制和数据回放

目录 一、概述二、基本收发2.1 连接设备2.2 接收2.3 发送 三、DBC加载和转换DBF文件四、报文过滤4.1 新增过滤器4.2 使能 五、报文录制/回放报文录制数据回放 一、概述 以往使用过的CAN盒虽然厂家不一样,但都兼容周立功的CANPro。这次使用的BusMaster,需…

ARM架构--栈

栈的概念 栈的本质就是一段内存,程序运行时用于保存一些临时数据 如局部变量、函数的参数、返回值、以及程序跳转时需要保护的寄存器等 在高级语言里面,操作的是变量。在ARM汇编里面,操作的是寄存器(register)、内存和…

LabVIEW对Table中同一行数据分多次增加

LabVIEW对Table中同一行数据分多次增加 在对多个设备采集数据,同时需要记录到表格中。很多时候多台数据并不是同时更新,比如有的是在开关之前读取更新,有的则是在开关闭合后更新。只是用Number Indicator的方式,需要很多个&#…

基于SSM的旅游网站系统

基于SSM的旅游网站系统【附源码文档】、前后端分离 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:管理员、用户 管理员:用户管理、景点…

品牌 vs 营销:谁才是真正的推动商业增长的关键?

道叔曾经待过的公司,营销部和品牌部经常打架,明争暗斗,互相推诿,谁看谁不顺眼,沟通成本巨大....... 这两个本身关联密切、相辅相成的兄弟部门为什么会这样? 归根结底主要有以下三个原因: 1、…

【Linux系统编程】文件描述符与重定向

#include <unistd.h>int dup(int oldfd);int dup2(int oldfd, int newfd);dup函数是让最低位没有被使用的文件描述符也指向oldfd这个文件描述符所指向的文件&#xff0c;成功返回最低那个没有被使用的文件描述符&#xff0c;失败返回-1。 dup2函数是让newfd这个文件描述符…

IP代理安全吗?如何防止IP被限制访问?

你是否遇到过可以正常上网&#xff0c;但访问某个网站却被禁止&#xff1f;注册某个网站账号&#xff0c;却被封号&#xff1f;那都是因为IP出现问题&#xff01;您的IP地址透露很多关于您的信息&#xff0c;包括您的位置和互联网活动。 在本文中&#xff0c;我们将一起了解IP地…

第二章 进程与线程 二、进程的状态与转换

目录 一、进程的状态 1、创建态 2、就绪态 3、运行态 4、阻塞态 5、终止态 注意&#xff1a; 二、进程状态的转换 三、进程的组织 1、链接方式 2、索引方式 四、考点 一、进程的状态 1、创建态 &#xff08;1&#xff09;进程正在被创建时&#xff0c;它的状态是“…

排序算法-----希尔排序

目录 前言 希尔排序&#xff08;shell&#xff09; 排序原理 大致思路 示例 代码实现&#xff08;C语言&#xff09; 算法分析 时间复杂度 空间复杂度 稳定性 前言 前面我有一篇插入排序的详细的文章讲解&#xff08;链接&#xff1a;排序算法-----插入排序&#xff0…

⑧ 嵌套路由配置

这种就是路由嵌套 在index.js中加上三级页面 引入到二级导航里面 增加重定向配置 三级页面默认显示第一个页面信息 在这里插入图片描述

GNN动态顺序推荐Dynamic Graph Neural Networks for Sequential Recommendation

Dynamic Graph Neural Networks for Sequential Recommendation 文章目录 1. 背景2. 模型2.1 动态图构造2.2 子图采样2.3 动态图推荐网络2.3.1 消息传播机制2.3.2 Node updating 2.4 推荐和优化 1. 背景 协同过滤没有考虑用户商品交互的序列演变&#xff1b; 已经有一些RNN…

vue3项目中关于二进制导出(下载)txt ,适应于其他格式

<el-button type"info" click"exportClick" size"default">导出</el-button> 接口方法&#xff1a;getExportList import { tmUseDictApi } from //api/dict; const getExportList tmUseDictApi().getExportList //初始化数据 …

React 全栈体系(五)

第三章&#xff1a;React 应用(基于 React 脚手架) 一、使用 create-react-app 创建 react 应用 1. react 脚手架 xxx 脚手架: 用来帮助程序员快速创建一个基于 xxx 库的模板项目 包含了所有需要的配置&#xff08;语法检查、jsx 编译、devServer…&#xff09;下载好了所有…

【笔试强训选择题】Day42.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

深入理解JVM虚拟机第四篇:一些常用的JVM虚拟机(一)

一&#xff1a;Sun Classic VM虚拟机 早在1996年Java1.0版本的时候&#xff0c;Sun公司发布了一款名为Sun classic VM的Java虚拟机&#xff0c;它同时也是世界上第一款商用Java虚拟机&#xff0c;JDK1.4时完全被淘汰。 现在hotspot内置了此虚拟机。 这款虚拟机内部只提供解释器…

深入了解接口测试:Postman 接口测试指南

在现代软件开发生命周期中&#xff0c;接口测试是一个至关重要的部分。使用 Postman 这一工具&#xff0c;可以轻松地进行 接口测试。以下是一份简单的使用教程&#xff0c;帮助你快速上手。 安装 Postman 首先&#xff0c;你需要在电脑上安装 Postman。你可以从官网上下载并…

玩转堆排序以及Topk问题——【数据结构】

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 目录 堆排序 建堆 建堆的时间复杂度 Topk问题 学习了二叉树以及堆&#xff0c;今天我们来学习一下什么是堆排序以及经典二叉树问题——topk问题。 在学习开始我们先来回顾一下上篇博客中我们提到的堆&#xff0c;…

TypeScript函数详解

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 函数声明 函数表达式 可选参数和默认参数 剩余参数&#xff08;Rest Parameters&#xff09; this和箭头函数 …

chato.cn: 定制专属AI聊天助理机器人工具网站

【 产品介绍】 • 名称 chato.cn • 具体描述 chato.cn的核心功能是让用户能够输入一些知识或信息&#xff0c;让机器人学习和理解&#xff0c;然后与之进行对话&#xff0c;查看其回答的质量和逻辑性。还提供了多种语言、主题、风格和规则的选项&#xff0c;让用户能够根据自己…