阿里云智能服务机器人“云博士”技术架构揭秘
云计算和人工智能,就像一个水池的入口和出口。阿里云推出的人工智能产品——阿里云ET在各行业持续发力,陆续推出了“工业大脑”“城市大脑”“医疗大脑”“环境大脑”,其中“工业大脑”帮助阿里云在“2017可信云大会”上斩获唯一的工业智能云奖,“医疗大脑”在国际权威肺结节检测大赛中夺得世界冠军,并打破世界纪录。阿里云ET不仅在这些惠及民生的项目上让人工智能绽放光芒,在阿里云的内部,阿里云ET也有非常不错的应用场景。
近几年,阿里云作为国内云计算领域的领头羊,随着用户量的急剧上升,产品规模的迅速扩大,其中在服务领域,用户的咨询量随之而急剧攀升,如何利用有限的服务资源去高效解决用户的问题成了行业的一大难题。2016年年初,阿里云把ET应用到客户服务领域,启动了智能服务机器人“云博士”项目, 2016年11月,“云博士”正式对外提供服务,通过大数据分析去猜测用户可能遇到的问题以及提供秒级的智能问答服务。
阿里云ET是如何应用到机器人“云博士”中的?
云博士技术架构主要分为四层:portal层,智能服务引擎层,数据持久层,外部数据来源层。同时有管控台支持云博士的语料编辑、数据运维、数据闭环。
1. portal层
提供界面让用户与云博士进行交互,包含pc端、app端、钉钉端。为用户提供pc和app两个途径和云博士进行便捷交互,钉钉端是把云博士作为机器人加入到了钉钉群,用户只要在群里添加云博士机器人就可以@云博士进行提问,还有一个方式就是在钉钉上直接和云博士进行一对一的会话。
2. 智能服务引擎层
智能服务引擎层是云博士最核心的一层,提供portal层接口调用,使得portal层只需要关注input和output,所有核心的逻辑都在引擎层进行处理,引擎层主要分为在线响应和离线分析两部分,引擎层有几个重要的模块:
- 人工智能算法:当用户输入一个问题,引擎层拿到用户问题之后,调用阿里云ET的问答引擎获取相应答案,然后对答案进行处理,根据设置的阈值来判断答案是否能解决用户的问题。
- 缓存处理:为了在高并发情况下提升性能,在流量比较大的时候,会把问答输入和输出放入到缓存中,新问题命中缓存中的问答输入,就会把相应的答案直接返回给用户。
- 数据封装:把从数据库以及调用外部服务获取过来的各种数据进行封装,输出给portal层。
- 调度:portal层通过调用hsf(类似dubbo服务)接口,把请求分发到引擎层不同的机器中,其中job调度利用dts(阿里的任务调度服务,类似quartz)和odps(大数据计算服务)来运行相应的job。
- 负载控制:当流量陡然增大时,为了防止服务超负荷运转出问题甚至宕机,系统做了负载控制,并在超过系统承受范围时做限流,保证服务能够正常运转。
- 提供服务调用:系统能过http和hsf接口提供portal层进行服务调用。
- 数据分析:把云博士所有问答记录取出进行分析,以帮助算法和数据的优化。
- 算法数据更新:云博士需要通过不断地进行算法的优化和新数据的训练,才能变得更加智能,引擎层会每天不断地推送新的数据去训练相应的模型。
3. 数据持久层
数据持久层主要是云博士数据持久化的一层,数据主要以四个方式持久化:
- rds: 即mysql数据库,主要存放的是需要经常使用,对于读写实时性要求高的那些数据的存放。
- odps: 这里一般存放的是离线任务跑出来的数据,对于读写的实时性要求并不高,一些离线任务生成的数据,会同步到rds,供引擎层使用。
- oss: oss主要存放训练算法模型的训练集数据,算法模型训练的时候会获取相应的数据进行训练。
- redis:主要是存放缓存的数据,比如为了提升性能的问答input和output
4. 外部数据来源层
调用外部系统获取相应的数据,比如调用账单系统去查看用户有没有因为欠费而导致服务处于异常状态,调用黑洞清洗去查看用户实例有没有处于黑洞中等。
除了上面的四层之外,云博士的管控台主要有如下几个功能:
- 语料编辑:用来供人工智能训练师编辑语料。
- 数据运维:用来实时监控云博士的各种指标,如准确率,pv, uv, 响应时间和一些业务指标。
- 数据闭环:用来提升云博士问答准确率,如处理用户提交的对于云博士答案的反馈,进行数据挖掘等。
目前,云博士以智能问答机器人的形式随时听凭用户调遣,还在用户的工单排队期间提前提供建议的解决方案,免除排队时间,提升用户的体验。更为重要的是,通过客户的反馈,云博士用强化正确结果和调整负面评价结果的方式持续提升对云计算的理解,实现自学习和成长。最终,阿里云希望通过应用人工智能技术,能够建立云计算这个行业通用的智能服务解决方案。