谢谢...,DuerOS开放平台的2020

“逝者如斯夫,不舍昼夜”,这一年,DBP(DuerOS Bot Platform)作为DuerOS 的技能开放平台有哪些变化呢?

DBP的小伙伴们非常勤勉,全年共上线了82个大小功能,如果这一年按251个工作日来计算的话, 相当于每三天发布一个功能,真实地实现了“小步快跑”的敏捷性目标,甚至还有些超出预期,这是一件令人欣慰的事。

今年的重心在DuerOS 技能开放平台的基础架构上,侧重于平台的效率、稳定性和可用性。随着DuerOS 多模态交互的演进,DBP将端技能的引入效率提升了65%以上,而且具备了可管理性的流程。通过对ASR 语言模型的例行优化,使得ASR 的准确率和交互满足度都有了大幅的提升。

技能的上线部署效率提升了75%以上,为实时上线构建了基础框架。DBP 通过提供公用资源服务的方式,将DuerOS 有屏设备的整体性能提升了数百毫秒。确立了第三方技能和DBP 平台自身的整体监控机制,为提升系统的稳定性奠定了坚实的基础。更重要的是, 业务平台、运营平台和数据平台这三架马车的形成,是DBP 沿着平台完备性的方向前进了一大步...... 所有的这些,都是团队付出的回报,“不积跬步,无以至千里;不积小流,无以成江海。”。

那么,有哪些功能特性是DBP 平台的开发者们可以直接看到并使用的呢?

1. 开发者中心

如《在校大学生能成为DuerOS 的独立开发者吗?》所述,DuerOS 的技能开发是从开发者注册开始的,DBP 对开发者的注册流程进行了优化,对个人中心进行了调整,开发者可以从DBP的官网方便地访问个人中心,浏览/修改注册信息,同时访问财务中心,阅读站内信等等。

开发者注册

原来,在开发注册申请认证的时候, 一般会在1~2个工作日内由DBP运营团队手工审核完成,开发者在审核中处于等待阶段,及时性较差。现在,面向个人开发者,通过使用身份证的AI识别,可以在5分钟内完成注册审核,提升了开发者的体验。当然,对于AI无法正确识别的证件,依然保留了人工审核流程。

同时,开发者在完成认证的时候可以选择渠道,从而通过数据统计可以计算各渠道获得开发者的梳理,为以后各种开发者拉新活动的评估奠定了基础。

开发者技能的可用性数据呈现

在技能->发布管理->技能数据页面新增了(昨天/最近7天/最近30天)的稳定性平均值,并且在数据趋势下显示了(最近7天/最近30天)的详细图表,如果在某一天未显示数据则呈现当天未记录到数据。

可用性数据是面向开发者有服务部署的技能,哪些零编程的技能暂不提供可用性的数据呈现,关于零编程的DuerOS 技能开发,可以参考《DuerOS的零编程技能实现》。

开发者的技能转移

一种常见的场景是,很多开发者希望将自己的部分技能转让/售卖给另外的开发者;另外,给企业做外包的开发者,在完成外包任务后,将技能转移给企业开发者的账号,这些都涉及了开发者的所有权转移问题。

开发者的技能转移功能在 DBP 运营平台上线在一定程度上解决了这些问题。作为第一阶段,技能的开发者需要发邮件到dbp-service@baidu.com,邮件内容包括:

1)明确技能的名称和技能的ID

2)  明确该技能原来的所有者名称/Passport ID/手机号

3)明确该技能目标的所有者名称/Passport ID/手机号

4)DBP 运营同学收到邮件后,审核确认后,操作技能转移,当天即可生效。

开发者论坛迁移到小度商城的社区

在多方的努力下,DBP 平台的开发者论坛迁移到了小度商城的社区, 保持了开发者与DBP 技术及运营团队沟通的一个空间。同时,小度商城原来的社区面对的是广大DuerOS终端客户,DBP 原来的论坛是面向广大开发者, 现在将二者结合起来,还可以促进更为广泛的交流。

