QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

使用 Actions on Google 和 API.AI 构建会话式应用

  • 2017-01-02
  • 本文字数:2030 字

    阅读完需:约 7 分钟

在 Amazon re:Invent 大会上,Amazon 发布了深度学习服务 Lex,该服务底层所使用的技术与 Alexa 应用到 Amazon 移动蓝牙和 Wi-Fi Echo 扬声器中的技术一样。在 Amazon 发布该服务之后不久,Google 就发布了 Actions on Google 项目,使开发者能够构建基于 Google Assistant 的语音交互应用,并与 Google Home 设备进行集成。

图片来源: https://madeby.google.com/home/

Google 的高级开发工程师 Wayne Piekarsk 将 Actions on Google 平台描述为一种集成方式:

开发者可以通过它将自己的服务与 Google Assistant 集成到一起。

该集成的实现方式是:

会话行为(Conversation Action)允许开发者通过一个双向窗口满足用户的请求。当用户请求一个 Action 的时候,Google Assistant 就会处理该请求,决定由哪个 Action 处理该请求最好,并调用相关的会话行为。调用之后,开发者开发的会话行为就能掌控剩下的所有事情,包括如何欢迎用户,如何满足用户的请求,以及如何结束会话。

为了阐述 Actions on Google 的功能,Google 使用了一个私人厨师的示例应用,该应用允许最终用户通过 Google Home 设备与食谱查找服务交互。首先,最终用户需要告诉该应用自己现在的情绪以及所拥有的佐料,然后会话应用会解析用户的情绪,理解可用的佐料有哪些,之后会根据用户的情绪和食欲为其提供食谱。

编写这种类型的应用是非常具有挑战性的,因为很难准确地提取 Action 的意义。Solvvy 的联合创始人和 CTO Mehdi Samadi 解释说:

现在即使利用 AI 技术,将“告诉我附近便宜的 Indian 餐馆在哪里”这样的命令 / 指令转换成一组可执行的命令集也不是一件容易的任务。我们首先需要理解用户想要寻找“Indian”风味的餐馆,然后需要知道用户心中的“便宜”到底指什么价位。

Google 开发会话行为的目的就是为了应对这些上下文敏感的挑战,以帮助开发者构建会话 App。

图片来源: (screenshot) https://www.youtube.com/watch?v=HNfE0uaKcfY

会话行为由三个主要的组件组成,包括:

  • 调用触发器(Invocation Triggers)定义了用户如何调用和发现 Action。一旦被触发,Action 就会展开一个由对话框定义的会话与用户交互。
  • 对话框(Dialogs )定义了用户如何与 Action 进行交谈,同时它也是 Action 的用户界面。它们依靠实现代码推动会话的前行。
  • 实现(Fulfillment)是处理用户输入并返回响应的代码,它是一个 REST 服务。实现通常还包含一些执行具体行为的逻辑,例如检索菜谱或者新闻并大声朗读。

调用会话行为的方式有三种:

  • 会话 API,它提供了与 Google Assistant 通信所必须使用的请求和响应的格式。
  • Actions SDK,包含一个 NodeJS 客户端类库,行为包(Action Package)定义,CLI 和 Web 模拟器。
  • 包含 API.AI 在内的其他工具。

API.AI 是 Google 最近收购的一家公司,开发者可以通过它来构建会话接口。Google 负责工程的副总裁 Scott Huffman 在 2016 年 9 月曾宣称:

超过 60,000 名开发者正在使用 API.AI 在 Slack、Facebook Messenger 和 Kik 等环境中构建会话式体验。

在 Actions on Google 平台上,开发者可以将 API.AI 接入自己的会话界面上以减少会话 API 通常所需要的文字转录量。Piekarsk 着重强调了在 Actions on Google 平台上使用 API.AI 的一些好处:

API.AI 为会话接口的创建提供了一个直观的图形用户界面,同时它还会处理会话状态的管理和表单的填充等繁重的任务。

图片来源:(screenshot) https://www.youtube.com/watch?v=HNfE0uaKcfY

为了处理一个会话,开发者可以使用控制台来定义 Intents。在 Google 私人厨师食谱的示例中,Intents 包括定义需要从用户那里获取的信息,例如材料、温度、菜式和烹饪时间。

接下来,开发者需要提供一些例句。API.AI 会使用这些例句训练机器学习算法,以便于处理其他来自于用户的句子。开发者不需要为 API.AI 编写正则表达式来解析其他的句子。

图片来源: https://www.youtube.com/watch?v=HNfE0uaKcfY

