首页 / 专利库 / 人工智能 / 人工智能 / 自然语言处理 / 从web API规范生成聊天机器人

从web API规范生成聊天机器人

阅读:938发布:2020-05-13

专利汇可以提供从web API规范生成聊天机器人专利检索,专利查询,专利分析的服务。并且从API规范自动生成 聊天 机器人 以执行与用户的对话并调用API规范中描述的API调用。基于输入API规范,构造表示对话流的会话机器人规范。接收自然语言表达式并基于会话机器人规范将其变换成指令。基于指令,可以生成对用户的自然语言提示和用于调用API调用的可执行计算机代码。,下面是从web API规范生成聊天机器人专利的具体信息内容。

1.一种自动生成针对应用编程接口(API)的对话机器人的方法,所述方法由至少一个硬件处理器执行,所述方法包括:
接收API规范,所述API规范包括与调用API调用相关联的信息;
解析API规范;
基于解析所述API规范,构造会话机器人规范;
从用户接收自然语言表达;
基于所述会话机器人规范,将所述自然语言表达变换为指令;
响应于确定所述指令包含呈现给所述用户的提示,基于所述指令生成自然语言提示;
以及
响应于确定所述指令包含执行所述API调用,基于所述指令执行计算机代码以调用所述API调用。
2.如权利要求1所述的方法,其中基于所述会话机器人规范,来重复从所述用户接收所述自然语言表达、将所述自然语言表达变换为指令、生成所述自然语言提示以及向所述用户呈现所述自然语言提示,以便执行用于调用所述API调用的对话流。
3.根据权利要求1所述的方法,其中用以调用所述API调用的所述计算机代码包括对提供与所述API调用相关联的服务端点的超文本传输协议(HTTP)调用。
4.根据权利要求1所述的方法,其中所述API规范包括web API规范。
5.根据权利要求1所述的方法,其中所述方法还包括响应于生成所述自然语言提示而向所述用户呈现所述自然语言提示。
6.如权利要求1所述的方法,其中构造所述会话机器人规范包括构造包括多个状态和状态转换的有限状态机(FSM),所述有限状态机指定针对所述会话机器人的对话流,其中将所述自然语言表达变换成指令包括至少基于自然语言处理将所述自然语言表达变换成符号,并且基于所述FSM将所述符号变换成所述指令,其中符号包括表示所述自然语言表达中的对象的实体和表示所述自然语言表达中的目的意图。
7.如权利要求1所述的方法,其中所述会话机器人规范包括调用多个API调用,其中所述多个API调用在单个对话中被调用。
8.一种系统,包括适于执行根据任一前述方法权利要求所述的方法的所有步骤的部件。
9.一种计算机程序,包括当所述计算机程序在计算机系统上被执行时,用于执行根据任一前述方法权利要求所述的方法的所有步骤。

说明书全文

从web API规范生成聊天机器人

技术领域

[0001] 本申请一般涉及计算机和计算机应用,尤其涉及聊天机器人或机器人、自然语言处理以及聊天机器人的生成。

背景技术

[0002] 聊天机器人或会话代理经由自然语言对话与用户通信,并且可以通过网页、电话或消息系统来操作。例如,它们被编程为回答常见问题、帮助更有效地导航网页或填写在线表格。公司越来越依赖于聊天机器人来向用户,例如他们的客户和雇员,提供支持和服务。
[0003] 与图形应用程序一样,聊天机器人可以通过调用web应用编程接口(API)来完成其工作。这些API向用户提供对存储在公司数据库中的资源的访问以及在公司系统中实现的动作。一种用于提供web API的方法是REST(代表性状态传输(REPresentational State Transfer))。在REST中,服务提供商托管资源,并且服务提供商和消费者通过传送资源的状态的表示(通常是JSON:JavaScript对象符号)来交互。
[0004] 聊天机器人难以建立,并且需要时间来使他们正确。与其他软件不同,聊天机器人依赖于NLU(自然语言理解),这可能不是完美的。由于难以预测常见的NLU错误将是什么,因此它付出了快速部署初始机器人程序并收集现场使用它的经验以改进它。聊天机器人开发由于需要软件开发和机器学习技能而进一步复杂化。而且,由于公司最近才开始广泛地欢迎聊天机器人,因此缺乏供非专家开发聊天机器人的编程模型。发明内容
[0005] 提供了一种用于自动生成应用编程接口(API)的会话机器人的方法、系统和计算机程序
[0006] 下面参考附图详细描述各种实施例的进一步特征以及结构和操作。在附图中,相同的附图标记表示相同或功能相似的元件。

