简单对话场景搭建与云小蜜接口集成(二)| 学习笔记

简介: 快速学习简单对话场景搭建与云小蜜接口集成。

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

课程地址:https://developer.aliyun.com/learning/course/739/detail/13115


简单对话场景搭建与云小蜜接口集成(二)


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

接下来,我会为大家讲解云小蜜的绘画接口是怎么使用的。为什么要先讲云小蜜的会话接口,因为大家可以假设,假设你已经有了一个开发好的对话机器人,他已经能够进行多轮对话了。那么我们怎么把云小蜜这个机器人的问答系统集成到我们整个的语音对话架构当中呢?所以这里就需要一个系统请求云小蜜的接口,如何将一个硬件已经开发好了的很不错的云小蜜对话机器人提升到你的系统里。

https://help.aliyun.com/document_detail/86145.html?spm=a2c4g.11186623.6.593.23177818TOhO3d

这里有一个代码,这个代码就是如何用阿里云的 SDK 来调用云小蜜的会话 API,以及他的入参是什么样的。

1.SDK 参数

首先给大家先看一下 SDK 参数的讲解。

image.png

比如说,其实这个就是阿里云分配给你的那个AK、SK,这个是只能在你的账号里才能查得到的,每个人会不一样。其他这几个部分是固定的,其实就是请求云小蜜在上海的区域,以及云小蜜的产品代码是 Chatbot,以及云小蜜的Domai,这些都是固定的。

然后在你的请求里,要设置好产品的名称,以及会话借口的调用方式是get方式。并且这里的 Chat 是指你要定的机口名称,因为云小蜜的会话接口只有一个是固定的 Chat,所以这里就写 Chat 就可以。

需要注意的一点,这里一个接口的参数 Utterance,相当于请求的用户的话术,这个是很关键的。什么是用户话术,比如说刚才那句话“买火车票”,这里就应该填写“要买火车票”作为参数。

然后Instanceld后的chatbot-cn-xxxxxxxxxxxx",就是这个假设已经开发好的云小蜜机器人的唯一 Sessionld,这也是一个变化,就是需要在机器人里获取到它唯一的 Sessionld。

这个实现的功能,就是相当于是你作为一个用户,对你的系统说了一句话,然后你的H5页面或者是小程序,将用户的文本请求发送给云小蜜,以这个 Utterance 参数发送给云小蜜,这就发送了一个会话请求。然后云小蜜的会话就会返回给你一个回复。

2.API 参数

⑴[API]Chat 接口

①请求参数

这时我们就可以直接来看云小蜜Chat接口的参数讲解。

首先,我们来看请求参数 action,刚才也说的是 chat,是固定的。

然后 Instanceld,就是刚才那个 Sessionld,这里有具体获取的方式,一会儿也会在产品页面上具体讲。

这里这个 Utterance 就是会话请求用户的输入。

然后这个地方 Sessionld 也是刚才讲过的,是一个很关键的信息。用这个 Sessionld,我们才能维护起一个多轮对话的筛选,才能用它维护起对话上下文。

但是大家可以看到刚才那个代码里没有,在请求里设置 Sessionld,这是为什么呢?

其实是,如果你在请求云小蜜的时候没有设置 Sessionld,那么云小蜜也会自动生成一个给这轮对话,并且作为出参返回给你。如果你想后续继续用这个 Sessionld 维护多轮的话,那么你就可以继续把这个 Sessionld 在第二个请求的时候继续用第一轮云小蜜返回给你的 Sessionld 作为请求输入,当然你也可以手动的在每一轮的时候都输入一个固定 Sessionld。比如说有一个UID生成一个 Sessionld ,在这个多轮对话的每一轮都都将这个 Sessionld 作为请求,这样的话,他也会将这个 Sessionld 作为多轮对话的唯一标识,用来维护这个多轮对话的上下文。

这些就是云小蜜的参数当中具体的一些主要参数,后面会有更多的参数,大家可以后续可以自己去尝试看看相关的文档。

②返回参数

image.png

这里 Sessionld 和上面一样,就是如果你这里有 Sessionld,那么同样的 Sessionld 数值会被访问回来,然后Messageld 相对每一轮在这个 Sessionld 当中,每一轮对话的唯一ld。就是比如说,如果我要买火车票和第二轮对话,说北京,他们都从属于同一个筛选,但是属于不同的ld。然后,第三个,这个 messages 就是比较关键的,这里会包含机器人根据用户这轮请求,理解出来并且他生成的对话。然后具体这个 messages 是一个数组,然后每个message 里有又是什么样的呢?

image.png

首先它有一个 Type,它会告诉你它是文本类型的答案,还是知识类型的答案。如果是文本类型答案的时候,大家可以查看 Text 这个字段。

这个字段里的包含一个 content,就是这轮机器人回复的文本内容、答案以及它是一个什么类型的答案。

因为云小蜜会包含,比如任务型的多轮对话,以及知识库型的单论对话,以及闲聊。所以这个地方其实会告诉你,他是来源于多轮对话还是来源于知识库,还是来源于闲聊。

然后更重关键的就是 content,这里包含的那个机器人回复的话术,比如说“亲请问您从哪出发”,就是这个字段。所以大家在使用云小蜜的接口的时候,基本上用这几个参数就可以构造出一个简单的会话请求了。

首先会话请求前面是一些固定参数,然后 Utterance 写用户的话术,然后用 Sessionld 来维护一个多轮对话,接下来获取到英雄们的返回参数。很关键的是 messageld,它的 type 和 text 是很关键的,text 里的 content 是机器人给用户的答案。

这就是云小蜜绘画接口的入参和初参的一个讲解,大家可以使用参考云小蜜的官方文档里的 sdk 部分以及 chat 接口部分,来尝试调用一下云小蜜的接口。

然后,刚才这些假设,都是假设你已经有一个开发好了的能够进行多轮对话的机器人的前提之下,调用云小蜜的 chat接口,给云小蜜用户的问题,它会返回用户一个答案。

接下来,我们就要深入看看,究竟如何用云小蜜来开发出一个具备多轮对话能力的机器人。刚刚讲过了云小蜜会话接口的使用,接下来来教大家如何用云小蜜来搭建一个对话场景。

 

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

再进入到云小蜜产品页面之前,先如图所示:

image.png

先用一个简单的线框图,来描述描绘一下一个多轮对话的样子。

一般,一个典型的多轮对话,肯定有多个对话轮次,每一个对话轮次都是由用户发起,用户说一句,机器人回答一句,用户说一句,机器人回答一句来组成的。所以在这里用一个简单的线框图就可以描绘出一个多轮对话,比如说这里查天气的场景,用户说“我要查天气”,机器人说“查哪里的天气”,这就是一轮对话。然后接下来开始第二轮,用户说 “北京”,然后机器人回答说“北京天气晴”,这相当于是这个多轮对话中的第二轮对话。所以我们可以简单的理解为一个多轮对话是由多个轮次组成,每个轮次最基本的元素是用户说一句,机器人回答一句。相当于我们用一个简单的模型来把这个多轮对话建出来了。

所以在云小蜜的产品里,也是基于这个模型来对对话进行建模。所以接下来就会给大家展示云小蜜的产品是如何用这个建模概念来构建出一个对话场景。

首先,我们在阿里云控制台首页点开云小蜜,

image.png

我们就会到达云小蜜的控制台首页,

image.png

在控制台首页的话可以看到概览,大家应该目前都是体验版,也就是免费的版本,然后免费版本是可以建一个机器人的,也就是一个聊天说话的对象。并且你所有的问题都可以问这个机器人,机器人都会回答你所有的问题,所以我们要教会这个机器人,赋予它技能,比如查天气、订火车票、操控支撑家居什么的,所以很多事情都要教会这个机器人。

那么接下来我要做的一件事情就是,在这里新建一个机器人,

image.png

比如新建一个机器人,叫训练营机器人,然后我可以选择在线文本机器人,语音导航机器人和语音外呼机器人。

在本次训练营当中,我们可以选择在线文本机器人,然后机器人语言这里选择中文。

image.png

然后创建,创建后发现这里出现了一个训练营机器人,接下来就会教大家如何教会这个训练营技器人做多轮对话的问答。

在云小蜜的产品里,首先,我们要在机器人配置页面找到对话流管理。

image.png 

这个部分就是负责配置机器人进行多轮问答的能力,所以我们去对话工厂。在这里,我们首先看到只是对话工厂的入口界面,

image.png

这里包含有一个对话流列表页面,然后还可以新建对话流。

怎么理解对话流?我们可以理解为,一个机器人人多人对话的一个技能,比如说查询是个技能,买火车票是个技能。技能的意思大概可以理解为,就是机器人通过多轮对话可以帮助用户完成一件任务或者是事件。

比如说查天气,用户通过多轮对话收集到你要查哪里的天气,最终帮你查出这个天气,这就是一个技能。所以我们在设计机器人的时候,可以将一个技能装成一个对话流单元。这样的话,我们可以灵活的控制机器人到底能够做多少事情,实现多少技能。

然后,首先因为云小蜜会默认给大家预制一个查天气的对话流。

image.png

那这个时候先点击给大家看一下,稍后会具体讲解这个对话流的图。

首先,先简单介绍一下下面几个功能按钮的作用,然后让大家有一个感官的认知。然后当你开发了一个对话流之后,它能带给你的效果是什么样的。

首先,假设这时我们已经有一个开发好的对话流,我在这里点击保存草稿,保存草稿就是将当前画布所有的修改保存下来。

然后,点击测试。点击测试的概念就是相当于是把当前的对话流提交到一个测试环境,测试环境可以是类似一个沙盒环境,它对于线上是没有影响的,只存在一个隔离的沙盒环境当中。所以我们可以在这个沙盒环境当中,对我们所开发的对话流程进行测试。

image.png

这时我们发现左边会弹出一个调试窗,调试窗的目的是什么,就是为了模拟我们真实的、在线上的对话。然后我们可以在这里进行调试。比如我先问机器人说“查天气”,然后机器人这里会反问我“请问您要查哪里的天气”,这个时候我会说“北京”,然后这时候机器人就会把北京当前的天气状况告诉我。

这就是一个多轮对话场景,也就是说这个机器人已经具备了一个查天气的技能。

因为首先,我在这里开发了一个对话流程,把它保存并且点击测试提交到了沙盒环境。那这时在调试窗走的就是沙盒环境,就能允许你在沙盒环境跟机器人进行多轮对话,然后进行调试,看效果怎么样。

当你觉得调试 ok 之后,我们就可以点击发布按钮,发布按钮就是上线成功,上线成功意味着当前这个对话流已经从测试沙盒环境被推到了线上环境。我们就可以通过刚才的云小蜜的 Chat 接口来对机器人进行访问,否则的话如果没有点击发布,Chat 接口的线上环境的机器人是不具备查询性这个能力的。就是当你点击发布之后,他才可以做到。

然后,这里还要注意,在机器人配置旁边的会话接口里,有机器人实例 Id,以及 AccessKey 的获取方式,这几个参数就是刚才我们在云小蜜的 Chat 借口当中看到的。

接下来,回到对话工厂。首先刚才在那个 ppt 里,我们可以看到一个用户的一个多轮场景,一个对话场景包括用户说,机器人说,用户说,机器人说。

然后,刚才也说了云小蜜的对话工厂这个产品就是利用这样一个概念来对多轮对话进行建模的。所以,开发一个对话场景所需要做的事情,就是在对话工厂的画布上构建出这样一个流程。

然后,我们到对话工厂看一看,究竟是不是这么回事。

首先,我们可以看到左边栏,这个画布左边有一个节点类型的汇总。

image.png

然后我们可以看到有几种节点。用户说节点,机器人回答节点,机器人回答节点,系统能力节点。

1.用户说节点+机器人想节点

首先,先针对用户说节点,和机器人回答节点。因为刚才已经讲过几点的讲解。接下来再讲解一下机器人想和系统能力节点代表什么。

那首先,直接对着这个查天气的对话流先讲一下,先有一个概念,然后再把机器人想这个技能告诉大家是什么意思。首先我们可以看到

绿色的这个是一个用户说节点。比如说,用户说查天气,这个节点就代表着这个流程里首先用户说查天气,这个时候我选择查天气意图。

image.png

为什么要有一个意图,其实这个意图的概念就是代表用户说的查天气,是代表了他想做一件什么事情,然后我们可以用意图这个概念作为一个单元。然后可以在意图这个单元里写一些用户为了表示查天气可能说的话术,比如说这里1、2、3、4、5条的话术。然后,机器人就会根据这些话术去理解

用户意图。因为这里只配了几条,所有我要是查北京天气,说“查天气”,然后机器人发现 “查天气”这句话跟这些话术里的话术很相像,然后机器人就会认为你表达的意图是查天气。所以机器人就会认为你是查天气的意图,并且将流程流转到这个节点。

接下来我们搞一个回复节点,回复节点就比如说机器人回复天气状况,然后节点名称,配上北京天气晴。然后这样,就会简单的构建出来刚才说的那个一轮。

所以我们只需要做的只是在这个对话工厂的画布上,按照刚才的那个概念,把这个流程建模出来。用户说,机器人说,通过节点的方式把这个构建出来。

这就是两种最基本的节点,接下来讲解一下,机器人回答和系统能力这里的节点是什么意思。

2. 机器人回复节点和系统能力

然后我们看到刚才回答的这个概念图里,比如机器人说“查哪里的天气”,用户回答“北京”。这个其实是机器人在向用户收集一些信息,比如说是买火车票的场景,机器人可能希望向用户收集更多的信息,包括出发地,目的地,然后出发时间这三个信息。所以,如果我们用这种用户说、机器人说、用户说、机器人说的方式,那么要配出这种场景可能会比较复杂。比如我要配机器人说“请问你的出发地是哪里”,用户说“北京”,机器人说“请问您的目的地是哪里”,用户说 “北京”,机器人说“请问您的出发时间”,然后用户说“明天”,然后我们要配好多的这种信息。

但是在云小蜜的产品里,我们通过一个填槽节点就可以完成所有的事情以及信息收集的事情。

image.png 

这个时候会发现在查天气填槽这个节点里,我会告诉机器人要收集查天气意图里 city 这个参数,然后机器人就会在这个节点,持续的跟用户去沟通反问,一直到他收集完所有的槽位,如有两三个,那他们就会会收集到两三个槽位,然后通过话术来收集。

image.png

这里会配置反问话术进行回问,“请问您查哪里的天气”就是一个反问话术。实现的效果就是,比如说我说查天气

然后他就会问“请问您查哪里的天气”,这个时候我再说一个城市,北京或者天津。这就相当于这个是配置一个填槽节点,其实就是为了省略大家把每一个参数的收集过程都配成机器人说和用户说的这个过程,它其实是一个组合节点,是系统默认提供的一个能力,把这个填槽的组合能力配出来了,所以大家就不需要每一轮都配了。

相关实践学习
阿里巴巴智能语音交互技术与应用
智能语音交互,是基于语音识别、语音合成、自然语言理解等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互体验。适用于多个应用场景中,包括智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等。 本课程主要讲解智能语音相关技术,包括语音识别、人机交互、语音合成等。  
相关文章
|
算法 前端开发
钉钉文档协同编辑背后的核心技术原理
有人说,互联网给人类社会带来最深层次的变革是改变了人与人协作的方式,将信息传播的成本大幅降低。身在互联网行业之中,研究信息传播的方式方法,是我们的日常功课。
钉钉文档协同编辑背后的核心技术原理
|
4月前
|
存储 人工智能 自然语言处理
无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
【8月更文挑战第8天】无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
无缝融入,即刻智能[二]:Dify-LLM平台(聊天智能助手、AI工作流)快速使用指南,42K+星标见证专属智能方案
|
4月前
|
人工智能 机器人 数据库
字节推出「Coze扣子」AI Bot 开发平台,无需编程,让 Chatbot 搭建更快捷、低门槛!
字节推出「Coze扣子」AI Bot 开发平台,无需编程,让 Chatbot 搭建更快捷、低门槛!
146 0
|
6月前
|
运维 机器人 开发者
使用阿里云百炼通过appflow模板,组合钉钉机器人搭建个人知识库评测与感想
尝试构建个人助手机制,用阿里云百炼+AppFlow+钉钉机器人,花费两午休时间解决配置问题。百炼appid复制时多出空格致错,文档未提及,耗时排查。应用创建时模型选项限于max, plus, turbo,性价比高的qwen-long未上线。期望尽快修复bug和上线新模型以降低成本。附故障排查截图。
213 1
|
6月前
|
移动开发 文字识别 算法
视觉智能开放平台产品使用合集之如何集成到使用钉钉端的H5应用中
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
7月前
|
数据处理 语音技术
(保姆教程及高级玩法-自定义数据处理)微信同声传译插件-语音识别
(保姆教程及高级玩法-自定义数据处理)微信同声传译插件-语音识别
85 0
|
缓存 自然语言处理 物联网
|
机器学习/深度学习 自然语言处理 算法
一个中心+三大原则 -- 阿里巴巴小蜜这样做智能对话开发平台
        在阿里巴巴智能服务事业部的X蜂会上,小蜜北京团队的高级算法专家李永彬(水德)分享了小蜜智能对话开发平台的构建,围绕平台来源、设计理念、核心技术、业务落地情况四大维度讲述了一个较为完整的智能任务型对话开发平台的全景。
4990 1
|
移动开发 自然语言处理 小程序
简单对话场景搭建与云小蜜接口集成(一)| 学习笔记
快速学习简单对话场景搭建与云小蜜接口集成。
简单对话场景搭建与云小蜜接口集成(一)| 学习笔记
|
存储 自然语言处理 搜索推荐
简单对话场景搭建与云小蜜接口集成(三)| 学习笔记
快速学习简单对话场景搭建与云小蜜接口集成。
简单对话场景搭建与云小蜜接口集成(三)| 学习笔记