课时1:简单对话场景搭建和云小蜜接口集成(一)|学习笔记

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 快速学习课时1:简单对话场景搭建和云小蜜接口集成

开发者学堂课程【3节课走进云小蜜产品:课时1:简单对话场景搭建和云小蜜接口集成】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/298/detail/3495


课时1:简单对话场景搭建和云小蜜接口集成(一)


内容介绍:

一、简介

二、对话机器人的基本架构

三、多轮对话的概念

四、云小蜜的会话接口

五、运用云小蜜搭建一个对话场景

六、开发新场景实例

七、总结


一、简介

本课程主要讲述简单对话场景搭建与云小蜜接口集成,内容主要包括两部分,第一部分是如何使用云小蜜进行简单对话场景搭建,也就是如何使用云小蜜开发对话平台,第二部分是关于如何集成云小蜜的会话接口。以下是课程大纲:

1.对话机器人的基本架构

2.多轮对话的概念

3.云小蜜会话接口的使用讲解

4.用云小蜜来搭建一个对话场景

5.用函数能力来扩展机器人对话能力

6.总结

首先会介绍对话机器人的基本架构,使开发者能够从整体上有感官,认识自己需要开发什么架构的应用。第二部分会介绍多轮对话的概念,使用户对多轮对话有初步了解,第三部分会介绍云小蜜会话接口的使用,包括出入讲解。第四部分会引导用户使用云小蜜的产品开发简单的对话场景。第五部分会讲解如何使用云小蜜当中自带的函数能力,扩展机器人的对话能力。最后会进行总结,总结本课程所讲述的内容以及引导用户利用自己的想象力赋予机器人更多的能力。


二、对话机器人的基本架构

对话机器人基本架构如下:

image.png

基本架构是用户发起请求,假设用户发起语音请求,首先请求 ASR 系统将用户的语音转成文本,然后将文本内容转发给 chat bot。此时会进行用户语言的理解,生成答案,再将生成回复的文本转给 TTS 系统,TTS 进行语音合成,将最终合成的语音返回给用户。在 chat bot 中通常会有三个步骤,分别是 DLU 自然语言理解、DM 对话管理、NLG 自然语言生成,当用户的请求从语音转成文本之后,Checkbox 会首先试图理解这句话的意思,然后进行对话管理。从而决定下一步采取的措施,第三步,根据动作生成回复,最后将回复的文本发送到 TTS,再转成语音交汇给用户,所以开发者在开发对话机器人的小程序或 h5页面时,此时开发页面在用户层面,在 h5页面输入语音请求,此时的语音信号无论是流逝的还是短文件,都会将其传到 asr 系统,然后转成文本,再将文本作为输入请求,输入给 chat box 系统,接收到之后在内部进行处理,输出的是一段文本,再调用 tts 系统生成语音转给用户,以上是对话机器人的基本架构。其中云小蜜在当中所扮演的角色就是 chatbot。云小蜜内部包含所有需要的步骤:DLU 自然语言理解、DM 对话管理、NLG 自然语言生成,输入输出分别是以文本形式的用户请求以及文本形式的机器人答案。以下是云小蜜所扮演的角色:

image.png

三、多轮对话的概念

如图所示,黄色部分人所说的话,白色部分是机器人的回复:

image.png

用户说买火车票,机器人就会问从哪出发,用户回答北京,机器人继续问想从哪天出发,用户说明天,机器人继续问想坐火车从北京到哪里,用户回答杭州,此时机器人为用户找到了从北京到杭州明天出发的火车票。以上就是典型的多轮对话,多轮对话的典型特征区别于普通单轮对话,多伦对话双方都能够基于对话的上下文做理解。例如案例当中用户说出北京两个字,机器人能够得知用户正在回答机器人上一个问题:“从哪儿出发”,如果是单轮对话,用户说北京,机器人就不会理解。如果是两个人的对话,一开始就说北京,那么另外一个人也无法理解。所以多伦对话当中最重要的概念就是对话上下文。对话上下文包含对话双方的对话历史以及当前对话进行到的状态。

当前对话进行的状态是指机器人询问从哪里出发,用户回答北京。在该步骤的状态就相当于是机器人询问一个信息,而用户在回答该信息。回答完该信息之后,会根据当前对话状态判断出已经回答“从哪儿出发”这个问题。当前对话状态就是告知机器人应该询问下一个问题,下一个问题就是“哪天出发”。以上就是对话上下文当中保留的信息。在多轮对话当中,使用 session 作为标识来区分上下文对话内容。Session可以作为一通人机对话的一个标识单位。每一个 session 赋予一个 session ID。当session ID 不变的情况下,就是指用户和机器人一直处于一个对话之中。机器人就会一直记着用户在当前 session 当中的上下文。以上就是多轮对话当中 session 的概念。Session ID 才能让机器人得知当前用户对话处于哪个 session 当中,该用什么样的上下文,理解用户该轮的对话。


四、云小蜜的会话接口

如图所示:

image.png