附图说明

[0007] 图1示出了在一个实施例中包括示例的机器人的总体方法。
[0008] 图2示出了一个实施例中的机器人的运行时架构。
[0009] 图3在一个实施例中示出了机器人编译器从示例翻译器应用编程接口生成的有限状态机的摘录。
[0010] 图4A-图4D示出了一个实施例中与示例视觉识别web应用编程接口(API)的示例对话。
[0011] 图5是示出一个实施例中的自动生成用于应用编程接口(API)的会话机器人的方法的图示。
[0012] 图6示出了在本公开的一个实施例中可以实现聊天机器人生成器/编译器系统的示例计算机或处理系统的示意图。

具体实施方式

[0013] 本发明提供了一种用于编译器的系统、方法和技术,该编译器采用web API规范并自动生成聊天机器人以进行与用户的对话并基于该对话进行一个或多个API调用,例如基于该对话和API规范调用web API。在一个实施例中,所生成的机器人程序是自编文件的,使用来自API规范的描述来回答帮助请求。在一个实施例中,该系统、方法和技术从web API规范生成聊天机器人。
[0014] API规范定义了到调用服务的API的标准接口。API规范的一个示例包括SWAGGER规范。在以下描述中,SWAGGER被用作示例API规范来描述一个实施例中编译器的实现。然而,本公开的方法并不将API规范限制为仅SWAGGER。SWAGGER被用作用于生成包括API文档、客户端SDK(软件开发工具包)、服务器存根和测试的各种产物的源语言,但是先前尚未被用于生成聊天机器人。在一个实施例中,本公开的方法可以使用API规范,诸如Swagger,作为用于生成聊天机器人的源语言,所述聊天机器人使得终端用户能够经由自然语言对话来调用web API。
[0015] 图1示出了包括一个实施例中的示例的总体方法。用户(对于人为“H”)通过请求翻译文本与聊天机器人(对于会话代理为“C”)对话。在该示例中,用户已经知道必要的参数,并且知道要对它们进行反向引用。聊天机器人经由调用链接和默认值来填充缺失的参数,然后经由HTTP GET方法来向翻译器服务进行REST调用,并将结果返回给用户。生成聊天机器人允许终端用户调用web API而不用首先学习它们。对话可以使用反射来让终端用户发现可用的动作及其参数。在一个实施例中,聊天机器人编译器允许开发者重用现有的API规范以快速引导完整的工作机器人。
[0016] 在一个实施例中,来自web API规范的聊天机器人编译器生成用于调用API的自文档化聊天机器人。还提供了针对编译器和在消息系统中的实现(realization)的实现(implementation)。在一个实施例中,编译器可以基于各种API规范来生成各种聊天机器人。公开了用于web API和聊天机器人两者的编程模型。
[0017] 在一个实施例中,下面使用由编译器生成的与机器人的对话的转录来描述具体示例。该示例基于语言翻译器web API,其可以在不同的自然语言之间翻译,但也支持诸如标识语言等附加特征。
[0018] 表1
[0019]
[0020]
[0021] 对机器人编译器的输入是例如Swagger中的web API规范。表1示出了用于翻译器服务的Swagger。所生成的机器人(其被称为API机器人作为示例)使用Swagger作为用于与用户交谈(以自然语言)和用于调用web API(以HTTP)两者的引导。第1-3行指定Swagger版本、API版本和标题以及基本路径。第4-25行指定了相对于资源(名词,例如可标识的语言)和动作(动词,例如标识)的基本路径的路径。为了简洁,表1仅示出了由路径“/v2/identify”表示的动作之一的细节。该路径支持与相同名称的HTTP方法相对应的两个操作,get和post。每个操作具有概要、参数和响应,它们可以具有人类可读的描述和模式。在该示例中,模式涉及对第26-38行中提供的类型定义的引用($ref)。
[0022] 表2
[0023]
[0024]
[0025] 表2示出了所生成的API-bot会话代理(“C”)和用于调用翻译器web API的人类终端用户(“H”)之间的对话的转录。在一个实施例中,编译器直接从表1所示的Swagger规范生成聊天机器人。在第4行上,终端用户请求帮助;注意,他们可以使用自然语言,而不是必须学习计算机语言以知道如何寻求帮助。API-bot被配置成经由从示例训练的机器学习分类器来理解帮助意图;行14示出了也被分类到帮助意图中的不同话语。第5-11行示出了从Swagger路径生成的帮助文本。在行12上,终端用户挑选动作“标识”。随后,聊天机器人收集它需要调用“标识”的附加信息。在人已经提供了操作(get)和文本参数(La Vie est belle)之后,聊天机器人调用web API并显示结果(对于法语为“fr”)。在这个过程中,机器人还使用反引号简明地显示动作及其参数。这具有两个效果。首先,确认与用户建立共识;第二,教育用户如何更容易地进行该调用。
[0026] 下面的描述示出了在一个实施例中API-bot是如何生成的以及在一个实施例中它是如何工作的。
[0027] 所生成的API-bot对话代理使得终端用户能够调用web API。图2示出了一个实施例中的运行时架构。一个或多个硬件处理器可以执行或运行这些组件。对话控制器202引导用于调用web API的对话。控制器202经由NLU(自然语言理解器)组件206接收来自用户204的输入,并且经由NLG(自然语言生成器)组件208向用户204发送输出。在一个实施例中,API-bot代理建立在用于会话代理的沃森会话服务(WCS)平台上。本公开的API聊天机器人可以构建在另一对话服务平台上。
[0028] 在WCS中,NLU包括实体提取器210和意图分类器212,API机器人为手头的Swagger定制它们。此外,API-bot添加直接调用分析器214作为另一个NLU组件,其通常不在WCS或其他平台中找到。在WCS中,控制器202可以由FSM(有限状态机)220对话规范驱动。在一个实施例中,控制器202的输出包括用于人的自然语言提示和对服务端点的HTTP调用。NLU组件206、从API规范(例如,Swagger)到控制器FSM 202的映射、控制器维护的附加状态220、NLG 
208和实现输出的致动器216组件的实施例在下面更详细地描述。
[0029] 输入NLU
[0030] 下面更详细地描述一个实施例中的NLU组件206。NLU组件206将来自用户204的自然语言话语转换成用于对话控制器202的符号。大多数现代聊天机器人平台识别两种符号:实体和意图。
[0031] 实体表示用户话语中的术语或对象,并且WCS用@-印章标记实体。例如,在表2第18行中,词get属于@get实体。NLU 206中的实体提取器210可以返回用于单个用户话语的多个实体,一个实体用于其找到的每个匹配项。在一个实施例中,实体提取器210由模式匹配引擎实现。存在独立于手头的具体API(例如,Swagger)规范的所有API-bot代理所共用的一些实体,例如,@get和@post。此外,存在从API(例如,Swagger)规范中找到的参数生成的实体,例如,@text、@source和@target。
[0032] 意图表示用户想要做的事情的目的或目标,并且WCS用#-印章标记意图。例如,在表2中,第4行,“请帮助我”属于#帮助意图。NLU 206中的意图分类器212返回对于给定话语具有最高置信度的意图,或者如果没有东西具有高置信度,则返回特殊的#不相关意图。意图分类器212用监督式机器学习来实现,其中训练数据包括<示例,意图>对。当存在每个意图的许多示例、不同意图的示例不相似并且这些示例代表实际用户话语时,意图分类器212工作得最好。例如,#帮助意图的训练示例可以包括“帮助”、“选项是什么?”、“我可以做什么”和“什么是可能的”。存在独立于手头的具体API(例如Swagger)规范的所有API-bot代理所共有的一些意图,例如#帮助、#是和#否。此外,存在从API(例如Swagger)规范中找到的路径生成的意图,例如,#标识和#翻译。
[0033] 虽然实体和意图的基本NLU功能性对于许多聊天机器人来说是足够的,但是对于获得用于调用web API的良好对话来说,它可能太受限制。一个问题是,一些参数具有不能容易地对照预定义的实体或意图来匹配或分类的自由流值。此外,一些输入应当对实体提取器和意图分类器完全隐藏。例如,用于标识动作的文本参数可以包含不应触发其自己的实体或意图的任意单词。因此,当API-bot提示输入这样的参数时,它将整个下一人类话语作为一个值来对待,如表2第20行所示。
[0034] 虽然这解决了该问题,但不幸的是,对于每条信息需要单独的轮次导致延长的对话。因此,本公开引入了引用特征。在一个实施例中,引用特征由反引号(`…`)表示,因为它们对于用于呈现逐字文本的消息传送平台的用户是熟悉的。API-bot可以被部署在诸如松散(Slack)消息传送平台上,并且还使用引用句来用信号通知逐字文本。此外,本公开引入了一种惯例,通过该惯例,在被引用文本跟随的话语中的参数名称实体将参数设置为引用值。这种惯例使得可以在单个话语中呈现API调用,并且由直接调用解析器214来实现。例如,“标识文本`La vie est belle`”调用标识动作,将文本设置为‘La vie est belle’,并默认使用HTTP GET方法。
[0035] 控制器和状态
[0036] 下面在一个实施例中描述从API规范(例如Swagger)到控制器有限状态机(FSM)202的映射,以及控制器维持的附加状态220。图2中的控制器组件202维持状态并将来自NLU 
206的符号转换为对NLG 208和致动器216的指令。用于在聊天机器人中指定对话流的低级形式体系是FSM。WCS编程模型支持FSM以及其他特征。在一个实施例中,API-bot编译器的实现使用FSM作为其代码生成目标(源是API规范(例如Swagger))。图3在一个实施例中示出了API-bot编译器从表1所示的翻译器API(例如,在Swagger中)生成的FSM的摘录。下面的文本首先解释符号,然后讨论它指定的对话流。
[0037] 图3中的每个圆矩形表示一种状态。存在一个特殊的开始状态,其用不是源自任何其他状态的传入箭头标记。存在若干最终状态,用双边界标记。存在从最终状态回到开始状态的隐式顶层循环。状态之间的有向边是转换,并且它们的标签是谓词。状态标签具有stateName/动作的形式,但是为了简洁省略了大多数状态名称。由于动作驻留在状态上而不是转换上,因此在一个实施例中FSM是Moore机器(例如,不是Mealy机器)。在实现的一个实施例中,Moore机器被实现为形式体系,因为WCS编程模型支持Moore机器。可以采用其他状态机实现。
[0038] 转换谓词基于来自NLU的符号,换言之,分别用@和#标记的实体和意图。一些转换被标记有空的单词符号ε或epsilon,指示聊天机器人在进行转换之前不等待用户输入。最后,一些转换被标记有真的谓词,指示聊天机器人收集用户输入,但是将整个话语作为一个值来对待,而不使转换取决于该值是什么。FSM状态中的动作是对NLG和致动器的指令。例如,打印帮助文本动作是对NLG的指令,而调用API动作是对致动器的指令。为了简洁,图3没有详细说明动作的细节,但是它们是上下文特定的。帮助文本的上下文是当前FSM状态,并且API调用的上下文包括当前FSM状态以及在通向它的状态中收集的操作和参数。
[0039] 图3中的对话流程示出了从开始状态的五个转换。
[0040] 转换1:如果是#帮助,则机器人从开始打印从Swagger中的路径生成的已知资源和动作的列表。API-bot实现试探法以在翻译器Swagger中取消公共路径前缀"/v2/",因为它们不提供有用信息并且对终端用户造成不必要的混淆。在显示帮助文本之后,聊天机器人返回到开始状态,而不收集由ε(例如,epsilon)-转换所指示的用户输入。
[0041] 转换2:从开始,如果是#identify^@text,则直接调用解析器已经提供了所有必要的信息来调用具有所需文本参数的"/v2/identify"路径。如果没有指定HTTP方法,则如果路径支持GET,则该方法默认为GET。API-bot实现试探法以不请求具有默认值的可选参数,诸如在这种情况下的接受(accept)参数。此外,accept参数实现内容协商,这是REST通用的特征,而不是翻译器API专用的特征。内容协商是对非技术终端用户更好地隐藏的实现技术性。
[0042] 转换3:从开始,如果是#标识,但是先前的转换没有激发,则聊天机器人具有收集用于调用"/v2/identify"路径的操作和参数的节点链。在这种上下文中,帮助文本列出了针对给定路径的操作。图3仅示出了针对@get的FSM状态,省略针对@post的FSM状态。FSM的这一部分还包含真条件的示例,因为文本参数可以是任何串,并且因此不应经受NLU。
[0043] 转换4:从开始,如果#translate^@source^@target^@text,则直接调用解析器已经提供了调用"/v2/translate"路径的所有必要信息。
[0044] 转换5:从开始,如果#translate但是先前的转换没有激发,则聊天机器人具有收集用于调用"/v2/translate"路径的操作和参数的节点链。
[0045] 图2中的状态220包括FSM状态以及由对话流的当前部分收集的部分信息,该对话流的当前部分朝向进行API调用的目标驱动。
[0046] 输出:NLG和致动器
[0047] 下面在一个实施例中描述实现输出的NLG 208和致动器216部件。图2中的NLG 208和致动器216组件将来自对话控制器202的指令转变为对用户204的自然语言响应和对REST服务端点218的HTTP调用。为了用干净的接口来封装控制器202,在一个实施例中API-bot的实现将这些指令重新指定为JavaScript对象符号(JSON)对象。
[0048] 在一个实施例中,API-bot使用简单的NLG。对于大部分,API-bot NLG 208包括文字硬编码串,其中的一些在编译时从API规范(例如Swagger)被生成,例如表2中第6-10行的路径列表。在一些情况下,NLG 208还在运行时使用串内插,其中串内插意味着在运行时将动态计算的子串插入到常量串模板中。
[0049] 致动器216负责对web API进行HTTP调用。在一个实施例中,API-bot的示例实现用JAVA来编写,并且使用简单的HTTP客户端来执行对服务端点218的同步调用。在一个实施例中,致动器216被部署为终端用户的设备上的本地应用。在一个实施例中,NLU 206和控制器202的大部分被部署为沃森对话服务或类似服务中的托管应用。在另一实施例中,致动器
216可以被托管在公共云上或在提供服务端点的组织的计算机基础设施上。
[0050] 在一个实施例中,致动器216在可能时还负责填充缺失参数的默认值。在一个实施例中,这带来两种味:(i)默认值可以在原始API规范(例如,Swagger)文件中指定,并且(ii)本公开允许API规范(例如,Swagger)文件中的API-bot注释,该API-bot注释指示对可以用于填充该默认值的web API的其他部分的回调。
[0051]
[0052] 表3示出了语言翻译器web API中的翻译调用的源语言参数的对应注释。它指示如果用户没有提供源参数,则可以通过利用输入文本调用标识来获得默认值。如果存在适当的参数,则从当前上下文获得该参数的值。回调描述与API规范(例如,Swagger)文件的其余部分一起被读取,并通过控制器被传递到致动器216。它包含对API的另一部分进行子调用以及如何填充针对该子调用的参数所必需的所有信息(在该示例中,仅需要文本参数)。以上描述了从API规范到对话规范的编译。
[0053] 表4示出了用于音调分析器web API的Swagger。
[0054] 表4
[0055]
[0056]
[0057] 表5示出了与音调分析器web API的示例对话。
[0058] 表5
[0059]
[0060]
[0061] 表6示出了视觉识别web API的Swagger。
[0062] 表6
[0063]
[0064]
[0065] 图4A-图4D示出了与表6所示的视觉识别web API的示例对话。
[0066] 表4-表6和图4A-图4D示出了对除上述翻译器API示例之外的web API的示例情况研究,证明本发明的API机器人对不止一个特定API起作用。在一个实施例中,本公开的API机器人还可以与诸如松散消息传送平台、实时消息传送系统之类的消息传送平台集成。
[0067] 音调分析器分析文本文档以检测三件事情:情绪(例如,愤怒、快乐、悲伤)、风格(例如,信心、犹豫)和社交倾向(例如,外向、随和)。表4示出了web API规范的摘录。它仅提供具有四个参数(版本、文本、音调和句子)的单个路径"/v3/音调"。四个参数中的三个是可选的,或者具有默认值,仅留下文本参数作为针对每个调用指定的强制信息。表5示出了用于调用音调分析器的API-bot对话的转录。人简单地进行直接调用,将文本设置为"我非常高兴"。调用的结果与给定输入文本时所期望的结果相匹配。分析器确定主要情绪是高兴,风格是自信的,并且在该文本中找到的最强社交倾向是随和的。
[0068] 表6中所示的视觉识别API分析图像文件以标识三件事:场景、对象和面部。表6示出了web API规范的摘录。来自web API规范的摘录仅在路径之一"/v3/detect/faces"上诚实。在一个实施例中,通过引用而不是内嵌来声明参数,因为其他路径共享一些相同的参数。有三个参数:api_key(用于认证的难以猜测的数字和编号的串);url(图像文件的地址);以及版本(作为串给出的API版本)。该版本具有默认值。
[0069] 图4A-图4D示出了用于调用视觉识别API的API-bot对话的转录。它是被集成到松散消息通信平台中运行的API-bot的屏幕截图。松弛常常通过协作团队用于持续的多方聊天。在这种情况下,存在两个参与者,API-bot和被称为louis的人类终端用户。对话展示逐步调用,其中终端用户请求帮助并且聊天机器人逐个地提示参数。终端用户复制并粘贴他们分别获得的API键。一个松弛特征是当用户粘贴统一资源定位符(URL)时,它显示其目的地的预览。在这种情况下,URL是历史个性的图片,并且松弛显示周围的维基百科文章的摘录。API-bot不提示版本参数,因为Swagger为其指定了默认值。版本参数可以经由直接调用来显式地设置。
[0070] 在进行调用之前,一个实施例中的API-bot回送简明版本以用于基础和教导。这示出了在松弛减价中如何绘制反引号。在一个实施例中,所引用的文本以具有与正常文本不同的颜色方案的打字机字体显示。最后,API-bot进行调用,并且视觉识别API报告回其对年龄、性别和历史个性的身份的猜测。这些猜测是准确的。
[0071] 除了格式化优点之外,还有将调用web API的机器人集成到松散或类似的消息传送平台中的其他良好原因。由于公司的用户可能经常经由闲暇时间彼此聊天,因此将聊天机器人放在那里减少了对上下文切换的需要。在调用的情况下,它提供了由于责任而发生了什么的持久记录。例如,当网络API返回一种状态报告时,保持彼此通知也是一种容易的方式。而且,它增加了学习机会,其中一个用户的成功调用存在以供其他用户模仿。
[0072] 如上所述,可以从不同的API规范生成不同的API-bot聊天机器人。在本公开中从API规范生成的聊天机器人使得对话能够驱动动作,例如web API调用。在一个实施例中,本公开的聊天机器人可以是完全自编文件的。例如,用户可以通过与聊天机器人交互来了解他们需要知道的关于聊天机器人的一切,包括如何进行直接调用。
[0073] VoiceXML是一种被设计成在会话中扮演与HTML在视觉内容中扮演相同角色的标准。这种观点是存在会话式web,其中提供商提供VoiceXML;消费者通过语音浏览器与VoiceXML交互;并且VoiceXML可以是超链接的。VoiceXML的缺点在于它需要提供商以该语言编写新的聊天机器人。相比之下,本公开的API-bot在一个实施例中使用诸如Swagger等预编写的API规范来引导聊天机器人。
[0074] Swagger被设计为用于生成各种不同人工产物的源语言。Swagger用户界面(UI)可视地呈现文档,并让开发者与沙箱中的web API交互。然而,该交互与API-bot的不同之处在于,它不使用自然语言会话,不以终端用户为目标,并且不旨在用于生产使用。
[0075] 数据库的自然语言接口(NLIDB)可以从数据库模式生成NLIDB代理。采用多轮会话的NLIDB工作仅在最近才出现,并且仍然是活跃的研究领域。
[0076] 如果这样,则(IFTTT)使得终端用户能够以简单和方便的方式调用web API。IFTTT生态系统中的参与者必须将他们的端点包装到触发或动作中。一旦创建了这些,终端用户就可以将它们一起放入配方中。相比之下,利用API-bot,参与者不需要在动作中包裹他们的端点;相反,通过使用API规范作为源语言来将动作编译成聊天机器人。而且,与API-bot不同,IFTTT不提供自然语言聊天界面。
[0077] 用自然语言编程
[0078] 虽然与自然语言编程相关的工作可以包括一般地将自然语言句子变换成形式语言,但是它们不从API规范或web API规范生成聊天机器人,或者不生成自记录文档的这样生成的聊天机器人。
[0079] 在一个实施例中,该系统、方法和技术呈现了从web API规范(例如,以Swagger编写)到聊天机器人以调用那些web API的编译器。在一个方面,编译器允许具有其向其顾客或雇员提供的服务的API(例如Swagger)规范的企业立即获得其初始的自然语言聊天机器人。这样做使得公司能够改进聊天机器人,聊天机器人往往是连续的反馈驱动过程。所生成的机器人是自编文档的,因此,例如,不知道如何使用机器人或web API的用户可以通过与机器人交互来找出如何做。例如,编译器可以使复杂的API易于经由聊天机器人调用。
[0080] 图5是示出一个实施例中的自动生成用于应用编程接口(API)的会话机器人的方法的图示。该方法由一个或多个硬件处理器执行,例如,如参考图2中所示的组件所描述的。在502,接收包括与调用API调用相关联的信息的API规范。这种API规范的一个示例是Swagger规范。在504,解析API规范。在506,基于解析API规范,构造对话式机器人规范。例如,可以构造有限状态机。有限状态机包括多个状态和状态转换,并且指定用于会话机器人的对话流。图3示出了有限状态机的示例,参考图5,在508,从用户接收诸如文本表达或话语或可听语音的自然语言表达。
[0081] 在510,自然语言表达被变换成指令。例如,自然语言表达被变换成符号,并且符号被变换成用于生成对用户的自然语言提示的指令和/或用于调用API调用的可执行计算机代码。在一个实施例中,可以基于例如被构造为会话机器人规范的一部分的有限状态机将符号变换成指令。在一个实施例中,通过将符号用于触发状态转换,并将目标状态的动作用作指令,将符号转变为指令。
[0082] 在512,基于指令生成自然语言提示或响应。例如,响应于包含要呈现给用户的提示的指令,例如,用于请求确认或问题,生成自然语言提示或响应。指令可以包括或指定字面上包含要显示或发出的自然语言提示的串。在另一实施例中,可执行串内插以生成自然语言提示。
[0083] 在514,例如响应于在512生成自然语言提示,自然语言提示或响应被呈现,例如被显示和/或向用户说出,例如作为文本或由耦合到一个或多个硬件处理器的语音合成器或类似设备说出。
[0084] 在516,确定指令是否包含对API的调用。在518,如果指令指示调用API,则执行调用API调用的计算机代码。例如,可以基于包含对API的调用的指令来生成计算机代码。方法的逻辑可以返回到508并且例如根据在会话机器人规范中指定的对话流来迭代处理。如果在516,指令不包含对API的调用,则处理可以返回到508,并且例如基于会话机器人规范(例如包括有限状态机)重复508-516处的处理,以继续用于调用API调用的对话流。
[0085] 调用API调用的计算机代码的示例包括对提供与API调用相关联的服务端点的超文本传输协议(HTTP)调用。作为示例,API规范可以是web API规范,并且API调用可以包括代表性状态传输调用。
[0086] 在一个实施例中,如上参考NLU组件所述,符号可以至少包括表示自然语言话语中的对象的实体和表示自然语言话语中的目的意图。在一个方面,对话流可以包括调用多个API调用,其中,在单个对话中调用多个API调用。
[0087] 在另一个实施例中,编译器可以包括认证特征。此外,编译器可以允许来自一个API调用的结果馈入另一个。例如,可标识语言列表帮助确定翻译中的源语言和目标语言的可允许值。因此,多个调用可以串在一起。此外,机器人程序可以从API规范的集合中生成。
[0088] 图6示出了在本公开的一个实施例中可以实现聊天机器人生成系统的示例计算机或处理系统的示意图。计算机系统仅是合适的处理系统的一个示例,并且不旨在对本文描述的方法的实施例的使用范围或功能性提出任何限制。所示的处理系统可以与许多其他通用或专用计算系统环境或配置一起操作。可能适合与图6所示的处理系统一起使用的公知的计算系统、环境和/或配置的示例可以包括但不限于,个人计算机系统、服务器计算机系统、瘦客户机、胖客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机系统、大型机系统、以及包括上述系统或设备中的任一个的分布式云计算环境等。
[0089] 计算机系统可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
[0090] 计算机系统的组件可以包括但不限于一个或多个处理器或处理单元12、系统存储器16以及将包括系统存储器16的各种系统组件耦合到处理器12的总线14。处理器12可以包括执行本文所述方法的模块30。模块30可以被编程到处理器12的集成电路中,或从存储器16、存储设备18或网络24或其组合被加载。
[0091] 总线14可以表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何一种的处理器或局部总线。作为示例而非限制,这些架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线。
[0092] 计算机系统可以包括各种计算机系统可读介质。这样的介质可以是计算机系统可访问的任何可用介质,并且它可以包括易失性和非易失性介质、可移除和不可移除介质。
[0093] 系统存储器16可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)和/或高速缓冲存储器或其他。计算机系统还可以包括其他可移除/不可移除、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统18可以被提供用于从不可移除、非易失性磁介质(例如,“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移除、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其他光学介质等可移除、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线14。
[0094] 计算机系统还可以与一个或多个外部设备26通信,诸如键盘、定点设备、显示器28等;一个或多个设备,其使得用户能够与计算机系统交互;和/或使计算机系统能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可以经由输入/输出(I/O)接口20发生。
[0095] 此外,计算机系统可以经由网络适配器22与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)之类的一个或多个网络24通信。如所描述的,网络适配器22经由总线14与计算机系统的其他组件通信。应当理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统结合使用。示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
[0096] 本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
[0097] 计算机可读存储介质可以是可以保持和存储用于由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号
[0098] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者经由网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0099] 用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及传统的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0100] 这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0101] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0102] 也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0103] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0104] 本文所用的术语仅是为了描述特定实施例的目的,而不是要限制本发明。如本文所用,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,术语“包括(comprise)”和/或“包括(comprising)”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
[0105] 在以下权利要求中的所有部件或步骤加功能元件的对应结构、材料、动作和等效物(如果有的话)旨在包括用于与如具体要求保护的其他要求保护的元件组合执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了本发明的描述,但是该描述不是穷举的或者将本发明限制为所公开的形式。在不背离本发明的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员来说是明显的。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使本领域的其他普通技术人员能够理解本发明的具有各种修改的各种实施例,这些修改适合于所设想的特定用途。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