基于华为云智能问答机器人的AI诗歌生成【我的华为云体验之旅】

举报
运气男孩 发表于 2021/12/29 23:37:37 2021/12/29
【摘要】 今天来体验一下华为云的对话机器人服务,调用了NLP的诗歌生成API接口,话不多说,走着!那么,什么是对话机器人服务?对话机器人服务(Conversational Bot Service) 是一款基于人工智能技术,针对企业应用场景开发的云服务,主要包括智能问答、智能质检、定制对话机器人和任务型对话等功能。对话机器人服务中的技能工坊是打造任务型对话技能的工具平台。通过创建管理不同技能和词典,满足...

今天来体验一下华为云的对话机器人服务,调用了NLP的诗歌生成API接口,话不多说,走着!

那么,什么是对话机器人服务?

对话机器人服务(Conversational Bot Service) 是一款基于人工智能技术,针对企业应用场景开发的云服务,主要包括智能问答、智能质检、定制对话机器人和任务型对话等功能。对话机器人服务中的技能工坊是打造任务型对话技能的工具平台。通过创建管理不同技能和词典,满足不同的用户需求,实现不同场景下的多轮对话能力。

简单来说,就是训练了一个有指定功能的ai机器人,会根据你设置的词典和回复模板来操作,并随着问答能不断学习提升。

基础环境准备

在使用 ModelArts 进行 AI 开发前,需先完成以下基础操作哦(如有已完成部分,请忽略),主要分为4步(注册–>实名认证–>服务授权–>领代金券):

  1. 使用手机号注册华为云账号:点击注册

  2. 点此去完成实名认证,账号类型选"个人",个人认证类型推荐使用"扫码认证"。 

    image.png

准备数据

下载附件至本地,解压。可以看到 poetry_code 文件夹下有以下三个文件:

├── acrostic_dict.txt

├── poetry_demo.py

└── poetry_type_dict.txt

单击https://console.huaweicloud.com/cbs/?region=cn-north-4&&locale=zh-cn#/cbs/management/qabot/home进入,进入对话机器人服务智能问答机器人页面,点击右上角的购买问答机器人,进入问答机器人购买页面。如下所示

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

购买成功后如图所示:

添加诗歌类型词典

创建词典

接着点击机器人管理按钮进入机器人管理页面,进入左侧标签栏中的词典管理。点击创建词典按钮,按照下图指导添加诗歌类型词典:

词典标注:POETRYY_TYPE 

词典名称:诗歌类型

点击确认并添加词条按钮,创建该条词典,并进入添加词条页面。

添加词条

点击页面上的导入词条按钮,然后点击“...”按钮,上传本地 poetry_code 文件夹下的 poetry_type_dict.txt 文件,导入模式选追加,最后点击确定按钮,即可完成诗歌类型词典词条导入。如下图所示:

导入成功后,可以看到如下词条:

添加藏头诗词典

创建词典

参看上述创建诗歌类型词典的方式,创建藏头诗词典。点击创建词典按钮,填写内容如下:

词典标识:ACROSTIC 词典名称 :藏头诗判断

点击确认并添加词条按钮。

添加词条

点击导入词条按钮,点击“...”按钮,选择本地 poetry_code 文件夹中的 acrostic_dict.txt 文件,导入模式选追加,最后点确定按钮,完成藏头诗判断词典词条导入,如下图所示:

至此,两条词典创建成功。词典因仅用于技能中,可暂时不发布。

这里将添加语料,并标注,配置作诗机器人的技能。

在机器人管理页面,进入左侧标签栏中的技能管理页面,新建写诗技能并进行技能配置。

创建技能

点击创建技能按钮,添加自定义技能,输入技能名称:作诗技能,如下图所示:

创建意图

技能创建完成后,点击进入写诗技能,在意图管理中点击创建意图按钮,如下图指导填写:

意图标识:poem

意图名称:作诗

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

添加用户问法语料

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

以秋思为题写首诗

作诗一首

写一首五言绝句

写一首诗

写个诗

写首七言绝句

来一个七言律诗

来首诗吧

用白云写一首诗

用秋思写个五言律诗

给我写个诗

语料添加完之后,可以得到如下结果:

添加槽位

往下滑动页面,找到槽位管理页面,分别创建槽位:poetryType(诗歌类型), poetryName(诗歌名称), acrostic(藏头诗)三个槽位。 槽位是触发意图的关键信息 。

然后点击添加槽位按钮,按照如下指导,添加poetryType槽位:

关联槽位:不关联

槽位标识:poetryType

槽位名称:诗歌类型

是否必须:是

输入框:请问诗歌类型是什么?

词典选择:POETRY_TYPE

答案候选:勾选

然后点击确定按钮。

再次点击添加槽位按钮,按照如下指导,添加poetryName槽位:

关联槽位:不关联

槽位标识:poetryName

槽位名称:诗歌名称

是否必须:是;

输入框:请问诗歌名称是什么?

词典选择:sys.any

答案候选:不勾选

然后点击确定按钮。

再次点击添加槽位按钮,按照如下指导,添加acrostic槽位:

关联槽位:不关联

槽位标识:acrostic

槽位名称:藏头诗