另外,基于小度商城社区的能力,DBP的开发者论坛也终于可以通过M站来交互了!

2. 财务中心

盈利是商业的本质,能否赚钱是一个生态系统是否健康发展的关键因素,DBP平台通过对接小度商城的对账能力,为开发者通过DBP 提现并获得收入提供了便利。

同时,对账系统是其中的一个关键要素。DBP平台财务中心的重构上线使所有开发者都可以更加清晰方便地看到自己技能的详细交易数据,在一定程度上提升了数据的实效性。

也就是说,在DBP开发者平台的财务中心,开发者可以查看自己的收入和提现详情,但是有的时候商户和我们公司的账单结算比例有调整,例如用户退款等逆向流程,这个时候需要对已生成的账单需要修改。如果有商户的结算比例有调整,可以自动完成冲销逻辑,利用小度商城的结算平台,DBP可以自动完成冲销逻辑。并且,DBP增加了前置验证逻辑,不符合冲销条件的订单(如:已提现) 可以阻止冲销 并 获得订单信息,并及时进行干预。

3. 功能特性

如《AI 语音交互开放平台的构建与演进》所述,DBP 的功能包括运行时领域和技能生命周期管理领域的特性。从适用性的视角来看,包括无需审核即可普遍适用的功能和需要通过审核才能使用的功能,后者相当于很多云平台中的公测版本,在这里称为“Preview feature”,即预览版功能。

预览版特性的机制

通常,开发者希望早点使用到 DuerOS 的新特性,但涉及到内测的话,流程相对较长。另一方面,DuerOS 推出的新特性(例如 全双工,DPL2.0 等)由于缺乏广泛的开发者体验,也不能及时对外开放。

DBP 的 Feature-Previewed特性是网站上对开发者开放预览特性,开放者可以选择并申请使用该预览版的特性,在DBP 运营平台审核后,即可进一步对开发者提供重点的支持和上线。在预览特性相对成熟之后,将升级为公开版特性,无需审核,全面开放给广大开发者们。

第一个上线的预览版特性是DPL2.0,在经过6周的preview feature 洗礼之后,已经升级为公开版本了,任何DuerOS 的技能都可以自由地使用DPL 2.0 的特性。

DPL 2.0 的功能特性

对有屏终端的技能而言,目前,DPL是诸多DuerOS 技能开发者的优先选择。DPL 2.0 不是DPL1.0的简单升级,从引擎到类CSS,从命名空间到诸多组件,从UI control 到form 表单,从屏幕自适应到支持手势,DPL 2.0 都给予了强大的支持。

DPL2.0 本地计算引擎

开发者在使用DPL开发第三方技能的时候,经常会遇到这样的场景:

  • —— 根据某些用户行为,进行计算数据,然后显示不同的页面

  • —— 根据某些条件,展示不同的效果等

DPL2.0本地计算引擎的上线有效地解决了这些问题。目前,DPL2.0 本地计算引擎主要包括两部分:表达式和条件执行。表达式提供了本地计算引擎的计算能力,实现了数据的单向绑定,基于表达式可以实时更新所绑定的界面渲染(如本地局部更新)。条件执行在当前的DPL2.0中提供了3个指令:dShow,dWhen和dFor,利用它们可以实现频繁地切换组件,实现渲染并执行组件,本地生成系列组件等等。具体参考:

  • http://xiaodu.baidu.com/saiya/dpl/2.0/runtime/demand/demand.html

  • http://xiaodu.baidu.com/saiya/dpl/2.0/runtime/expression/expression.html

DPL 2.0 弹幕组件 和 通用浮层

不论是炙手可热的直播技能,还是其他需要多人参与的服务,弹幕都是一种喜闻乐见的展示方式。为了更好的提升DuerOS技能的用户体验,DPL2.0 推出了弹幕组件,详情参考http://xiaodu.baidu.com/saiya/dpl/2.0/components/extend/Barrage/Barrage.html#demo。

在Web应用和手机app中,对话窗口一般分为模态(modal)和非模态(modeless)两种,窗口重叠是一种常见的表现方式。而在原来基于DPL 的技能中,均需开发者自行实现,开发较为繁琐,效率较低。

通用浮层特性上线DPL2.0相对有效地解决了这个问题。该特性提供了多类全局的浮层,并可以通过提供简单的调用方式、内容更新,来完成技能模板与用户使用过程中更为丰富的交互如信息提醒或消息推送能力,包括Modal 模态窗、Toast 提示、Loading 进行态等,详情参见http://xiaodu.baidu.com/saiya/dpl/2.0/layers/introduction.html。

DPL2.0 的本地存储

如果技能的技术实现空间来分类的话,DBP上的技能基本可以分为DPL技能(包括模版)和端技能(如APK/H5/小程序)两大类。DPL 的推出已经极大地丰富了DBP技能在DuerOS有屏设备上的表现能力,但是基于DPL的技能,几乎每次的用户交互都要经过DuerOS 主干链路通过访问后台的bot来完成。DPL2.0 已经实现了一定程度的本地计算,然而没有本地存储,导致了开发者并不能充分发挥本地计算的能力,无法进一步提升技能的用户体验。

本地存储特性上线DPL2.0 相对有效地解决了这个问题。每个DPL2.0的技能都可以有自己基于相同 botId 维度的本地缓存,可以通过相关 API 对本地缓存进行读写和清理。同一个用户使用同一个DPL技能可用的本地存储空间上限为 1MB 。从此,开发者有了类似H5中localstorage的能力,DPL技能也有了更大的表现潜力。(注:该能力仅在设备端 sp44 及以上版本支持)

全双工 的Preview feature

智能音箱在一次交互之后,一般不好判断您是否接下来还会和它交互,所以,常见的做法是每次交互都要唤醒它,这相当于半双工的通信方式,当然,模糊一点的话,也可以认为这是“单工”。

如果每一次交互都带有唤醒词,尤其在多轮对话的时候,显得不那么智能,能不能在音箱说话的时候,我也同时说话来自由问答呢?实现这一功能的方式,就是智能语音交互中的全双工。

全双工免唤醒技术,是指一次唤醒即可实现连续对话,还能在与他人对话的同时互不干扰地实现人机交互。经过多方的努力,全双工的这一特性已经作为“Preview feature”在DBP 平台上线了,经过DBP 运营同学的再次审核之后,第三方开发者就可以有效地在技能中使用全双工了,可以参考《聊聊“全双工”》。

闹钟提醒特性与小技能模版的增强

定时提醒是每个智能音箱的必备功能,基于DuerOS原有实现的基础上,DBP实现闹钟提醒功能面向开发者的开放。用户在授权许可后,即可在音箱上定制闹钟提醒功能了。技术详情请参见:https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-user-info/reminder_markdown 。

小技能是无需要编程即可实现的DuerOS 技能,目前,开发者共上线了数千个小技能。但是,小技能的兜底话术是由小技能的模版bot默认生成,反馈比较枯燥,效果并不理想。现在,开发者者可以在DBP 平台自定义兜底话术,可以在较大的程度改善小技能自动回复的枯燥性。

DBP技能内推送机制

开发者在开发DuerOS技能的时候,经常会遇到需要推送的场景,例如需要从技能侧主动推送消息,提示用户当前的特殊状态;也经常会遇到需要异步调用的场景,例如银行的后台系统需要较长的处理时间才能响应用户的请求,尤其在小额支付的时候,但DuerOS 对响应的时间是有时间限制的,超时会导致会话中断,从而技能无法持续使用。

DBP开放平台在今年向开发者开放了技能内推送的机制,技能内推送意味着开发者只能在用户的会话周期内,调用推送接口向设备端推送相关内容或协议。鉴于异步推送可能会骚扰用户,造成不良的用户体验,异步推送机制需要DBP 运营平台的审核,需要使用平台提供的模版和指令。审核通过后,开发者就可以调试推送接口,进而线上使用了。

4. 新技能类型——基于Android App 的端技能

端技能是今年DuerOS 发展的一个重点方向之一,目前作为preview feature,已经向广大开发者有条件的开放了。

App 端技能的开发流程

由于是平台的预览版特性, 所有App 技能的接入需要二次审核,简要流程如下:

  1. 开发者在DBP平台勾选 agreement,创建apk 技能后,DBP 的运营团队进行审核

  2. 审核通过后,开发者集成bot-client-sdk ,在DBP 平台自助下载Debug rom 或调试密钥,在自己的设备上完成调试。

  3. 开放者完成调试后,上传apk包提交上线

  4. DBP 平台自动完成安全审核,DBP 的运营团队完成功能审核和性能测试

  5. 测试通过后,例行上线

目前,L1的端技能可以在2天内完成引入并上线,L2~L4的断技能可以在2周内完成引入并上线。

可视化的安全审核与上线粒度的拆分

安全是DuerOS 的郑重承诺,APP端技能的安全审核是上线过程中的重要环节。APP 端技能的可视化安全审核是指,开发者在上传APK包的时候通过安全扫描服务可以完成审核,可以在DBP 平台清晰地看到安全扫描的结果,了解拒绝或通过的技能审核状态。

开发者在升级APP 端技能的时候,经常会遇到只升级APK客户端包,或者只升级技能NLU的情形。目前,DBP 开放平台实现了APK 客户端与技能词典的解耦上线,支持三种形式APP 端技能:

1)只升级APK 包

2)只升级APK 技能的NLU

3)既上线APK包又上线技能词典

支持手势配置与内容直达

视觉交互是多模态交互中重要的一种交互方式,DBP 支持APK 技能的手势配置后,对于已上线的技能可以随时生效,时效性从小时级提高到了分钟级。

内容直达是L3技能向L4技能演进的一种重要的方式,面向query的APK 技能内容直达的上线有效解决了这一问题,可以是apk技能与其他自定义技能一样,可以通过内容直达的方式直接使用apk 技能。

APP 端技能的调试模式

开发者可以在DBP 平台输入自己设备的SN, 并在自己的设备上语音/点击确认后,即可完成Debug Rom 的OTA安装,并从DBP 平台得到adb key 后,即可通过ADB shell 调试APP 端技能了,整个调试流程的建立只需10分钟左右。

本着工匠精神,对SP45以后的版本可以在2分钟左右完成,这是通过APP端技能调试密钥的动态分发实现的。核心机制是面向开发者在DBP平台提供的设备SN,生成相应动态的密钥。开发者通过DBP 的debug bot 进行交互,设备端验证成功后即可进入调试模式。

APP 端技能的自有物理Bot

很多的APP端技能大都采用了DBP 平台作为代理的解决方案。这样的L3技能工作方式如下:

  1. 用户query/点击,对应的意图或事件派发到DBP

  2. DBP分发到对应APP端技能的逻辑bot

  3. 该逻辑bot 返回APP端技能所需的NLU 结构化数据

  4. 有屏端上的apk 接收到数据后,发送到自己的业务服务器处理

  5. 业务服务器返回数据,并在APP上展示并播放

从开发者的角度看,非常不方便使用DBP平台的其他能力。另外,在链路上多了一次无线网络的连接和数据传输(1个RTT),增加了数十毫秒以上的性能损耗。APP端技能挂载开发者自有Bot 上线DBP平台有效地解决了这一问题,开发者可以像以往开发一般的自定义技能那样部署自己的物理bot了。