开发者可以人工地为每个信息指定可接受的值。一旦提供了这些内容,API.AI 就能使用这些信息从用户所说的句子中提取语义。例如,开发者可以定义一组映射到某种蛋白质的实体。如果私人厨师 App 想要在食谱中包含蛋白质,那么可以从开发者定义的一组同义词(例如牛肉、羊肉、豆腐和鸡肉等)中选取。

当用户与应用通信的时候,用户可以提供自然信息,包括一些无序的、只言片语的信息,如果应用没有接收到完整的信息,或者接受到的信息不明确,那么它会通过一些跟进的问题来获取信息。

开发者还可以将 Intents 连接到后端的 webhook,这样就可以通过连接到 IFTTT、Zapier 或者 Azure Logic Apps 等第三方平台上实现扩展。当一个 webhook 被调用的时候,所有适合的数据都会以 JSON 字符串的方式传送。

开发者在控制台上配置好了自己的 Intents 和实体之后,他们就可以在 API.AI 的 Web 模拟器上启动一个测试,在将其提供给所有的 Google Home 用户之前首先通过私人的 Google Home 进行预览。

查看英文原文 Building Conversational Apps Using Actions on Google and API.AI

2017-01-02 18:003946
用户头像

发布了 321 篇内容, 共 120.8 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

碉堡了!阿里架构师手打的Java10W字面经,已经助我拿了6个offer

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

创建各种类型的3D模型:Rhino 7中文激活版

真大的脸盆

Mac Mac 软件 三维建模 建模软件 3d建模

共享电动车制造的厂家有哪些?要注意什么

共享电单车厂家

共享电动车厂家 共享电单车生产 共享电动车制造 本铯电动车厂家

如何简单快捷的使用上ChatGPT?

Ricky

人工智能 openai ChatGPT

从可逆计算看声明式编程

canonical

开源 低代码 声明式 命令式

手把手教你用代码画架构图 | 京东云技术团队

京东科技开发者

京东云 代码实现 企业号 5 月 PK 榜 C4

软件测试 | SQLite管理工具

测吧(北京)科技有限公司

测试

一文看懂THD布局要求

华秋PCB

PCB 布局 PCB设计 布线 波峰焊

一周狂赚50万,GPT-4帮你在线“脱单”,AI女友按分钟收费,男友高达数量1000+

加入高科技仿生人

人工智能 AI 低代码 ChatGPT GPT-4

低代码开发平台 重塑数字医疗生产力

力软低代码开发平台

NLP 入门导论

小付聊测试

AI 入门 nlp

时序数据库中的乱序问题-写不动的老程序员带你解读

Greptime 格睿科技

云原生 时序数据库 国产时序数据库 乱序数据

软件测试 | 安装PyMySQL

测吧(北京)科技有限公司

明道云开放日上海站开启报名

明道云

阿里大佬在Github分享的Spring Cloud全栈笔记,你想象不到有多全

做梦都在改BUG

Java 架构 微服务 Spring Cloud

MatrixGate 5.0 性能再升级,加载速度提升三倍!

YMatrix 超融合数据库

数据库 开源数据库 超融合数据库

深入理解 synchronized 的锁升级

做梦都在改BUG

Java synchronized 锁升级

飞桨EasyDL月刊:4月功能全新升级,模型训练步骤缩短63%

飞桨PaddlePaddle

飞桨 EasyDL

Difference between from DR4019 and DR4029 /industrial wifi5 router/support openwrt.

Cindy-wallys

IPQ4019 ipq4029

openEuler 成功适配 LeapFive InFive Poros 开发板

openEuler

Linux 操作系统 openEuler 开发板 risc-v

山东移动:全业务域核心系统升级,实现大幅降本增效

OceanBase 数据库

数据库 oceanbase

华为云云原生视窗:一文回顾Q1精彩瞬间

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

行业实践专栏上线|互娱领域专家解读 Flink 企业应用实践

Apache Flink

大数据 flink 实时计算

一图看懂一体化数据安全平台 uDSP

原点安全

数据治理 数据安全 数据安全法 信息泄露 个人信息安全

华为数据中心产业论坛 | 打造低碳、绿色数据中心,构建新型数字产业能源基础设施

Geek_2d6073

【保姆级教程】如何用Rust编写一个ChatGPT桌面应用 | 京东云技术团队

京东科技开发者

rust 京东云 桌面应用 企业号 5 月 PK 榜

我以为我对Mysql很熟,直到遇到了阿里这份笔记

做梦都在改BUG

Java MySQL 数据库

分库分表的 21 条法则,hold 住!

小小怪下士

Java MySQL 程序员 分库分表

软件测试 | 配置MySQL

测吧(北京)科技有限公司

测试

MySQL的varchar存储原理:InnoDB记录存储结构

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

使用Actions on Google和API.AI构建会话式应用_Google_Kent Weare_InfoQ精选文章