是否必须:是

输入框:请问需要藏头诗么?

词典选择:ACROSTIC

答案候选:不勾选


然后点击确定按钮。

三个槽位添加完成后,可以得到如下列表:

语料标注

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

选中关键词,然后使用槽位对关键词标注。例如:七言绝句——poetryType,秋思——poetryName

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

添加用户问法模板

用户问法管理中的用户问法模板页面中添加模板。

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

添加第一个模板:

添加第二个模板:

两个问法模板添加完成后,可以看到如下列表:

机器人回复管理

配置通过函数的方式调用作诗接口。

创建函数

向下滑动页面,找到机器人回复管理页面。

选择调用函数回复,并点击右侧创建新函数按钮进入函数工作流控制台,如下图所示:

按照如下指导,填写参数:

模板:使用空模板函数名称:poem

所属应用:default

委托名称:不使用任务委托

运行时语言:Python2.7

函数执行入口:index.handler

代码上传方式:默认代码。

# -*- coding:utf-8 -*-
import json
import sys
import requests
import json
reload(sys)
sys.setdefaultencoding("utf-8")

type_dict = {"五言绝句":0,"七言绝句":1,"五言律诗":2,"七言律诗":3}

def handler (event, context):
    token_response = requests.post("https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens", 
        headers={"Content-Type": "application/json"}, 
        json={"auth": {"identity":{"password": {"user": {"domain": {"name": "账号名"},
        "name": "用户名", "password": "密码"}},"methods": ["password"]}, 
        "scope": {"project": {"name": "cn-north-4"}}}})
    token = token_response.headers.get("X-Subject-Token")
    project_id = json.loads(token_response.content).get("token").get("project").get("id")
    slot_temp = json.dumps(event, ensure_ascii=False)
    slot_info = json.loads(slot_temp)
    poem_name = slot_info["slots"]["poetryName"][0]
    poem_type = type_dict[slot_info["slots"]["poetryType"][0].encode("utf-8")]
    poem_acrostic = slot_info["slots"]["acrostic"][0]
    if (poem_acrostic == "true"):
        poem_acrostic = True
    else :
        poem_acrostic = False
    base_uri = "https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{}/nlg/poem"
    response = requests.post(base_uri.format(project_id),
        headers={"X-Auth-Token": token, "Content-Type": "application/json"},
        json = {"type": poem_type, "title": poem_name, "acrostic": poem_acrostic})
    if response.status_code == 200:
        poem = json.loads(response.text.encode("utf-8"))["poem"]
        return "\n".join(poem)
    else:
        return response.text

注意:

1. 需要修改代码中的账号名、用户名、密码为自己的真实信息(如果是主账号,用户名和账户名相同)

2. 代码中会调用自然语言处理服务的诗歌生成接口,该接口为收费接口,接口详情如下

https://apiexplorer.developer.huaweicloud.com/apiexplorer/debughistory?product=NLP&api=RunPoem

代码主要功能:获取槽位信息,调用写诗接口,返回接口调用结果。

最后点击创建函数按钮:

创建成功后,会自动跳转到函数配置页面。

配置函数

配置函数的超时时间,点击配置页签, 然后将执行超时时间改为10,如下图所示:

配置测试用例

点击右上角的请选择测试事件下拉框中的配置测试事件按钮,如下图所示:

在测试事件输入框中填入:

 {"slots":{"poetryType":["五言绝句"],"poetryName":["秋思"],"acrostic":["true"]}} 

保存测试事件后,点击测试按钮,查看测试结果,测试结果如下:

可以看见报错了,原因是我们还没订阅这个api,接下来去订阅一下

访问 https://console.huaweicloud.com/nlp/#/nlp/overview

找到下图的诗歌生成api,点击开通服务

继续测试就成功了!!!

选择函数回复返回 poem 意图管理页面,选择调用函数回复,在下拉框中选择已创建的函数  poem ,如下图所示:

然后点击页面下方的保存按钮,保存意图所有配置信息。

模型训练发布

写诗技能页面中,进入训练发布页面,点击训练新版本按钮,勾选用户常用问法,技能阈值默认即可。点击确认开始模型训练,训练时长大概3-5分钟。

模型训练完成后,点击发布按钮发布模型。

体验作诗技能

模型发布完成后,即可通过点击机器人管理页面中右上角的对话体验按钮体验写诗机器人。(诗歌类型槽位已配置开启候选项,因此用户可通过点击响应类型进行自动回复。) 下图是一组对话样例:

{
 "poem": [
  "秋思",
  "秋色已寥落,客心空自惊。",
  "残荷余宿露,高柳失寒声。",
  "岁月悲欢异,山川今昔情。",
  "西风动归思,无复听砧声。"
 ]
}

到这里,对话机器人可以生成诗歌了,接下来大家可以结合不同的需求为机器人配置各项技能,实现不同场景下的多轮对话能力。

总结

关于此次的对话机器人实操就到这里了,整个过程挺容易上手,遇到小问题也能自己看文档解决,整个配置和实现过程是非常有趣的,华为云社区的产品也非常强大,基本满足了开发者的需求,继续加油!!

【我的华为云体验之旅】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/309059

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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