此外,关于App 端技能的更多信息可以参考《一个安卓App,如何成为DuerOS 上的技能应用呢?》。

5 性能及体验的优化

作为一个开放平台,面向技能的用户体验优化主要是通过ASR 的进一步提升来提高用户的交互满意度,而性能优化则主要是通过对多媒体资源的加速来实现的。

技能的ASR优化

DBP 技能名称的ASR优化相当于提升了技能唤醒准确率,通过消息队列的方式实现了平台例行任务,实现了唤醒名称的及时优化。

各种技能都会遇到query的ASR识别不准确导致技能无法满足的情况,DBP 技能内query的ASR优化有效地解决了这一问题,实现了每天例行的线上生效。

多媒体资源加速

DBP通过统一配置,将开发者上传的热点媒体资源映射成CDN地址,从而在技能中引用CDN地址,提升了设备的访问速度,有效地解决了多媒体资源的体验。

由于在有屏或其他应用展示图标的时候,需要展现气泡图,一般都是设备端从云端获取图片后,在本地处理,再呈现出来,增加了上百毫秒左右的端上性能损耗,在多图标展示时,效率更低。云端处理功能上线后,对DBP平台所有多媒体资源进行了数据清洗处理, 设备端可以直接从云端获取经过处理后的多媒体资源的CDN地址,获得了数百毫秒以上的性能收益。

6 开发效率

在开发者的技能开发效率中, DBP 主要在调试效率和SDK 的演进两个方面有了进一步的改进。

调试效率

当开发者开放的技能意图、槽位和常用表达比较多的时候,例如50个意图,每个意图20个常用表达,甚至更多的时候,都可以顺畅地debug 了, 也为 开发者更充分的使用DuerOS 来做NLU打下了基础。

开发者在DBP 平台开发基于DPL 2.0 开发第三方技能的时候, 调试一直被诟病,DPL Document 出现了问题难以快速定位。DPL 2.0 错误反馈机制的上线相对有效地解决这个问题,在DBP平台的开发环境(打开调试技能模式下),DuerOS 的技能开发者通过DPL 2.0 错误反馈机制快速定位并展示问题,以及进一步排查错误。DPL2.0错误反馈机制提供了多种不符合执行预期的页面反馈,详情参考http://xiaodu.baidu.com/saiya/dpl/2.0/feedback/feedback.html 。

开发者在开发第三方技能的时候,经常遇到某些语句ASR识别正确的情况,尤其是某些专有名词,导致DA无法解析出对应的意图,从而无法调试。开发者Debug 环境的ASR 优化上线,使开发者在调试阶段即可在15分钟内完成技能中语料的ASR优化,并且优化后的模型可以在开发者的技能上线时同步到线上环境,可以极大地提高DBP 技能的开发效率。

Bot Nodejs SDK 2.0.0 更新发布

Bot Nodejs SDK 2.0.0 已经在github的更新发布(https://github.com/dueros/bot-sdk-node.js),其中的主要更新点如下:

1)全面支持DPL 2.0

2)实现的新增feature 如下:

  • VideoPlayer.ClearQueue

  • Display.RenderAlbumList

  • HintHint,Buy 指令 ,SelectSlot 指令 ,SelectIntent 指令

  • StreamResponse.SendPart指令

  • 商品管理API

  • 获取用户信息 API

其他编程语言的Bot SDK 版本也在路线图上了,目标是至少支持5种编程语言:Java,Javascript,PHP,Python 和Go。

相比于DuerOS 的开发者们, DBP 的演进可能算不了什么,因为开发者们才是DuerOS 生态系统的中流砥柱。真心感谢DuerOS的开发者,是大家在DBP 平台上通过自己的双手为DuerOS 的最终用户们带来了生活上的便捷和欢乐!

“士不可以不弘毅,任重而道远”, 新的一年, 让我们携手前行,明天会更好!

(0)

相关推荐