假设已经拥有开发好的云小蜜对话机器人,已经能够进行多轮对话,如何将该云小蜜机器人的问答系统集成到整个对话架构当中,此时就存在系统请求云小蜜的接口。代码如下:

public static void main (string[ ] args ) throws Exception {

string accountAccessAK = "XXXXXXXXXXXXXXXXXX";

String accountAccessSK ="XXXXXXXXXXXXXXXXXX";

String popRegion = "cn-shanghai" ;

String popProduct = "Chatbot";

String popDomain = "chatbot.cn-shanghai.aliyuncs.com";

DefaultProfile.addEndpoint (popRegion,popProduct,popDomain) ;

IclientProfile profile = DefaultProfile.getProfile(popRegion,accountAccessAK,accountAc);

DefaultAcsclient client = new DefaultAcsClient( profile);

//固定入参

CommonRequest commonRequest = new CommonRequest( );

commonRequest.setSysProduct( "Chafbot" ) ;

commonRequest.setSysMethod ( MethodType.GET);

//根据 AP 工会有变化

commonRequest.setSysAction ( " Chat " );

commonRequest.setSysversion ( " 2017-10-11" );

commonRequest.putQueryParameter( "utterance", "hi");

//机器人 id

commonRequest.putQueryParameter ( " InstanceId","chatbot-cn-XXXXXXXXXXXX" );

CommonResponse commonResponse = client.getCommonResponse ( commonRequest) ;

System.out.println ( commonResponse. getData( ) ) ;

}

代码是 JAVA 的事例,代码内容就是如何使用阿里云的 sdk 调用云小蜜的会话 API。

参数的讲解:

以下是分配给用户的ak和SK,就是 access k 和 security key:

string accountAccessAK = "XXXXXXXXXXXXXXXXXX";

String accountAccessSK ="XXXXXXXXXXXXXXXXXX";

在账号当中能够查询获取。每个用户不同,其他几部分是固定的,请求云小蜜在上海的区域:

String popRegion = "cn-shanghai" ;

以下是云小蜜的产品代号代码,产品代码是 Chatbot:

String popProduct = "Chatbot";

以下是云小蜜的 domain:

String popDomain = "chatbot.cn-shanghai.aliyuncs.com";

以上内容都是固定的,在请求当中需要设置好产品名称以及会话接口调用方式,调用方式是 get,Chat 指的是要调用的接口名称。因为云小蜜的会话接口名称只有一个,是固定的,所以此时只需要写 chat 即可。需要注意的是 utterance,utterance 是请求用户的话术较为关键。例如在案例当中,用户说“要买火车票”,该参数就需要填入 “要买火车票”,作为参数传递给机器人。InstanceId Id 就是在云小蜜已经开发好的机器人的唯一 ID 是变化的,需要在机器人当中获取到 ID,以上就是简单的云小蜜会话机器人请求调用方式。实现的功能是作为一个用户,用户对系统说了一句话,h5页面或小程序将用户的请求文本以及参数发送给云小蜜,此时相当于发送了一个会话请求,接下来就需要了解云小蜜的会话技术会返回怎样的回复。

对于云小蜜 chat 接口,首先入参:

action 是chat,是固定的;

InstanceID,也就是机器人实例 ID,具体获取的方式:

机器人实例 ID。登录云小蜜控制台,左侧面板选择开发者->基本配置,查看机器人示例信息,可获得该实例ID。Utterance是会话请求用户的输入,SessionID 是一个关键信息,使用 session ID 才能够维护起多轮对话,才能用其维护上下文。但在代码当中没有设置 session ID,因为在请求云小蜜的时候没有设置 session ID,云小蜜就会自动生成一个 session ID 赋予该轮对话,并且作为初始参数返回给用户。如果后续继续使用该 session ID 维护多轮对话,就可以继续把该 session ID 在第二个请求时使用第一轮云小蜜返回的 session ID 作为请求输入,也可以手动的,在每一轮时都输入一个固定 session ID,例如使用 UUID 生成一个 session ID,在多轮对话的每一轮都将该 session ID 作为请求,系统也会将该 session ID 作为多轮对话的唯一标识使用,用来维护多轮对话的上下文。

以下是云小蜜当中的主要参数:

Action

String

系统规定参数,取值:Chat

Instanceld

String

机器人实例 ID。登录云小蜜控制台,左侧面板选择开发者——>基本配置,查看机器人示例信息,可获得该实例 ID。

Utterance

String

机器人访问者的输入。

Sessionld

String

会话 ID,用于标识一个访问者的会话和保持上下文信息。

对于一个新的访问者,首次调用 Chat 接口时无需传递此字段,机器人会开启一个会话,并在 Chat 接口的响应中返回该会话的 Sessionld。

对于该访问者的后续轮次的会话,调用 Chat 接口时传递当前会话的 Sessionld,机器人即可基于  Sessionld  继续该轮次会话。

对于其他参数,用户可以自行查看相关文档。返回参数:                                                                                              

名称

类型

描述

Messageld

String

 本条会话应答消息的 ID

Sessicnld

String

本次会话的 ID

Messages

Array of Message

消息的列表

Session ID 与之前相同。如果在输入参数当中有 session ID,那么同样的 session ID 数值就会被返回。message ID,是在该 session 中每一轮对话的唯一 ID。例如第一轮对话当中“需要买火车票”和第二轮对话当中“北京”,都属于同一个 session,但是属于不同 message ID,Messages 是较为关键的参数,该参数当中会包含机器人根据用户该轮的请求的理解,以及生成的对话。Messages 是一个数组,每个 messages 当中内容如下:

名称

类型

描述

Type

String

本条消息的类型 Text+ 文本, Recommend=知识库关联问题推荐,Knowledge=知识库关联问题

Text

Text

当 Type 为 Text 时,此字段包含机器人返回的 Text 对象

Knowledge

Knowledge

当 Type  为 Konwledge 时,此字段包含机器人返回的 Knowledge 对象

Recommends

Array of Recommend 

当 Type 为 Recommend 时,此字段包含机器人返回的 Recommend 的列表

首先 type 会给出答案,是文本答案还是知识类型的答案?如果是文本类型的答案就可以查看 text 字段,text 字段当中包含 content,也就是机器人回复的文本内容以及是什么类型的答案。云小蜜包含任务型的多轮对话以及知识型的单轮对话以及闲聊。此时会告诉用户来源于多轮对话还是来源于知识库问答还是来源于闲聊,最重要的是 content,content当中包含了机器人回复的话术。所以用户在使用机器人会话接口时,用以上几个参数就可以构造出一个简单的会话请求,首先给云小蜜发送会话请求,前面三个参数固定。Utterance 是写用户的话术,Session ID 用来维护多轮对话,获取到云小蜜的返回参数。关键的是 message 当中的 Text,text 当中的 content 是机器人给用户的答案。以上就是云小蜜会话接口的入参和出餐的讲解,可以使用参考云小蜜官方文档当中的 sdk 部分以及 chat 接口部分,尝试调用云小蜜接口。假设拥有了一个开发好的能够进行多轮对话的集群前提之下,调用云小蜜 chat 接口,可以让云小蜜提出问题,然后云小蜜会给出答案。深入其中研究云小蜜如何能够开发出一个具备多轮对话的机器人。

相关实践学习
阿里巴巴智能语音交互技术与应用
智能语音交互,是基于语音识别、语音合成、自然语言理解等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互体验。适用于多个应用场景中,包括智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等。 本课程主要讲解智能语音相关技术,包括语音识别、人机交互、语音合成等。  
相关文章
|
5月前
|
运维 机器人 开发者
使用阿里云百炼通过appflow模板,组合钉钉机器人搭建个人知识库评测与感想
尝试构建个人助手机制,用阿里云百炼+AppFlow+钉钉机器人,花费两午休时间解决配置问题。百炼appid复制时多出空格致错,文档未提及,耗时排查。应用创建时模型选项限于max, plus, turbo,性价比高的qwen-long未上线。期望尽快修复bug和上线新模型以降低成本。附故障排查截图。
180 1
|
6月前
|
数据处理 语音技术
(保姆教程及高级玩法-自定义数据处理)微信同声传译插件-语音识别
(保姆教程及高级玩法-自定义数据处理)微信同声传译插件-语音识别
76 0
|
移动开发 自然语言处理 小程序
简单对话场景搭建与云小蜜接口集成(二)| 学习笔记
快速学习简单对话场景搭建与云小蜜接口集成。
简单对话场景搭建与云小蜜接口集成(二)| 学习笔记
|
Oracle 前端开发 关系型数据库
宜搭认证课程-数据报表设计(三)| 学习笔记
快速学习宜搭认证课程-数据报表设计。
宜搭认证课程-数据报表设计(三)| 学习笔记
|
BI 数据库 开发者
宜搭认证课程-数据报表设计(一)|学习笔记
快速学习宜搭认证课程-数据报表设计(一)
752 0
宜搭认证课程-数据报表设计(一)|学习笔记
|
缓存 自然语言处理 物联网
|
存储 JSON 自然语言处理
课时1:简单对话场景搭建和云小蜜接口集成(三)|学习笔记
快速学习课时1:简单对话场景搭建和云小蜜接口集成
175 0
课时1:简单对话场景搭建和云小蜜接口集成(三)|学习笔记
|
自然语言处理 机器人 测试技术
课时1:简单对话场景搭建和云小蜜接口集成(二)|学习笔记
快速学习课时1:简单对话场景搭建和云小蜜接口集成
201 0
课时1:简单对话场景搭建和云小蜜接口集成(二)|学习笔记
|
移动开发 自然语言处理 小程序
简单对话场景搭建与云小蜜接口集成(一)| 学习笔记
快速学习简单对话场景搭建与云小蜜接口集成。
简单对话场景搭建与云小蜜接口集成(一)| 学习笔记
|
存储 自然语言处理 搜索推荐
简单对话场景搭建与云小蜜接口集成(三)| 学习笔记
快速学习简单对话场景搭建与云小蜜接口集成。
简单对话场景搭建与云小蜜接口集成(三)| 学习笔记
下一篇
无影云桌面