CN111566638B - 向应用编程接口添加描述性元数据以供智能代理使用 - Google Patents
向应用编程接口添加描述性元数据以供智能代理使用 Download PDFInfo
- Publication number
- CN111566638B CN111566638B CN201880085717.7A CN201880085717A CN111566638B CN 111566638 B CN111566638 B CN 111566638B CN 201880085717 A CN201880085717 A CN 201880085717A CN 111566638 B CN111566638 B CN 111566638B
- Authority
- CN
- China
- Prior art keywords
- api
- service
- user
- function call
- descriptive metadata
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000006870 function Effects 0.000 claims abstract description 144
- 238000003058 natural language processing Methods 0.000 claims abstract description 43
- 238000000034 method Methods 0.000 claims abstract description 34
- 238000004590 computer program Methods 0.000 claims abstract description 27
- 238000010276 construction Methods 0.000 claims abstract description 21
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 55
- 230000004044 response Effects 0.000 claims description 16
- 238000013507 mapping Methods 0.000 claims description 10
- 239000003795 chemical substances by application Substances 0.000 description 119
- 238000012545 processing Methods 0.000 description 14
- 230000015654 memory Effects 0.000 description 13
- 230000003287 optical effect Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000003993 interaction Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000010006 flight Effects 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—Query formulation
- G06F16/90332—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/043—Distributed expert systems; Blackboards
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文中描述了使得智能代理能够进行以下操作的***、方法和计算机程序产品:自动发现服务所开放的应用编程接口(API),以获得与该API相关联的描述性元数据;以及基于描述性元数据来生成与该服务的至少一项功能相关联的自然语言处理信息和/或函数调用构建信息。另外,智能代理能够使用自然语言处理信息,以基于用户的至少一个用户输入来确定该用户打算与该服务进行交互,并且使用函数调用构建信息,以基于该用户的至少一个用户输入来构建用于与该服务进行交互的函数调用;以及代表该用户将该函数调用放置到该服务处。
Description
技术领域
本申请涉及用于自动发现服务所开放的应用编程接口的***、方法和计算机程序产品。
背景技术
通常,对于智能代理(例如AmazonGoogle NowTM,)可访问和/或可辨识的服务(例如Web服务),服务的开发者必须向智能代理的发布者注册该服务,并且还必须采取手动步骤来训练自然语言处理器,以辨识用户何时尝试调用该服务并识别用户可能提供以获得该服务的各种用户输入。例如,自动航班预订服务的开发者可能需要采取手动步骤来训练自然语言处理器,以通过辨识用户话语或语句(例如“预订航班”、“给我预订航班”或“给我买张机票”)来辨识用户调用该服务的意图。服务的开发者可能还需要采取手动步骤来训练自然语言处理器,以将用户输入中包括的某些关键字辨识为与满足用户意图相关的实体。例如,开发者可能需要训练自然语言处理器,以确定用户输入中包括的位置和日期是与满足用户的预订航班的意图相关的实体。
上述注册和手动训练过程可能很费力且耗时,并且通常必须针对将通过其提供服务的每个智能代理来分别执行。因此,服务的开发者当前难以经由一个或多个智能代理来使服务可用。
发明内容
提供本发明内容以便以简化的形式对下面在具体实施方式中进一步描述的一系列构思进行介绍。本发明内容并不旨在标识要求保护的主题的关键特征或重要特征,也不旨在用于限制要求保护的主题的范围。
本文中描述了使得智能代理能够进行以下操作的方法、***、装置和计算机程序产品:自动发现服务所开放(expose)的应用编程接口(API),以及利用与该API关联的描述性元数据来自动训练自然语言处理器和/或函数调用构建器,以支持对该服务的调用和与该服务的交互。例如,API可以被标记有描述性元数据(例如该服务或其能力的明文描述、与该服务相关联的一个或多个关键字等),并且智能代理可以利用这样的描述性元数据来生成与该服务的至少一项功能相关联的自然语言处理信息和函数调用构建信息。此外,智能代理可以使用自然语言处理信息,以基于用户的至少一个用户输入来确定该用户打算与该服务进行交互;使用函数调用构建信息,以基于该用户的至少一个用户输入来构建用于与该服务进行交互的函数调用;以及代表该用户将该函数调用放置到该服务处。
下文参考附图详细描述了本发明的其他特征和优点以及本发明的各个实施例的结构和操作。应当注意,本发明不限于本文中描述的特定实施例。本文中呈现这样的实施例仅用于说明性目的。基于本文所包含的教导,另外的实施例对相关领域的技术人员将是显而易见的。
附图说明
并入本文中并形成说明书的一部分的附图示出了本申请的实施例,并且与说明书一起进一步用于解释实施例的原理并使相关领域的技术人员能够实行和使用这些实施例。
图1是使用户能够经由智能代理调用服务并与之进行交互的示例***的框图。
图2是使智能代理能够进行以下操作的示例***的框图:自动发现服务所开放的应用编程接口(API),以及利用与该API关联的描述性元数据来自动训练自然语言处理器和函数调用构建器,以支持对该服务的调用和与该服务的交互。
图3描绘了根据实施例的用于使得能够自动发现服务所开放的API,以及利用与该API相关联的描述性元数据来自动训练自然语言处理器和函数调用构建器,以支持对该服务的调用和与该服务的交互的方法的流程图。
图4是根据实施例的包括API搜索实用工具的***的框图,该API搜索实用工具可以自动发现API,以及处理与该API相关联的描述性元数据以生成自然语言处理信息和函数调用构建信息以供智能代理使用。
图5描绘了根据实施例的用于发现API,以及处理与该API相关联的描述性元数据以生成自然语言处理信息和函数调用构建信息以供智能代理使用的方法的流程图。
图6描绘了根据实施例的用于获得与API相关联的描述性元数据的方法的流程图。
图7是根据实施例的包括智能代理的示例实施方式的***的框图。
图8是可以用于实现各个实施例的示例性基于处理器的计算机***的框图。
通过下文结合附图阐述的具体实施方式,本文中描述的实施例的特征和优点将变得更加显而易见,在附图中,相同的附图标记通篇标识相应元素。在附图中,相同的附图标记通常表示相同、功能相似和/或结构相似的元素。元素首次出现在其中的附图由相应附图标记中最左边的数位指示。
具体实施方式
I.介绍
以下具体实施方式公开了许多示例实施例。本专利申请的范围不限于所公开的实施例,而是还包括所公开的实施例的组合以及对所公开的实施例的修改。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以不一定包括该特定特征、结构或特性。此外,这些短语不一定指代相同的实施例。此外,当结合实施例来描述特定特征、结构或特性时,无论是否明确描述,都可以认为结合其他实施例实现这样的特征、结构或特性将会在相关领域的技术人员的知识范围内。
在讨论中,除非另有声明,否则修饰本公开内容的实施例的特征或一些特征的条件或关系特性的形容词,例如“基本上”和“大约”,被理解为意指条件或特性被限定在针对实施例所期望的应用的、实施例的操作可接受的容差内。
以下描述了多个示例性实施例。应当注意,本文中提供的任何章节标题/小节标题都不旨在进行限制。在整个文档中描述了实施例,并且在任何章节/小节下可以包括任何类型的实施例。此外,在任何章节/小节中公开的实施例可以以任何方式与在同一章节/小节和/或不同章节/小节中描述的任何其他实施例进行组合。
II.示例实施例
本文中描述的示例实施例涉及使智能代理能够进行以下操作的技术:自动发现服务所开放的应用编程接口(API),以获得与该API相关联的描述性元数据;以及基于描述性元数据,生成与该服务的至少一项功能相关联的自然语言处理信息和函数调用构建信息,所述自然语言处理信息和函数调用构建信息可以由智能代理用于自动训练自然语言处理器和函数调用构建器,以支持对该服务的调用和与该服务的交互。
如本文中所使用的,术语“智能代理”广泛地指代能够通过将由此提供的输入(例如文本、语音、图像)与可执行命令进行匹配来代表用户或其他计算机程序来操作的任何计算机程序。例如,智能代理可以被编程为基于用户输入来代表其用户执行自动互联网搜索。智能代理还可以被编程为在被调度为用户执行数据检索任务时或在由用户手动发起时(例如经由话语、上载图像、在线聊天)来为用户执行数据检索任务。通过进一步的说明,使用自然语言处理和语音识别技术的智能代理可以响应于来自用户的口头请求(例如“今天的温度是多少?”)来检索和呈现信息(例如今天的温度)。另外,可以将智能代理编程为使用人工智能技术,例如机器学习,来连续学习。具体而言,当用户与智能代理进行交互时,智能代理可以从用户输入中学习,并且更好地预测用户的需求。
在一些实施方式中,智能代理可以是集成到互联网连接的设备和/或这些设备的计算机程序中的基于云或基于服务器的计算机程序。例如,用户可以通过一个或多个设备与智能代理进行交互,这些设备例如智能扬声器(例如GoogleTMHome、/>HomePodTM)、智能手机、膝上型计算机、笔记本计算机、平板计算机、上网本、可穿戴计算设备(例如智能手表、智能眼镜(例如GoogleTM GlassTM等)、电器、智能车辆或桌面式计算机。另外,智能代理可以内置于设备的操作***(OS)(例如iOS上的OS上的Cortana)和/或独立于设备的OS的应用(例如Samsung/>S8上的/>)中。
在一些实施方式中,智能代理可以协助用户调用服务并与之进行交互以执行期望的任务。为了帮助说明这一点,现在将描述图1。具体而言,图1是使得用户能够经由智能代理102调用服务并与之进行交互的示例***100的框图。例如,用户108可以使用话语或其他形式的用户输入来指导智能代理102代表其执行任务。这些任务可以通过智能代理102可访问的服务来执行,智能代理102通过那些服务所开放的API可以访问那些服务。
如本文所使用的,术语“服务”广泛地是指可以被其他计算机程序访问以执行一项或多项功能的计算机程序。服务的一个非限制性示例是Web服务。在图1中,示出了示例服务122、124、126、128和130。这些服务中的每个服务都可以在相应的计算设备上执行。示例服务122、124、126、128和130中的每个服务可以开放使得智能代理102和其他计算机程序能够经由网络与之交互的API。服务122、124、126、128和130中的每个服务都可以包括任何类型的网络可访问服务,例如数据库服务、社交网络服务、消息传递服务、金融服务服务、新闻服务、搜索服务、生产力服务、云存储和/或文件托管服务、音乐流媒体服务、旅行预订服务等。此类服务的示例包括但不限于Web可访问的SQL(结构化查询语言)数据库、Salesforce.comTM、 Finance、TheNew York/>(在www.nytimes.com处),GoogleTM搜索、/>GoogleDocsTM、/>Office 365、/> Internet Radio、NationalPublic/>等等。
如图1所示,智能代理102包括智能代理用户接口(UI)106和智能代理后端104。智能代理后端104包括自然语言处理器110、函数调用构建器112、API调用器114、API响应处理器116、意图映射数据存储库118以及函数信息数据存储库120。根据一种示例性非限制性实施方式,可以在一个或多个终端用户设备中实现智能代理UI 106,并且可以在一个或多个终端用户设备经由一个或多个网络可访问的一个或多个服务器上实现智能代理后端104。
意图映射数据存储库118和函数信息数据存储库120可以包括一个或多个数据存储设备或***。示例数据存储设备包括但不限于磁盘(例如在硬盘驱动器中)、光盘(例如在光盘驱动器中)、磁带(例如在磁带驱动器中)、RAM设备、ROM设备、网络附接存储装置等。示例数据存储***包括但不限于存储区域网络。数据可以以各种形式,包括但不限于作为数据库和文件,存储在意图映射数据存储库118和函数信息数据存储库120中。
如图1所示,服务122、124和126可由智能代理102可访问,如将API调用器114连接到服务122、124和126的线所指示的。根据图1的***100,仅在服务的开发者(或其他实体)向智能代理102的发布者注册了该服务并采取手动步骤来训练自然语言处理器110以辨识该服务何时被调用之后,智能代理102才可以访问和/或辨识该服务。图1所示的服务128和130尚未向智能代理102的发布者注册,并且自然语言处理器110尚未被手动训练以辨识此类服务。因此,服务128和130无法由智能代理102辨识或访问。
智能代理UI 106被配置为:与用户进行交互,以从交互中捕捉用户输入,并将用户输入提供给自然语言处理器110。例如,用户108可以通过说出一个或多个词(例如“巴塞罗那今天的温度是多少?”)来与智能代理UI 106进行交互,并且智能代理UI 106可以向自然语言处理器110提供话语的表示以供处理。在实施例中,用户108还可以通过以下操作来与智能代理UI 106进行交互:将请求键入到智能代理UI 106中;将图像上载到智能代理UI106;或者以某种其他方式经由智能代理UI 106提供用户输入,该用户输入然后被传递给自然语言处理器110以供处理。
自然语言处理器110被配置为:分析用户输入以识别用户意图,以及还从用户输入中提取与满足用户意图有关的实体。例如,用户意图可以包括执行特定动作(例如安排会议、支付账单或查找新闻文章)。进一步根据该示例,自然语言处理器110可以处理由用户108发出的话语“巴塞罗那今天的温度是多少?”,并识别出用户108的意图是获得温度。自然语言处理器110还可以从该话语中提取与满足用户108的意图有关的实体“今天”和“巴塞罗那”。意图可以用于触发动作和/或用于识别可以执行该动作的服务,并且与执行该动作有关的实体可以用作与该服务相关联的函数调用参数。
自然语言处理器110可以例如通过将来自用户输入的一个或多个关键字或短语与存储在意图映射数据存储库118中的条目进行匹配来识别用户108的意图。意图映射数据存储库118可以存储用户意图到一个或多个关键字和/或短语的映射,用户可以使用所述一个或多个关键字和/或短语来调用服务。例如,短语“订票”和/或关键字“票”可以被映射到“预订航班”的意图。进一步根据该示例,自然语言处理器110可以被配置为:向函数调用构建器112提供意图和/或与用户输入相关联的一个或多个实体。在实施例中,自然语言处理器110还可以向函数调用构建器112提供用户打算调用与该意图相关联的服务的可能性的度量。
函数调用构建器112被配置为基于意图和自然语言处理器110提供的一个或多个实体和/或可以被存储在函数信息数据存储库120中的函数信息(例如函数调用语法、传递的参数、返回的值的类型)来构建用于与服务进行交互的函数调用。函数调用构建器112还被配置为:向API调用器114提供所构造的函数调用以便与服务进行交互。如上所述,函数信息数据存储器120可以存储与构造与服务相关联的函数调用有关的信息(例如函数调用语法)以及应当在函数调用中传递的参数。例如,函数调用构建器112可以基于存储在函数信息数据存储库120中的用于与天气预报服务进行交互的函数调用的模板来构造用于用户输入“巴塞罗那今天的温度是多少?”的函数调用,其中,实体“今天”和“巴塞罗那”被***作为函数调用的参数。
API调用器114被配置为:将从函数调用构建器112接收的函数调用放置到与该函数调用相关联的服务处。为了说明,API调用器114可以响应于用户输入“巴塞罗那今天的温度是多少?”而将由函数调用构建器112构造的函数调用放置到服务122所开放的API处,在该示例中,服务122包括天气预报服务。作为另一示例,API调用器114可以响应于用户输入“播放爵士音乐”而将由函数调用构建器112构造的函数调用放置到服务124所开放的API处,在该示例中,服务124包括音乐流式传输服务。
API响应处理器116被配置为:从由智能代理102调用的服务(例如服务122、服务124、服务126)接收响应,以及经由智能代理UI 106将响应提供给用户108。例如,API响应处理器116可以从服务122获得巴塞罗那的当前温度,并经由智能代理UI 106将此类信息提供给用户108。例如,智能代理UI 106可以将巴塞罗那的温度口头传达给用户108,尽管这仅是一个示例,并且响应也可以例如通过文本或图像或者通过其他方式视觉地传达。服务所提供的响应还可以包括音乐、新闻报道或各种其他类型的内容或信息。响应还可以包括旨在从用户获得另外的信息的问题或提示。
如上所述,根据图1的***100,对于将可由智能代理102访问和/或辨识的服务,服务的开发者(或其他实体)必须向智能代理102的发布者注册该服务,并采取手动步骤来训练自然语言处理器110以辨识该服务何时被调用。例如,可能需要用于预订航班的服务128的开发者向智能代理102的发布者注册服务128,并采取手动步骤来训练自然语言处理器110以辨识用户何时打算通过辨识诸如“预订航班”、“给我预订航班”或“给我买张机票”之类的用户话语或语句来调用服务128。服务128的开发者可能还需要采取手动步骤来训练自然语言处理器110,以将用户输入中包含的某些关键字辨识为与满足用户意图相关的实体。例如,开发者可能需要训练自然语言处理器110以确定用户输入中包括的位置和日期是与满足用户的预订航班意图相关的实体。
上述注册和手动训练过程可能很费力且耗时,并且通常必须针对将通过其提供服务的每个智能代理来分别执行。因此,当前服务的开发者难以经由一个或多个智能代理来使服务可用。
本文中描述的实施例通过使得智能代理能够自动发现服务所开放的API,以及利用与该API相关联的描述性元数据来自动训练自然语言处理器和函数调用构建器以支持对该服务的调用和与该服务的交互来解决一个或多个上述问题。例如,API可以被标记有描述性元数据(例如该服务或其能力的明文描述、与该服务相关联的一个或多个关键字等),并且智能代理可以利用这样的描述性元数据来生成与该服务的至少一项功能相关联的自然语言处理信息和函数调用构建信息。此外,智能代理可以使用自然语言处理信息,以基于用户的至少一个用户输入来确定该用户打算与该服务进行交互;使用函数调用构建信息,以基于该用户的至少一个用户输入来构建用于与该服务进行交互的函数调用;以及代表该用户将该函数调用放置到该服务处。
本文中描述的实施例提供的一些优点包括但绝不限于:在服务的开发者没有向智能代理的发布者注册该服务或采取手动步骤来训练智能代理的自然语言处理器的情况下,该服务可由智能代理自动辨识;在该服务的开发者不必为每个智能代理/发布者执行上述过程的情况下,该服务由多个智能代理识别;一旦新服务被发布,智能代理就能够向用户提供对这些新服务的访问;通过使得智能代理能够自动发现更多服务并代表用户调用这些服务提升了智能代理的能力;以及向智能代理的用户提供对这些附加服务的访问。
为了进一步帮助说明这一点,现在将描述图2。具体而言,图2是示例***200的框图,该示例***200使得智能代理202能够自动发现服务所开放的API,以及利用与该API相关联的描述性元数据来自动训练自然语言处理器和函数调用构建器以支持对该服务的调用和与该服务的交互。
如图2所示,智能代理202包括智能代理UI 106和智能代理后端204。智能代理后端204包括自然语言处理器110、函数调用构建器112、API调用器114、API响应处理器116、意图映射数据存储库118和函数信息数据存储库120。上文参考图1描述了智能代理UI 106、自然语言处理器110、函数调用构建器112、API调用器114、API响应处理器116、意图映射数据存储库118和函数信息数据存储库120。智能代理202的智能代理后端204还包括API搜索实用工具206。还如图2所示,智能代理202可访问服务122、124、126、128和130中的每一个服务。如下文将要讨论的,服务128和130可以由智能代理202发现并且随后代表用户被访问。
API搜索实用工具206被配置为:发现服务所开放的API。例如,API搜索实用工具206可以对一个或多个资源进行自动搜索,以发现智能代理202当前无法访问或无法辨识的服务所开放的一个或多个API。具体而言,API搜索实用工具206可以搜索一个或多个资源(例如API资源210、API资源212),可以通过公用网络(例如互联网)或专用网络(例如企业网络)来访问其中的每个资源以发现与服务128和130相关联的API。例如,API搜索实用工具206可以在API资源210中发现服务128所开放的API,以及在API资源212中发现服务130所开放的API。在另一个实施例中,可以在相同资源中找到服务128和130所开放的API。服务128和130中的每一个服务都可以由智能代理202的发布者或第三方发布者来发布。
在一些实施例中,API资源210和212可以包括以下各种类型资源中的一种或多种资源:API信息储存库(例如GoogleTM API Explorer)、软件开发工具包(SDK)、开发者资源网站(例如开发者网络)或API库。然而,这些示例绝不是限制性的,并且API资源210和212可以包含API搜索实用工具206可以访问的有关API的各种资源中的任何一种资源。
在实施例中,API搜索实用工具206可以被配置为周期性地或间歇性地自动执行搜索。例如,API搜索实用工具206可以被配置为每小时、每天、每周或按照某个其他周期来执行搜索。搜索的频率可以由***管理员208或某个其他实体来管理或配置。在又一个实施例中,***管理员208或其他实体可以直接与API搜索实用工具206进行交互以使API搜索实用工具206执行搜索。在再一个实施例中,自然语言处理器110或智能代理后端204的某个其他组件可以被配置为:使API搜索实用工具206响应于基于确定用户108的意图不能基于某个用户输入被确定(或可靠地确定)而执行搜索。在这种场景下,API搜索实用工具206可以使用由用户108提供的用户输入或其某个部分来聚焦搜索或确定搜索目标。例如,从用户输入中提取的关键字可以用于制定搜索查询,该搜索查询由API搜索实用工具206使用以针对一个或多个API资源执行API搜索。
API搜索实用工具206还被配置为:获得与所发现的API相关联的描述性元数据。例如,API搜索实用工具206还可以从API资源210和212获得与服务128和130所开放的API相关联的描述性元数据。另外地或替代地,API搜索实用工具206可以通过查询API本身来获得与所发现的API相关联的描述性元数据(例如经由通过统一资源定位符(URL)的获取请求)。在实施例中,描述性元数据可以包括开放了API的服务和/或其能力的明文描述。描述性元数据还可以包括与服务相关联的一个或多个关键字。另外,在实施例中,描述性元数据可以包括结构化数据或非结构化数据中的一项或多项。
在实施例中,API的发布者可以发布描述性元数据作为API代码本身的一部分。API搜索实用工具206也可以配置为从此类代码中的注释中获取描述性元数据。更进一步,描述性元数据可以是众包的(即,由用户提交)。
API搜索实用工具206还被配置为:基于获得的描述性元数据来生成与服务的至少一项功能相关联的自然语言处理信息和函数调用构建信息。例如,API搜索实用工具206可以通过基于描述性元数据确定由服务提供的功能的目的或目标、与实现该目的或目标相关的参数以及用于指示调用该功能的意图的用户输入,来生成自然语言处理信息。为了说明,与由数字图书馆服务所开放的API相关联的描述性元数据可以描述该服务的功能,例如“删除书及其内容”,以及与该功能相关联的参数的描述,例如“要删除的书的标识符(ID)”。基于该示例描述性元数据,API搜索实用工具206可以确定:数字图书馆服务的功能的目的是要从用户的数字图书馆“移除书”;与移除书有关的参数是该书的ID;以及用于指示执行该功能的意图的一些用户输入,例如“移除书”或“删除书”。为了进一步说明,API搜索实用工具206可以在意图映射数据存储库118中存储所生成的自然语言处理信息,从而在数字图书馆服务的功能和用户输入“删除书”和“移除书”之间创建映射,并指示与该功能相关联的用户输入的实体是要移除的书的ID。
API搜索实用工具206还可以基于所获得的描述性元数据来生成函数调用构建信息(例如函数调用语法、传递的参数、返回的值的类型),并将函数构建信息存储在函数信息数据存储库120中。替代地,API搜索实用工具206可以通过搜索各种资源来获得这样的函数调用构建信息,这些资源可以包括API资源210和API资源212,并且从中收集数据。例如,API搜索实用工具206可以通过从以下中的一项或多项收集数据来生成函数调用构建信息:API信息储存库(例如GoogleTM API Explorer)、SDK、开发者资源网站(例如开发者网络)、或API库。然而,这些示例绝不是限制性的,并且API搜索实用工具可以从API搜索实用工具206可以访问的各种资源中收集用于生成函数调用构建信息的数据。
在实施例中,服务的开发者可以将具有特定格式的自然语言处理信息和函数调用构建信息包括在与该服务的API相关联的描述性元数据中,使得自然语言处理信息和函数调用构建信息可以容易地被API搜索实用工具206检测和提取。
***200因此可以以各种方式操作以使得智能代理能够自动发现服务所开放的API,以及代表用户调用新发现的API并与之进行交互。例如,在实施例中,***200可以根据图3来操作。图3描绘了根据示例实施例的用于使得能够自动发现服务所开放的API,以及利用与该API相关联的描述性元数据来自动训练自然语言处理器和函数调用构建器以支持对该服务的调用和与该服务的交互的方法的流程图300。将继续参考图2来描述图3。然而,基于以下关于流程图300的讨论,其他结构和操作实施例对于相关领域的技术人员将是显而易见的。
如图3所示,流程图300的方法开始于步骤302。在步骤302中,发现了服务所开放的API。例如,并且继续参考图2,API搜索实用工具206可以发现服务128或服务130所开放的API。
在实施例中,步骤302中的对API的发现可以作为由***管理员或其他实体通过与API搜索实用工具206的交互而执行的搜索的一部分而发生。在另一个实施例中,步骤302中的对API发现可以作为由API搜索实用工具206自动执行的搜索的一部分而发生。这样的自动搜索可以周期性地或间歇性地进行。在又一个实施例中,步骤302中的对API的发现可以响应于确定自然语言处理器110不能识别(或可靠地识别)用户108打算与之交互的服务而发生。
在步骤304处,获得与该API相关联的描述性元数据。例如,并且继续参考图2,API搜索实用工具206可以获得与服务128或服务130所开放的API相关联的描述性元数据。如上所述,描述性元数据可以包括该服务或其能力的明文描述中的一项或多项,或者与该服务相关联的一个或多个关键字,尽管这些示例并非旨在进行限制。同样如上所述,描述性元数据可以包括结构化数据或非结构化数据中的一项或多项。
在一个实施例中,在步骤304中通过查询API获得描述性元数据。例如,API搜索实用工具206可以查询服务128或服务130所开放的API以获得描述性元数据。在替代实施例中,在步骤304中通过搜索一个或多个资源来获得描述性元数据,这些资源例如但不限于API信息储存库、SDK、开发者资源网站或API库。例如,API搜索实用工具206可以通过搜索这些资源中的一个或多个资源来获得描述性元数据。
在步骤306处,基于描述性元数据来生成自然语言处理信息和函数调用构建信息,其中,自然语言处理信息和函数调用信息与该服务的至少一项功能相关联。例如,并且继续参考图2,API搜索实用工具206可以基于描述性元数据来生成与服务128或服务130的至少一项功能相关联的自然语言处理信息和函数调用构建信息。
在替代实施例中,不是基于描述性元数据来生成函数调用构建信息,而是基于从搜索一个或多个资源获得的数据来生成函数调用构建信息。例如,API搜索实用工具206可以搜索一个或多个资源以从中获取数据,并且函数调用构建信息可以基于该数据来生成。仅作为示例,这些资源可以包括但绝不限于API信息储存库、SDK、开发者资源网站或API库。在又一个实施例中,可以基于描述性元数据和通过搜索这些资源获得的数据的组合来生成函数调用构建信息。
在步骤306中已经生成了自然语言处理信息之后,可以将其存储在可由智能代理的自然语言处理器访问的数据存储库中。例如,在API搜索实用工具206已经生成了自然语言处理信息之后,它可以将这些信息存储在智能代理202的自然语言处理器110可访问的意图映射数据存储库118中。同样,在步骤306中已经生成了函数调用构建信息之后,可以将其存储在智能代理的函数调用构建器可访问的数据存储库中。例如,在API搜索实用工具206已经生成了函数调用构建信息之后,它可以将这些信息存储在智能代理202的函数调用构建器112可访问的函数信息数据存储库120中。
在步骤308处,使用自然语言处理信息,基于用户的至少一个话语来确定该用户打算与该服务进行交互。例如,并且继续参考图2,自然语言处理器110可以使用自然语言处理信息,基于用户108的至少一个话语来确定该用户打算与服务128或服务130进行交互。进一步根据该示例,自然语言处理器110可以通过将来自用户108的话语的关键字和/或短语映射到服务128或服务130来确定该用户打算与服务128或服务130进行交互,其中,这样的映射由意图映射数据存储库118中存储的自然语言处理信息定义或根据该自然语言处理信息来定义。
在步骤310处,使用函数调用构建信息,基于用户的至少一个话语,构建用于与服务进行交互的函数调用。例如,并且继续参考图2,函数调用构建器112可以使用函数调用构建信息,基于用户的至少一个话语来构建用于与服务128或服务130进行交互的函数调用。进一步根据该示例,函数调用构建器112可以使用存储在函数信息数据存储库120中的函数调用构建信息来构建用于与服务128或服务130进行交互的函数调用。
在步骤312处,代表用户将该函数调用放置到该服务处。例如,并继续参考图2,API调用器114代表用户108将该函数调用放置到服务128或服务130处。
为了进一步帮助说明这一点,现在将描述图4。具体而言,图4是根据实施例的包括API搜索实用工具206的示例***400的框图,该API搜索实用工具206可以自动发现API,以及处理与该API相关联的描述性元数据以生成自然语言处理信息和函数调用构建信息以供智能代理使用。如图4所示,API搜索实用工具206包括API识别器402、元数据***404和元数据处理器406。API搜索实用工具206及其每个子组件可以包括在一个或多个计算设备上执行的软件。
API识别器402被配置为发现服务所开放的API。例如,API识别器402可以搜索一个或多个资源以发现服务所开放的一个或多个API。具体而言,API识别器402可以搜索一个或多个资源(例如API资源210、API资源212)以发现服务所开放的一个或多个API。
元数据***404还被配置为:获得与所发现的API相关联的描述性元数据。例如,元数据***404还可以从API资源210和/或212获得与所发现的API相关联的描述性元数据。另外地或替代地,元数据***404可以例如通过查询API(例如经由通过URL的获取请求,或者以某种其他方式)从API自身获得与所发现的API相关联的描述性元数据。如前所述,针对给定API的描述性元数据也可以通过对API代码中的注释进行解析来获得。这样的描述性元数据也可以由各种用户以众包方式提交。
元数据处理器406被配置为:基于由元数据***404获得的描述性元数据,生成与该服务的至少一项功能相关联的自然语言处理信息和函数调用构建信息。在替代的实施例中,元数据处理器406还可以基于从一个或多个资源(例如但不限于API资源210和/或API资源212)获得的数据,或者基于由元数据***404获得的描述性元数据与从该一个或多个资源获得的数据的组合,来生成函数调用构建信息。元数据处理器406还配置为:将自然语言处理信息存储在意图映射数据存储库118中,并且将函数调用构建信息存储在函数信息数据存储库120中。在实施例中,自然语言处理信息可由智能代理(例如图2的智能代理202)用来确定用户已经调用了该服务,并且函数调用构建信息可由智能代理用来构建用于与该服务进行交互的函数调用。
***400因此可以以各种方式操作以使得能够处理与所发现的服务的API相关联的描述性元数据,以生成智能代理可以用来调用该服务和/或与该服务进行交互的自然语言处理信息和函数调用构建信息。例如,在实施例中,***400可以根据图5来操作。图5描绘了根据示例实施例的用于发现API,以及处理与该API相关联的描述性元数据以生成自然语言处理信息和函数调用构建信息以供智能代理使用的方法的流程图500。将继续参考图4来描述图5。然而,基于以下关于流程图400的讨论,其他结构和操作实施例对于相关领域的技术人员将是显而易见的。
如图5所示,流程图500的方法开始于步骤502。在步骤502中,发现了服务所开放的API。例如,并且继续参考图4,API识别器402可以发现API。
在步骤504处,获得与该API相关联的描述性元数据。例如,并且继续参考图4,元数据***404可以获得与所发现的API相关联的描述性元数据。
在步骤506处,对描述性元数据进行处理以生成自然语言处理信息和函数调用构建信息。自然语言处理信息可由智能代理用来确定用户已经调用了该服务,并且函数调用构建信息可由智能代理用来构建用于与该服务进行交互的函数调用。例如,并且继续参考图4,元数据处理器406可以对元数据进行处理以生成自然语言处理信息和函数调用构建信息。如上所述,元数据处理器406还可以基于从一个或多个资源获得的数据而不是描述性元数据,或除了描述性元数据之外还基于从一个或多个资源获得的数据,来生成函数调用构建信息。
图6描绘了根据实施例的用于获得与API相关联的描述性元数据的方法的流程图600。图6的步骤602和604是执行图3的步骤304的方法。步骤602和604可以组合地或彼此替代地执行。
如图6所示,流程图600的方法开始于步骤602。在步骤602处,通过查询该API获得与该API相关联的元数据。例如,并且继续参考图2,API搜索实用工具206可以通过查询该API来获得与该API相关联的元数据。
在步骤604处,通过搜索API信息储存库、SDK、开发者资源网站或API库中的一项或多项来获得与该API相关联的元数据。例如,并继续参考图2,API搜索实用工具206可以通过搜索API信息储存库、SDK、开发者资源网站或API库中的一项或多项来获得与该API关联的元数据。
为了进一步帮助说明这一点,现在将描述图7。图7是根据实施例的包括智能代理702的示例实施方式的***700的框图。智能代理702可以是图2的智能代理202的示例实施例。如图7所示,智能代理702包括:智能代理用户接口(UI)706,其可以是智能代理UI 106的示例;以及智能代理后端704,其可以是智能代理后端204的示例。
智能代理702可以是集成到互联网连接的设备和/或这些设备的计算机程序中的基于云或基于服务器的计算机程序。例如,可以在诸如智能扬声器710、智能电话712和膝上型计算机708之类的一个或多个设备中实现智能代理UI 706。例如,用户108可以通过智能扬声器710、智能电话712和膝上型计算机708来与智能代理702进行交互。智能代理702的智能代理后端704可以在一个或多个数据中心或其他远程位置中的一个或多个服务器(例如714A、714N)上实现。智能代理UI 706可以通过网络716发送来自用户的、要由智能代理702的智能代理后端704处理的用户请求,并且智能代理702的智能代理后端704可以通过网络716向智能代理用户接口706发送将被传递给用户108的、对用户请求的响应。然而,该实施方式仅是示例性的,并且应当理解,智能代理702的组件可以在与图7所示的那些设备相同或不同的设备上实现。
III.示例计算机***实施方式
***100、200、400和700的任何组件以及图3、图5和图6的流程图的任何步骤可以用硬件,或者具有软件和/或固件的任意组合的硬件来实现,包括被实现为配置为在一个或多个处理器中执行并存储在计算机可读存储介质中的计算机程序代码,或者被实现为硬件逻辑/电路,例如在片上***(SoC)中实现。SoC可以包括集成电路芯片,该集成电路芯片包括以下各项中的一项或多项:处理器(例如微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口、和/或用于执行其功能的其他电路和/或嵌入式固件。
图8描绘了可以用于实现本文描述的各个实施例(例如在以上章节中参考图1-图7描述的任何实施例)的示例性基于处理器的计算机***800。例如,基于处理器的计算机***800可以用于实现上文参考图1、图2、图4和图7描述的***100、200、400和700的任何组件以及上文参考图3、图5和图6描述的任何流程图。本文提供的***800的描述是出于说明的目的而提供的,并且不意图是限制性的。如相关领域技术人员所知晓的,可以在其他类型的计算机***中实现实施例。
如图8所示,***800包括:处理单元802、***存储器804和总线806,总线806将包括***存储器804的各种***组件耦合至处理单元802。处理单元802可以包括一个或多个硬件实现的微处理器或微处理器核。总线806表示若干类型的总线结构中的任何总线结构中一种或多种,包括存储器总线或存储器控制器、***总线、加速图形端口、以及使用各种总线架构中的任意一种的处理器或局部总线。***存储器804包括只读存储器(ROM)808和随机存取存储器(RAM)810。基本输入/输出***812(BIOS)被存储在ROM 808中。
***800还具有以下驱动器中的一项或多项:用于从硬盘读取并向硬盘写入的硬盘驱动器814、用于从可移动磁盘818读取并向可移动磁盘818写入的磁盘驱动器816、以及用于从可移动光盘822(例如CD ROM、DVD ROM、蓝光TM光盘或其他光学介质)读取并向可移动光盘822写入的光盘驱动器820。硬盘驱动器814、磁盘驱动器816和光盘驱动器820分别通过硬盘驱动器接口824、磁盘驱动器接口826和光盘驱动器接口828连接到总线806。驱动器及其相关联的计算机可读介质为计算机提供对计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管描述了硬盘、可移动磁盘和可移动光盘,但是其他类型的计算机可读存储器设备和存储结构也可以用于存储数据,例如固态驱动器(SSD)、闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等。
多个程序模块可以被存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序模块包括操作***830、一个或多个应用程序832、其他程序模块834和程序数据836。根据各个实施例,程序模块可以包括计算机程序逻辑,该计算机程序逻辑可以由处理单元802执行以实现在以上章节中参考图1-图7描述的任何实施例。例如,程序模块可以包括计算机程序逻辑,该计算机程序逻辑可以由处理单元802执行以实现上文参考图1、图2、图4和图7描述的***100、200、400和700的任何组件以及上文参考图3、图5和图6描述的任何流程图。
用户可通过诸如键盘862和定点设备840(例如鼠标)之类的输入设备来向计算机800输入命令和信息。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏控制器、扫描仪等。在一个实施例中,提供了与显示器844结合的触摸屏,以允许用户经由对触摸屏上的一个或多个点施加触摸(例如通过手指或手写笔)来提供用户输入。这些和其他输入设备通常通过耦合至总线806的串行端口接口842连接到处理单元802,但是也可以通过其他接口连接(例如并行端口、游戏端口或通用串行总线(USB))。这样的接口可以是有线接口或无线接口。
显示器844经由诸如视频适配器846之类的接口连接至总线806。除了显示器844之外,***800还可以包括其他***输出设备(未示出),例如扬声器和打印机。
***800通过网络接口850、调制解调器852或用于在网络上建立通信的其他合适的单元连接到网络848(例如局域网或诸如互联网之类的广域网)。调制解调器852(其可以是内部的或外部的)经由串行端口接口842连接到总线806。***800可以包括多个网络接口。
如本文中所使用的,术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”通常用于指代存储设备或存储结构,例如与硬盘驱动器814相关联的硬盘、可移动磁盘818、可移动光盘822,以及其他存储器设备或存储结构,例如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等。这样的计算机可读存储介质与通信介质有所区别并且不重叠(不包括通信介质)。通信介质通常体现为计算机可读指令、数据结构、程序模块或调制数据信号(如载波波形)中的其他数据。术语“调制数据信号”意指其一个或多个特性以用于对信号中的信息进行编码的方式来设置或改变的信号。通过举例而非限制的方式,通信介质包括诸如声学、RF、红外线和其他无线介质之类的无线介质。实施例还涉及这样的通信介质。
如上所述,计算机程序和模块(包括应用程序832和其他程序模块834)可以被存储在硬盘、磁盘、光盘、ROM或RAM上。也可以经由网络接口850、串行端口接口842或任何其他接口类型来接收这样的计算机程序。当由应用来执行或加载时,这样的计算机程序使得***800能够实现本文所讨论的实施例的特征。因此,这样的计算机程序表示***800的控制器。
实施例还涉及包括被存储在任何计算机可用介质上的软件的计算机程序产品。当在一个或多个数据处理设备中执行时,这样的软件使数据处理设备按本文所述进行操作。实施例可以采用现在或将来知晓的任何计算机可用或计算机可读介质。计算机可读介质的示例包括但不限于存储器设备和存储结构,例如RAM、硬盘驱动器、软盘、CD ROM、DVD ROM、压缩磁盘、磁带、磁存储设备、光学存储设备、MEM、基于纳米技术的存储设备等。
IV.附加示例实施例
在实施例中,一种***,包括:一个或多个处理器;一个或多个存储器设备,其连接到所述一个或多个处理器,所述一个或多个存储器设备存储计算机程序逻辑以供所述一个或多个处理器执行,所述计算机程序逻辑包括:应用编程接口(API)搜索实用工具,其被配置为:发现服务所开放的API,以获得与所述API相关联的描述性元数据,以及基于所述描述性元数据来生成自然语言处理信息;自然语言处理器,其被配置为:使用所述自然语言处理信息,以基于用户的至少一个用户输入来确定所述用户打算与所述服务进行交互;函数调用构建器,其被配置为:使用与所述服务的至少一项功能相关联的函数调用构建信息,以基于所述用户的所述至少一个用户输入来构建用于与所述服务进行交互的函数调用;以及API调用器,其被配置为代表所述用户将所述函数调用放置到所述服务处。
在上述***的实施例中,所述描述性元数据包括以下各项中的一项或多项:所述服务或其能力的明文描述;或者与所述服务相关联的一个或多个关键字。
在上述***的实施例中,所述描述性元数据包括结构化数据或非结构化数据中的一项或多项。
在上述***的实施例中,所述API搜索实用工具被配置为:通过查询所述API来获得与所述API相关联的所述描述性元数据。
在上述***的实施例中,所述API搜索实用工具被配置为通过搜索以下各项中的一项或多项来获得与所述API相关联的所述描述性元数据:API信息储存库;软件开发工具包(SDK);开发者资源网站;或者API库。
在上述***的实施例中,所述API搜索实用工具被配置为:响应于确定所述自然语言处理器不能识别所述用户打算与之交互的服务来发现所述API。
在上述***的实施例中,所述API搜索实用工具被配置为由***管理员执行,或者周期性地或间歇性地自动执行。
在上述***的实施例中,所述API搜索实用工具还被配置为:基于所述描述性元数据来生成所述函数调用构建信息。
在上述***的实施例中,所述API搜索实用工具还被配置为基于通过搜索以下各项中的一项或多项获得的信息来生成所述函数调用构建信息:API信息储存库;软件开发工具包(SDK);开发者资源网站;或者API库。
在实施例中,一种***包括:一个或多个处理器;一个或多个存储器设备,其连接到所述一个或多个处理器,所述一个或多个存储器设备存储计算机程序逻辑以供所述一个或多个处理器执行,所述计算机程序逻辑包括:应用编程接口(API)搜索实用工具,其包括:API识别器,其被配置为:发现服务所开放的API;元数据***,其被配置为:获得与所述API相关联的描述性元数据;以及元数据处理器,其被配置为:对所述描述性元数据进行处理以生成自然语言处理信息,所述自然语言处理信息可由智能代理使用以确定用户已经调用了所述服务。
在上述***的实施例中,所述元数据***被配置为:通过查询所述API来获得与所述API相关联的所述描述性元数据。
在上述***的实施例中,所述元数据***被配置为通过搜索以下各项中的一项或多项来获得与所述API相关联的所述描述性元数据:API信息储存库;软件开发工具包(SDK);开发者资源网站;或者API库。
在上述***的实施例中,所述元数据处理器还被配置为:将所述自然语言处理信息存储在所述智能代理的自然语言处理器可访问的数据存储库中。
在上述***的实施例中,元数据处理器还被配置为:对所述描述性元数据进行处理以生成函数调用构建信息,所述函数调用构建信息可由所述智能代理使用以构建用于与所述服务进行交互的函数调用。
在上述***的实施例中,所述元数据处理器还被配置为:将所述函数调用构建信息存储在所述智能代理的函数调用构建器可访问的数据存储库中。
在另一实施例中,一种由一个或多个计算设备实现的方法,包括:发现服务所开放的应用编程接口(API);获得与所述API相关联的描述性元数据;基于所述描述性元数据,生成与所述服务的至少一项功能相关联的自然语言处理信息;使用所述自然语言处理信息,以基于用户的至少一个用户输入来确定所述用户打算与所述服务进行交互;使用函数调用构建信息,以基于所述用户的所述至少一个用户输入来构建用于与所述服务进行交互的函数调用;以及代表所述用户将所述函数调用放置到所述服务处。
在上述方法的实施例中,所述描述性元数据包括以下各项中的一项或多项:所述服务或其能力的明文描述;或者与所述服务相关联的一个或多个关键字。
在上述方法的实施例中,所述描述性元数据包括结构化数据或非结构化数据中的一项或多项。
在上述方法的实施例中,获得与所述API相关联的所述描述性元数据包括:查询所述API。
在上述方法的实施例中,获得与所述API相关联的所述描述性元数据包括搜索以下各项中的一项或多项:API信息储存库;软件开发工具包(SDK);开发者资源网站;或者API库。
V.结论
虽然已在上文描述了各个实施例,但应当理解的是,这些实施例是通过仅举例而非限制的方式来呈现的。对相关领域的技术人员来说显而易见的是,可以在不脱离所附权利要求书中定义的、本发明的精神和范围的前提下,在形式和细节上进行各种变化。因此,本发明的广度和范围不应由上述示例性实施例中的任何一个实施例限制,而是应当仅根据所附权利要求及其等同物来定义。
Claims (14)
1.一种用于自动发现服务所开放的应用编程接口的***,所述***包括:
一个或多个处理器;
一个或多个存储器设备,其连接到所述一个或多个处理器,所述一个或多个存储器设备存储计算机程序逻辑以供所述一个或多个处理器执行,所述计算机程序逻辑包括:
应用编程接口API搜索实用工具,其被配置为:发现服务所开放的API,所述服务无法被所述***的当前训练的自然语言处理器辨识;
获得与所发现的API相关联的描述性元数据;以及使用所述描述性元数据来生成自然语言处理信息,所述自然语言处理信息包括用户输入与所述服务的功能之间的映射;
自然语言处理器,其被配置为:基于所述自然语言处理信息以及接收到来自用户的所述用户输入来确定所述用户打算与所述服务进行交互;
函数调用构建器,其被配置为:基于与所述服务的所述功能相关联的函数调用构建信息以及接收到来自所述用户的所述用户输入来构建用于与所述服务进行交互的函数调用;以及
API调用器,其被配置为代表所述用户将所述函数调用放置到所述服务。
2.根据权利要求1所述的***,其中,所述描述性元数据包括以下各项中的一项或多项:
所述服务或其能力的明文描述;或者
与所述服务相关联的一个或多个关键字。
3.根据权利要求1所述的***,其中,所述描述性元数据包括结构化数据或非结构化数据中的一项或多项。
4.根据权利要求1所述的***,其中,所述API搜索实用工具被配置为:通过查询所述API来获得与所述API相关联的所述描述性元数据。
5.根据权利要求1所述的***,其中,所述API搜索实用工具被配置为通过搜索以下各项中的一项或多项来获得与所述API相关联的所述描述性元数据:
API信息储存库;
软件开发工具包;
开发者资源网站;或者
API库。
6.根据权利要求1所述的***,其中,所述API搜索实用工具被配置为:响应于确定所述自然语言处理器不能识别所述用户打算与之交互的服务来发现所述API。
7.根据权利要求1所述的***,其中,所述API搜索实用工具被配置为由***管理员执行,或者周期性地或间歇性地自动执行。
8.根据权利要求1所述的***,其中,所述API搜索实用工具还被配置为:基于所述描述性元数据来生成所述函数调用构建信息。
9.根据权利要求1所述的***,其中,所述API搜索实用工具还被配置为基于通过搜索以下各项中的一项或多项获得的信息来生成所述函数调用构建信息:
API信息储存库;
软件开发工具包;
开发者资源网站;或者
API库。
10.一种由一个或多个计算设备实现的用于自动发现服务所开放的应用编程接口的方法,所述方法包括:
发现服务所开放的应用编程接口API,所述服务无法被***的当前训练的自然语言处理器辨识;
获得与所发现的API相关联的描述性元数据;
通过使用所述描述性元数据,生成自然语言处理信息,所述自然语言处理信息包括用户输入与所述服务的功能之间的映射;
基于所述自然语言处理信息以及接收到来自用户的所述用户输入来确定所述用户打算与所述服务进行交互;
基于函数调用构建信息以及接收到来自所述用户的所述用户输入来构建用于与所述服务进行交互的函数调用;以及
代表所述用户将所述函数调用放置到所述服务。
11.根据权利要求10所述的方法,其中,所述描述性元数据包括以下各项中的一项或多项:
所述服务或其能力的明文描述;或者
与所述服务相关联的一个或多个关键字。
12.根据权利要求10所述的方法,其中,所述描述性元数据包括结构化数据或非结构化数据中的一项或多项。
13.根据权利要求10所述的方法,其中,获得与所述API相关联的所述描述性元数据包括:查询所述API。
14.根据权利要求10所述的方法,其中,获得与所述API相关联的所述描述性元数据包括搜索以下各项中的一项或多项:
API信息储存库;
软件开发工具包;
开发者资源网站;或者
API库。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/868,905 | 2018-01-11 | ||
US15/868,905 US10810056B2 (en) | 2018-01-11 | 2018-01-11 | Adding descriptive metadata to application programming interfaces for consumption by an intelligent agent |
PCT/US2018/067766 WO2019139782A1 (en) | 2018-01-11 | 2018-12-27 | Adding descriptive metadata to application programming interfaces for consumption by an intelligent agent |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111566638A CN111566638A (zh) | 2020-08-21 |
CN111566638B true CN111566638B (zh) | 2024-04-12 |
Family
ID=65036909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880085717.7A Active CN111566638B (zh) | 2018-01-11 | 2018-12-27 | 向应用编程接口添加描述性元数据以供智能代理使用 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10810056B2 (zh) |
EP (1) | EP3738052A1 (zh) |
CN (1) | CN111566638B (zh) |
WO (1) | WO2019139782A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521462B2 (en) * | 2018-02-27 | 2019-12-31 | Accenture Global Solutions Limited | Virtual services rapid deployment tool |
US10656973B2 (en) * | 2018-08-23 | 2020-05-19 | Fujitsu Limited | Automated API evaluation based on API parameter resolution |
US10839167B2 (en) * | 2018-12-04 | 2020-11-17 | Verizon Patent And Licensing Inc. | Systems and methods for dynamically expanding natural language processing agent capacity |
US11423089B2 (en) * | 2019-09-25 | 2022-08-23 | Dell Products L.P. | System and method for determining application programming interface and object bindings on natural language processed inputs |
US11218594B1 (en) * | 2020-08-11 | 2022-01-04 | Genesys Telecommunications Laboratories, Inc. | System and method for creating bots for automating first party touchpoints |
US11537456B2 (en) * | 2020-09-16 | 2022-12-27 | Zscaler, Inc. | Selectively exposing application programming interfaces dynamically for microservices |
CN113901097A (zh) * | 2021-10-12 | 2022-01-07 | 山东可信云信息技术研究院 | 微服务架构下服务链路及业务的快速检索方法及*** |
CN114860912B (zh) * | 2022-05-20 | 2023-08-29 | 马上消费金融股份有限公司 | 数据处理方法、装置、电子设备和存储介质 |
US20240152337A1 (en) * | 2022-11-04 | 2024-05-09 | Delany Group, Llc | System and methods for automated api determination, generation, and integration |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101669113A (zh) * | 2007-04-27 | 2010-03-10 | 微软公司 | 从表单和表元数据中导出web服务接口的方法 |
US20130110518A1 (en) * | 2010-01-18 | 2013-05-02 | Apple Inc. | Active Input Elicitation by Intelligent Automated Assistant |
US9015730B1 (en) * | 2013-12-17 | 2015-04-21 | International Business Machines Corporation | Natural language access to application programming interfaces |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9990353B2 (en) * | 2015-12-22 | 2018-06-05 | Successfactors, Inc. | Natural language interface for software customization |
WO2017132660A1 (en) * | 2016-01-29 | 2017-08-03 | Liquid Analytics, Inc. | Systems and methods for dynamic prediction of workflows |
US10491690B2 (en) * | 2016-12-31 | 2019-11-26 | Entefy Inc. | Distributed natural language message interpretation engine |
US10558467B2 (en) * | 2017-03-30 | 2020-02-11 | International Business Machines Corporation | Dynamically generating a service pipeline comprising filtered application programming interfaces |
US10203938B2 (en) * | 2017-04-21 | 2019-02-12 | Accenture Global Solutions Limited | Application engineering platform |
-
2018
- 2018-01-11 US US15/868,905 patent/US10810056B2/en active Active
- 2018-12-27 CN CN201880085717.7A patent/CN111566638B/zh active Active
- 2018-12-27 EP EP18836578.7A patent/EP3738052A1/en not_active Withdrawn
- 2018-12-27 WO PCT/US2018/067766 patent/WO2019139782A1/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101669113A (zh) * | 2007-04-27 | 2010-03-10 | 微软公司 | 从表单和表元数据中导出web服务接口的方法 |
US20130110518A1 (en) * | 2010-01-18 | 2013-05-02 | Apple Inc. | Active Input Elicitation by Intelligent Automated Assistant |
US9015730B1 (en) * | 2013-12-17 | 2015-04-21 | International Business Machines Corporation | Natural language access to application programming interfaces |
Also Published As
Publication number | Publication date |
---|---|
EP3738052A1 (en) | 2020-11-18 |
WO2019139782A1 (en) | 2019-07-18 |
US20190213057A1 (en) | 2019-07-11 |
CN111566638A (zh) | 2020-08-21 |
US10810056B2 (en) | 2020-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111566638B (zh) | 向应用编程接口添加描述性元数据以供智能代理使用 | |
US20220214775A1 (en) | Method for extracting salient dialog usage from live data | |
US20210132986A1 (en) | Back-end task fulfillment for dialog-driven applications | |
CN109983460B (zh) | 用于开发对话驱动式应用程序的服务 | |
US10460728B2 (en) | Exporting dialog-driven applications to digital communication platforms | |
CN107924679B (zh) | 计算机实施的方法、输入理解***和计算机可读存储设备 | |
US11321371B2 (en) | Query expansion using a graph of question and answer vocabulary | |
US10698654B2 (en) | Ranking and boosting relevant distributable digital assistant operations | |
CN103400579B (zh) | 一种语音识别***和构建方法 | |
US10108698B2 (en) | Common data repository for improving transactional efficiencies of user interactions with a computing device | |
TW202020691A (zh) | 特徵詞的確定方法、裝置和伺服器 | |
US11966389B2 (en) | Natural language to structured query generation via paraphrasing | |
US10083398B2 (en) | Framework for annotated-text search using indexed parallel fields | |
US20190347068A1 (en) | Personal history recall | |
WO2021112822A1 (en) | Intent addition for a chatbot | |
US20210034704A1 (en) | Identifying Ambiguity in Semantic Resources | |
CN113741864B (zh) | 基于自然语言处理的语义化服务接口自动设计方法与*** | |
US20210109960A1 (en) | Electronic apparatus and controlling method thereof | |
CN113918125A (zh) | 一种应用程序生成方法、装置、设备及存储介质 | |
CN116627902A (zh) | 配置参数定位方法、装置、计算机设备及存储介质 | |
WO2019083601A1 (en) | CLASSIFICATION AND AMPLIFICATION OF RELEVANT DISTRIBUTABLE DIGITAL ASSISTANT OPERATIONS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |