CN118132568A - 调用外部api或者查询数据库的方法及存储介质 - Google Patents

调用外部api或者查询数据库的方法及存储介质 Download PDF

Info

Publication number
CN118132568A
CN118132568A CN202410559955.4A CN202410559955A CN118132568A CN 118132568 A CN118132568 A CN 118132568A CN 202410559955 A CN202410559955 A CN 202410559955A CN 118132568 A CN118132568 A CN 118132568A
Authority
CN
China
Prior art keywords
query
database
request
api
filling
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.)
Granted
Application number
CN202410559955.4A
Other languages
English (en)
Other versions
CN118132568B (en
Inventor
戴诗琪
王文山
苏康建
吴弘毅
沈继明
陈固煟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Istrong Technology Co ltd
Original Assignee
Istrong Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Istrong Technology Co ltd filed Critical Istrong Technology Co ltd
Priority to CN202410559955.4A priority Critical patent/CN118132568B/xx
Priority claimed from CN202410559955.4A external-priority patent/CN118132568B/xx
Publication of CN118132568A publication Critical patent/CN118132568A/zh
Application granted granted Critical
Publication of CN118132568B publication Critical patent/CN118132568B/xx

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种调用外部API或者查询数据库的方法及存储介质,该方法对于调用外部API请求只需填写接口地址、输入参数、输出参数、请求方式、回复模板,即可直接调用外部API,并自动取出API返回的数据按照回复模板进行填充,无需自定义动作服务,使普通用户也可以进行配置,降低了使用门槛;对于查询数据库,在NLU阶段分类其查询意图,则直接将其表结构加入提示词传递给LLM,通过大模型直接转换成数据库查询语言进行查询,无需对每个查询需求都封装服务,减少开发工程量。

Description

调用外部API或者查询数据库的方法及存储介质
技术领域
本申请涉及自然语言处理技术领域,具体涉及一种基于Rasa框架调用外部API或者查询数据库的方法及存储介质。
背景技术
随着人工智能技术的不断进步,问答机器人在诸多领域都得到了广泛的应用,如教育、医疗、金融等领域,帮助用户解决常见问题,提供更快速、准确的信息和服务。为了获取更丰富的信息和功能,满足用户更多的需求,调用外部API是一种有效的解决方法,比如天气、股票行情等,通过调用外部API可以实现实时更新,让用户获取最新的信息。在垂直应用领域,通过调用相应的业务API,问答机器人可以提供更准确、全面的回答,而针对部分未封装业务API的场景,通过支持查询数据库,也可以扩展其应用范围,提高用户体验。
Rasa是一个用于构建对话机器人的开源机器学习框架,几乎覆盖了对话***的所有功能,每个模块都有很好的可扩展性,相较于传统的对话机器人框架,Rasa更具高效性和灵活性。该框架主要包括Rasa NLU和Rasa Core,其中Rasa NLU主要负责将用户的输入转换成意图和实体信息,Rasa Core主要负责基于当前和历史的对话记录,决策下一个动作(action),下一个动作包括特定响应动作(responses)和自定义动作(Custom actions)。在自定义动作中可以实现调用外部API和数据库查询等操作,具备一定的可扩展性,但灵活性不足,因为需要额外编写自定义动作的远端服务,在服务中编写代码定义输入输出以及生成最终的回答,相当于需要对外部API进行二次封装,对每个需要查询的属性都需要单独构建服务,开发量较大。
发明内容
鉴于上述问题,本申请提供了一种基于Rasa框架调用外部API或者查询数据库的方法及存储介质,解决现有的Rasa框架中实现外部API和数据库查询等操作灵活性不足,需要用户额外编写自定义动作的远端服务,对每个需要查询的属性都需要单独构建服务,开发量较大的问题。
为实现上述目的,发明人提供了一种基于Rasa框架调用外部API或者查询数据库的方法,包括:
当收到用户的查询问题后,确定通过调用外部API或者查询数据库返回目标业务信息;
当确定为调用外部API时,根据收到的查询问题对Rasa框架的domain中增加API配置进行查询参数填充及请求体参数填充;
然后根据API配置中的接口地址、查询参数、请求头参数、请求体参数及请求方式执行外部API请求;
接收外部API请求返回的查询结果;
当确定为查询数据库时,则根据NLU阶段的数据库查询的意图类别从domain中的DB配置确定对应的数据库表结构;
将确定的数据库表结构与查询问题融合传递给大语言模型,转化为数据库查询语句,获取查询结果;
根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句,返回给用户。
在一些实施例中,所述查询参数填充包括以下步骤:
判断API配置文件中的查询参数中的变量是否有填充标识;
若有,则根据查询问题中的查询参数确定对应的实体值,然后将确定的实体值填充到API配置的查询参数对应的填充标识中。
在一些实施例中,所述请求体参数填充具体包括以下步骤:
确定API配置中请求方式;
当请求方式为POST时,则根据查询问题中的请求体参数确定对应的实体值,然后将确定的实体值填充到API配置的请求体参数对应的填充标识中;
当请求方式为GET时,则无需进行请求体参数填充。
在一些实施例中,所述根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句具体包括以下步骤:
将查询问题中提取的查询参数对应的实体和查询结果合并至同一字典中;
根据请求成功的答复模板,将字典中的实体填充到答复模板中,得到答复语句。
在一些实施例中,所述确定通过调用外部API或者查询数据库返回目标业务信息具体包括以下步骤:
判断Rasa框架的domain中是否增加API配置;
若有,则确定通过外部API返回目标业务信息;
若没有,则确定通过查询数据库返回目标业务信息。
另一个技术方案,一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器运行时执行以下步骤:
当收到用户的查询问题后,确定通过调用外部API或者查询数据库返回目标业务信息;
当确定为调用外部API时,根据收到的查询问题对Rasa框架的domain中增加API配置进行查询参数填充及请求体参数填充;
然后根据API配置中的接口地址、查询参数、请求头参数、请求体参数及请求方式执行外部API请求;
接收外部API请求返回的查询结果;
当确定为查询数据库时,则根据NLU阶段的数据库查询的意图类别从domain中的DB配置确定对应的数据库表结构;
将确定的数据库表结构与查询问题融合传递给大语言模型,转化为数据库查询语句,获取查询结果;
根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句,返回给用户。
在一些实施例中,所述查询参数填充包括以下步骤:
判断API配置文件中的查询参数中的变量是否有填充标识;
若有,则根据查询问题中的查询参数确定对应的实体值,然后将确定的实体值填充到API配置的查询参数对应的填充标识中。
在一些实施例中,所述请求体参数填充具体包括以下步骤:
确定API配置中请求方式;
当请求方式为POST时,则根据查询问题中的请求体参数确定对应的实体值,然后将确定的实体值填充到API配置的请求体参数对应的填充标识中;
当请求方式为GET时,则无需进行请求体参数填充。
在一些实施例中,所述根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句具体包括以下步骤:
将查询问题中提取的查询参数对应的实体和查询结果合并至同一字典中;
根据请求成功的答复模板,将字典中的实体填充到答复模板中,得到答复语句。
在一些实施例中,所述确定通过调用外部API或者查询数据库返回目标业务信息具体包括以下步骤:
判断Rasa框架的domain中是否增加API配置;
若有,则确定通过外部API返回目标业务信息;
若没有,则确定通过查询数据库返回目标业务信息。
区别于现有技术,上述技术方案,当收到用户的查询问题时,确定通过调用外部API或者查询数据库返回目标业务信息,当确定通过调用外部API请求进行获取目标业务信息时,则根据收到的查询问题对Rasa框架的domain中增加的API配置进行查询参数填充及请求体参数填充,其中,API配置中包括接口地址、查询参数、请求头参数、请求体参数及请求方式;当查询参数填充和请求体参数填充完成后,则根据API配置中的接口地址、查询参数、请求头参数、请求体参数及请求方式执行外部API请求,返回查询结果,当确定通过查询数据库获取目标业务信息时,则通过根据NLU阶段的数据库查询的意图类别从domain中的DB配置确定对应的数据库表结构,其中在domain中增加DB配置记录数据库表结构,通过确定的数据库表结构与查询问题融合传递给大语言模型,转化为数据库查询语句,获取查询结果;当通过调用外部API请求获取查询结果或者查询数据库获取查询结果后,根据查询结果生成答复语句进行返回给用户。在调用外部API请求时,无需自定义动作服务,使普通用户也可以进行配置,降低了使用门槛;同时不管是调用外部API请求或者查询数据库,无需对每个查询需求都封装服务,减少了开发工程量。
上述发明内容相关记载仅是本申请技术方案的概述,为了让本领域普通技术人员能够更清楚地了解本申请的技术方案,进而可以依据说明书的文字及附图记载的内容予以实施,并且为了让本申请的上述目的及其它目的、特征和优点能够更易于理解,以下结合本申请的具体实施方式及附图进行说明。
附图说明
附图仅用于示出本申请具体实施方式以及其他相关内容的原理、实现方式、应用、特点以及效果等,并不能认为是对本申请的限制。
在说明书附图中:
图1为具体实施方式所述基于Rasa框架调用外部API或者查询数据库的方法的一种流程示意图;
图2为具体实施方式所述API配置的前端配置界面的一种示意图;
图3为具体实施方式所述API配置的后端获取的yml文件格式的一种示意图;
图4为具体实施方式所述DB配置的后端获取的yml文件格式的一种示意图;
图5为具体实施方式所述存储介质的一种结构示意图。
上述各附图中涉及的附图标记说明如下:
510、存储介质,
520、处理器。
具体实施方式
为详细说明本申请可能的应用场景,技术原理,可实施的具体方案,能实现目的与效果等,以下结合所列举的具体实施例并配合附图详予说明。本文所记载的实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中各个位置出现的“实施例”一词并不一定指代相同的实施例,亦不特别限定其与其它实施例之间的独立性或关联性。原则上,在本申请中,只要不存在技术矛盾或冲突,各实施例中所提到的各项技术特征均可以以任意方式进行组合,以形成相应的可实施的技术方案。
除非另有定义,本文所使用的技术术语的含义与本申请所属技术领域的技术人员通常理解的含义相同;本文中对相关术语的使用只是为了描述具体的实施例,而不是旨在限制本申请。
在本申请的描述中,用语“和/或”是一种用于描述对象之间逻辑关系的表述,表示可以存在三种关系,例如A和/或B,表示:存在A,存在B,以及同时存在A和B这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”的逻辑关系。
在本申请中,诸如“第一”和“第二”之类的用语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何实际的数量、主次或顺序等关系。
在没有更多限制的情况下,在本申请中,语句中所使用的“包括”、“包含”、“具有”或者其他类似的表述,意在涵盖非排他性的包含,这些表述并不排除在包括所述要素的过程、方法或者产品中还可以存在另外的要素,从而使得包括一系列要素的过程、方法或者产品中不仅可以包括那些限定的要素,而且还可以包括没有明确列出的其他要素,或者还包括为这种过程、方法或者产品所固有的要素。
与《审查指南》中的理解相同,在本申请中,“大于”、“小于”、“超过”等表述理解为不包括本数;“以上”、“以下”、“以内”等表述理解为包括本数。此外,在本申请实施例的描述中“多个”的含义是两个以上(包括两个),与之类似的与“多”相关的表述亦做此类理解,例如“多组”、“多次”等,除非另有明确具体的限定。
在本申请实施例的描述中,所使用的与空间相关的表述,诸如“中心”“纵向”“横向”“长度”“宽度”“厚度”“上”“下”“前”“后”“左”“右”“竖直”“水平”“垂直”“顶”“底”“内”“外”“顺时针”“逆时针”“轴向”“径向”“周向”等,所指示的方位或位置关系是基于具体实施例或附图所示的方位或位置关系,仅是为了便于描述本申请的具体实施例或便于读者理解,而不是指示或暗示所指的装置或部件必须具有特定的位置、特定的方位、或以特定的方位构造或操作,因此不能理解为对本申请实施例的限制。
除非另有明确的规定或限定,在本申请实施例的描述中,所使用的“安装”“相连”“连接”“固定”“设置”等用语应做广义理解。例如,所述“连接”可以是固定连接,也可以是可拆卸连接,或成一体设置;其可以是机械连接,也可以是电连接,也可以是通信连接;其可以是直接相连,也可以通过中间媒介间接相连;其可以是两个元件内部的连通或两个元件的相互作用关系。对于本申请所属技术领域的技术人员而言,可以根据具体情况理解上述用语在本申请实施例中的具体含义。
请参阅图1,本实施例提供了一种基于Rasa框架调用外部API或者查询数据库的方法,包括:
步骤S110:当收到用户的查询问题后,确定通过调用外部API或者查询数据库返回目标业务信息;
步骤S120:当确定为调用外部API时,根据收到的查询问题对Rasa框架的domain中增加API配置进行查询参数填充及请求体参数填充;
步骤S130:然后根据API配置中的接口地址、查询参数、请求头参数、请求体参数及请求方式执行外部API请求;
步骤S140:接收外部API请求返回的查询结果;
步骤S150:当确定为查询数据库时,则根据NLU阶段的数据库查询的意图类别从domain中的DB配置确定对应的数据库表结构;
步骤S160:将确定的数据库表结构与查询问题融合传递给大语言模型,转化为数据库查询语句,获取查询结果;
步骤S170:根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句,返回给用户。
当收到用户的查询问题时,确定通过调用外部API或者查询数据库返回目标业务信息,当确定通过调用外部API请求进行获取目标业务信息时,则根据收到的查询问题对Rasa框架的domain中增加的API配置进行查询参数填充及请求体参数填充,其中,通过在Rasa框架的domain中增加API配置,API配置中包括接口地址、查询参数、请求头参数、请求体参数及请求方式,用户可以在API配置的前端配置界面中输入接口地址、查询参数、请求体参数、请求方式、回复模板等,当用户在查询相依内的问题时,则可以通过API配置进行调用外部的API请求;当查询参数填充和请求体参数填充完成后,则根据API配置中的接口地址、查询参数、请求头参数、请求体参数及请求方式执行外部API请求,返回查询结果,当确定通过查询数据库获取目标业务信息时,则通过根据NLU阶段的数据库查询的意图类别从domain中的DB配置确定对应的数据库表结构,其中在domain中增加DB配置记录数据库表结构,通过确定的数据库表结构与查询问题融合传递给大语言模型,转化为数据库查询语句,获取查询结果;当通过调用外部API请求获取查询结果或者查询数据库获取查询结果后,根据查询结果生成答复语句进行返回给用户。在调用外部API请求时,无需自定义动作服务,使普通用户也可以进行配置,降低了使用门槛;同时不管是调用外部API请求或者查询数据库,无需对每个查询需求都封装服务,减少了开发工程量。
在一些实施例中,所述查询参数填充包括以下步骤:
判断API配置文件中的查询参数中的变量是否有填充标识;
若有,则根据查询问题中的查询参数确定对应的实体值,然后将确定的实体值填充到API配置的查询参数对应的填充标识中。
查询参数query填充,查询参数以键值对的形式拼接在请求地址上,通常用于传递较小的数据,若查询参数中需要传递实体值则需要对实体值进行填充,如用户提问“山竹台风的最大风力是多少?”,在NLU阶段将提取出typhoon_name的实体值为“山竹”,并记录在对话跟踪的tracker中,相应的查询API需要输入参数TyphoonName,则在配置时使用“{}”符号标识实体变量,即配置参数中params为{“TyphoonName”:{typhoon_name}},填充后传入API的值为{“TyphoonName”:“山竹”}。其中,填充标识为{}。
在一些实施例中,所述请求体参数填充具体包括以下步骤:
确定API配置中请求方式;
当请求方式为POST时,则根据查询问题中的请求体参数确定对应的实体值,然后将确定的实体值填充到API配置的请求体参数对应的填充标识中;
当请求方式为GET时,则无需进行请求体参数填充。
请求体参数body填充,body参数是请求主体部分的数据,通常用于传递较大的数据,当请求方式为POST时,若请求体参数中需要填充实体值,按照查询参数填充中相同方法进行填充,当请求方式为GET时,只能传查询参数,无请求体参数。
在一些实施例中,所述根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句具体包括以下步骤:
将查询问题中提取的查询参数对应的实体和查询结果合并至同一字典中;
根据请求成功的答复模板,将字典中的实体填充到答复模板中,得到答复语句。
增加ApiNaturalLanguageGenerator类,针对API返回的结果生成回复,首先将问题中提取的实体和API请求返回的结果合并至同一字典中,根据success_template将字典中的值填充到回复模板中,需要填充的变量依然用“{}”表示,与请求时的参数填充不同的是支持字典和列表的取值填充,避免了在代码中对API返回结果进行取值封装,其中字典用“.”表示,列表用“[]”表示。如success_template为“好的,您查询的数据为{response_body.data[0]}。”,匹配到存在“{}”时,首先按“.”分割字典的层级,包含“response_body”和“data[0]”两个层级,其中“response_body”中不包含“[]”标识,则直接按照字典取key“response_body”的value, “data[0]”则取出“[]”中的数值0,然后在上一层级的value中进一步提取key为“data”的value,并按列表取出第0个元素的值进行填充,如其值为“15级”,则最终返回“好的,你查询的数据为15级”。
在一些实施例中,所述确定通过调用外部API或者查询数据库返回目标业务信息具体包括以下步骤:
判断Rasa框架的domain中是否增加API配置;
若有,则确定通过外部API返回目标业务信息;
若没有,则确定通过查询数据库返回目标业务信息。
当在Rasa框架的domain中增加了API配置时,则当需要对查询问题进行答复时,则采用调用外部API请求的方式进行获取目标业务信息,而当domain中增加未API配置,则通过查询数据库进行获取目标业务信息。在其他实施例中当Rasa框架的domain中增加了API配置的情况下,也可以通过获取用户的需求进行选择调用外部API或者查询数据库返回目标业务信息。
在另一实施例中,基于Rasa框架调用外部API或者查询数据库的方法旨在特定响应动作(responses)和自定义动作(Custom actions)之外,新增两个Action类,一个是ActionAPI,用于执行调用外部API,一个是ActionDB,用于执行数据库查询。同时增加一个NLG类ApiNaturalLanguageGenerator,针对调用外部API和数据库查询的结果生成回复。
调用外部API的具体步骤如下:
1、在domain中增加API配置,前端配置界面如图2所示,后端获取的yml文件格式如图3所示,其中action_api_name为要调用的API接口名称,details中为API的详细参数,具体包括method请求方式、url接口地址、params查询参数、headers请求头参数、body请求体参数、success_template为API请求成功时的回复模板、error_template为请求失败时的回复模板、default_nlg为是否要调用大语言模型进行润色的选项。
2、增加默认动作ActionAPI,与自定义Action的区别是不调用远端服务,默认执行查询参数query填充、请求体参数body填充、API请求三个步骤,具体如下:
(1)查询参数query填充,query参数以键值对的形式拼接在请求地址上,通常用于传递较小的数据,若查询参数中需要传递实体值则需要对实体值进行填充,如用户提问“山竹台风的最大风力是多少?”,在NLU阶段将提取出typhoon_name的实体值为“山竹”,并记录在对话跟踪的tracker中,相应的查询API需要输入参数TyphoonName,则在配置时使用“{}”符号标识实体变量,即配置参数中params为{“TyphoonName”:{typhoon_name}},填充后传入API的值为{“TyphoonName”:“山竹”}。
(2)请求体参数body填充,body参数是请求主体部分的数据,通常用于传递较大的数据,当请求方式为POST时,若请求体参数中需要填充实体值,按照步骤1中相同方法进行填充,当请求方式为GET时,只能传查询参数,无请求体参数。
(3)根据url、method、headers、params、body执行外部API请求,若请求失败则直接返回配置的error_template,若请求成功将获取结果存入response_body中,并调用NLG模块。
3、增加ApiNaturalLanguageGenerator类,针对API返回的结果生成回复,首先将问题中提取的实体和API请求返回的结果合并至同一字典中,根据success_template将字典中的值填充到回复模板中,需要填充的变量依然用“{}”表示,与请求时的参数填充不同的是支持字典和列表的取值填充,避免了在代码中对API返回结果进行取值封装,其中字典用“.”表示,列表用“[]”表示。如success_template为“好的,您查询的数据为{response_body.data[0]}。”,匹配到存在“{}”时,首先按“.”分割字典的层级,包含“response_body”和“data[0]”两个层级,其中“response_body”中不包含“[]”标识,则直接按照字典取key“response_body”的value, “data[0]”则取出“[]”中的数值0,然后在上一层级的value中进一步提取key为“data”的value,并按列表取出第0个元素的值进行填充,如其值为“15级”,则最终返回“好的,你查询的数据为15级”。
而数据库查询的步骤如下:
4.在NLU阶段增加数据库查询的意图类别,每个查询意图对应不同的数据库表,在domain中增加DB配置记录数据库表结构,如图4所示,其中action_db_name为要执行的数据库查询操作名称,table_name为相应的数据库表名,info为对该表的说明,field为其包含的属性,列举出所有属性名称,及其含义和类型,success_template为查询数据库成功时的回复模板、error_template为失败时的回复模板、default_nlg为是否要调用大语言模型进行润色的选项。
5. 增加默认动作ActionDB,通过将数据库表结构和用户问题融合传递给大语言模型,令其转换成数据库查询语句从而获取查询结果,以MySQL数据库为例,其提示词设置如下:
“你是一位 MySQL专家,请根据给定的表 Schema 和问题,写出查询语句。
schema 如下:
{schema}
问题如下:
{question}
下面写出查询语句:”
对schema和question进行填充,schema为配置中table_name层级内所有内容,question为用户提问的问题文本。在数据库上执行大语言模型转换的查询语句获得最终的查询结果,存入response_body中。
6. 调用ApiNaturalLanguageGenerator类,针对数据库查询结果生成回复,同步骤3。
对于调用外部API请求只需填写接口地址、输入参数、输出参数、请求方式、回复模板,即可直接调用外部API,并自动取出API返回的数据按照回复模板进行填充,无需自定义动作服务,使普通用户也可以进行配置,降低了使用门槛;对于查询数据库,在NLU阶段分类其查询意图,则直接将其表结构加入提示词传递给LLM,通过大模型直接转换成数据库查询语言进行查询,无需对每个查询需求都封装服务,减少开发工程量。
该方法无需二次封装业务API,可直接复用原始接口,减少开发成本。无需配置远端action服务,部署更轻量化。去代码化,普通用户可配置,降低使用门槛,更易维护。针对没有封装业务API的场景,支持直接查询数据库获取更多业务信息,通过使用大模型智能转换查询语句,比人工设置规则转换更简便更灵活。
请参阅图5,另一个技术方案,一种存储介质510,所述存储介质510存储有计算机程序,所述计算机程序被处理器520运行时执行以下步骤:
当收到用户的查询问题后,确定通过调用外部API或者查询数据库返回目标业务信息;
当确定为调用外部API时,根据收到的查询问题对Rasa框架的domain中增加API配置进行查询参数填充及请求体参数填充;
然后根据API配置中的接口地址、查询参数、请求头参数、请求体参数及请求方式执行外部API请求;
接收外部API请求返回的查询结果;
当确定为查询数据库时,则根据NLU阶段的数据库查询的意图类别从domain中的DB配置确定对应的数据库表结构;
将确定的数据库表结构与查询问题融合传递给大语言模型,转化为数据库查询语句,获取查询结果;
根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句,返回给用户。
当收到用户的查询问题时,确定通过调用外部API或者查询数据库返回目标业务信息,当确定通过调用外部API请求进行获取目标业务信息时,则根据收到的查询问题对Rasa框架的domain中增加的API配置进行查询参数填充及请求体参数填充,其中,API配置中包括接口地址、查询参数、请求头参数、请求体参数及请求方式;当查询参数填充和请求体参数填充完成后,则根据API配置中的接口地址、查询参数、请求头参数、请求体参数及请求方式执行外部API请求,返回查询结果,当确定通过查询数据库获取目标业务信息时,则通过根据NLU阶段的数据库查询的意图类别从domain中的DB配置确定对应的数据库表结构,其中在domain中增加DB配置记录数据库表结构,通过确定的数据库表结构与查询问题融合传递给大语言模型,转化为数据库查询语句,获取查询结果;当通过调用外部API请求获取查询结果或者查询数据库获取查询结果后,根据查询结果生成答复语句进行返回给用户。在调用外部API请求时,无需自定义动作服务,使普通用户也可以进行配置,降低了使用门槛;同时不管是调用外部API请求或者查询数据库,无需对每个查询需求都封装服务,减少了开发工程量。
在一些实施例中,所述查询参数填充包括以下步骤:
判断API配置文件中的查询参数中的变量是否有填充标识;
若有,则根据查询问题中的查询参数确定对应的实体值,然后将确定的实体值填充到API配置的查询参数对应的填充标识中。
查询参数query填充,查询参数以键值对的形式拼接在请求地址上,通常用于传递较小的数据,若查询参数中需要传递实体值则需要对实体值进行填充,如用户提问“山竹台风的最大风力是多少?”,在NLU阶段将提取出typhoon_name的实体值为“山竹”,并记录在对话跟踪的tracker中,相应的查询API需要输入参数TyphoonName,则在配置时使用“{}”符号标识实体变量,即配置参数中params为{“TyphoonName”:{typhoon_name}},填充后传入API的值为{“TyphoonName”:“山竹”}。其中,填充标识为{}。
在一些实施例中,所述请求体参数填充具体包括以下步骤:
确定API配置中请求方式;
当请求方式为POST时,则根据查询问题中的请求体参数确定对应的实体值,然后将确定的实体值填充到API配置的请求体参数对应的填充标识中;
当请求方式为GET时,则无需进行请求体参数填充。
请求体参数body填充,body参数是请求主体部分的数据,通常用于传递较大的数据,当请求方式为POST时,若请求体参数中需要填充实体值,按照查询参数填充中相同方法进行填充,当请求方式为GET时,只能传查询参数,无请求体参数。
在一些实施例中,所述根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句具体包括以下步骤:
将查询问题中提取的查询参数对应的实体和查询结果合并至同一字典中;
根据请求成功的答复模板,将字典中的实体填充到答复模板中,得到答复语句。
增加ApiNaturalLanguageGenerator类,针对API返回的结果生成回复,首先将问题中提取的实体和API请求返回的结果合并至同一字典中,根据success_template将字典中的值填充到回复模板中,需要填充的变量依然用“{}”表示,与请求时的参数填充不同的是支持字典和列表的取值填充,避免了在代码中对API返回结果进行取值封装,其中字典用“.”表示,列表用“[]”表示。如success_template为“好的,您查询的数据为{response_body.data[0]}。”,匹配到存在“{}”时,首先按“.”分割字典的层级,包含“response_body”和“data[0]”两个层级,其中“response_body”中不包含“[]”标识,则直接按照字典取key“response_body”的value, “data[0]”则取出“[]”中的数值0,然后在上一层级的value中进一步提取key为“data”的value,并按列表取出第0个元素的值进行填充,如其值为“15级”,则最终返回“好的,你查询的数据为15级”。
在一些实施例中,所述确定通过调用外部API或者查询数据库返回目标业务信息具体包括以下步骤:
判断Rasa框架的domain中是否增加API配置;
若有,则确定通过外部API返回目标业务信息;
若没有,则确定通过查询数据库返回目标业务信息。
当在Rasa框架的domain中增加了API配置时,则当需要对查询问题进行答复时,则采用调用外部API请求的方式进行获取目标业务信息,而当domain中增加未API配置,则通过查询数据库进行获取目标业务信息。在其他实施例中当Rasa框架的domain中增加了API配置的情况下,也可以通过获取用户的需求进行选择调用外部API或者查询数据库返回目标业务信息。
最后需要说明的是,尽管在本申请的说明书文字及附图中已经对上述各实施例进行了描述,但并不能因此限制本申请的专利保护范围。凡是基于本申请的实质理念,利用本申请说明书文字及附图记载的内容所作的等效结构或等效流程替换或修改产生的技术方案,以及直接或间接地将以上实施例的技术方案实施于其他相关的技术领域等,均包括在本申请的专利保护范围之内。

Claims (10)

1.一种调用外部API或者查询数据库的方法,其特征在于,包括:
当收到用户的查询问题后,确定通过调用外部API或者查询数据库返回目标业务信息;
当确定为调用外部API时,根据收到的查询问题对Rasa框架的domain中增加的API配置进行查询参数填充及请求体参数填充;
然后根据API配置中的接口地址、查询参数、请求头参数、请求体参数及请求方式执行外部API请求;
接收外部API请求返回的查询结果;
当确定为查询数据库时,则根据NLU阶段的数据库查询的意图类别从domain中的DB配置确定对应的数据库表结构;
将确定的数据库表结构与查询问题融合传递给大语言模型,转化为数据库查询语句,获取查询结果;
根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句,返回给用户。
2.根据权利要求1所述调用外部API或者查询数据库的方法,其特征在于,所述查询参数填充包括以下步骤:
判断API配置文件中的查询参数中的变量是否有填充标识;
若有,则根据查询问题中的查询参数确定对应的实体值,然后将确定的实体值填充到API配置的查询参数对应的填充标识中。
3.根据权利要求1所述的调用外部API或者查询数据库的方法,其特征在于,所述请求体参数填充具体包括以下步骤:
确定API配置中请求方式;
当请求方式为POST时,则根据查询问题中的请求体参数确定对应的实体值,然后将确定的实体值填充到API配置的请求体参数对应的填充标识中;
当请求方式为GET时,则无需进行请求体参数填充。
4.根据权利要求1所述的调用外部API或者查询数据库的方法,其特征在于,所述根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句具体包括以下步骤:
将查询问题中提取的查询参数对应的实体和查询结果合并至同一字典中;
根据请求成功的答复模板,将字典中的实体填充到答复模板中,得到答复语句。
5.根据权利要求1所述的调用外部API或者查询数据库的方法,其特征在于,所述确定通过调用外部API或者查询数据库返回目标业务信息具体包括以下步骤:
判断Rasa框架的domain中是否增加API配置;
若有,则确定通过外部API返回目标业务信息;
若没有,则确定通过查询数据库返回目标业务信息。
6.一种存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行以下步骤:
当收到用户的查询问题后,确定通过调用外部API或者查询数据库返回目标业务信息;
当确定为调用外部API时,根据收到的查询问题对Rasa框架的domain中增加API配置进行查询参数填充及请求体参数填充;
然后根据API配置中的接口地址、查询参数、请求头参数、请求体参数及请求方式执行外部API请求;
接收外部API请求返回的查询结果;
当确定为查询数据库时,则根据NLU阶段的数据库查询的意图类别从domain中的DB配置确定对应的数据库表结构;
将确定的数据库表结构与查询问题融合传递给大语言模型,转化为数据库查询语句,获取查询结果;
根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句,返回给用户。
7.根据权利要求6所述的存储介质,其特征在于,所述查询参数填充包括以下步骤:
判断API配置文件中的查询参数中的变量是否有填充标识;
若有,则根据查询问题中的查询参数确定对应的实体值,然后将确定的实体值填充到API配置的查询参数对应的填充标识中。
8.根据权利要求6所述的存储介质,其特征在于,所述请求体参数填充具体包括以下步骤:
确定API配置中请求方式;
当请求方式为POST时,则根据查询问题中的请求体参数确定对应的实体值,然后将确定的实体值填充到API配置的请求体参数对应的填充标识中;
当请求方式为GET时,则无需进行请求体参数填充。
9.根据权利要求6所述的存储介质,其特征在于,所述根据调用外部API请求返回的查询结果或者查询数据库获取的查询结果生成答复语句具体包括以下步骤:
将查询问题中提取的查询参数对应的实体和查询结果合并至同一字典中;
根据请求成功的答复模板,将字典中的实体填充到答复模板中,得到答复语句。
10.根据权利要求6所述的存储介质,其特征在于,所述确定通过调用外部API或者查询数据库返回目标业务信息具体包括以下步骤:
判断Rasa框架的domain中是否增加API配置;
若有,则确定通过外部API返回目标业务信息;
若没有,则确定通过查询数据库返回目标业务信息。
CN202410559955.4A 2024-05-08 Method for calling external API or inquiring database and storage medium CN118132568B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410559955.4A CN118132568B (en) 2024-05-08 Method for calling external API or inquiring database and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410559955.4A CN118132568B (en) 2024-05-08 Method for calling external API or inquiring database and storage medium

Publications (2)

Publication Number Publication Date
CN118132568A true CN118132568A (zh) 2024-06-04
CN118132568B CN118132568B (en) 2024-08-16

Family

ID=

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109101415A (zh) * 2018-06-25 2018-12-28 平安科技(深圳)有限公司 基于数据库比对的接口测试方法、***、设备和存储介质
CN112685032A (zh) * 2020-12-31 2021-04-20 北京赛思信安技术股份有限公司 一种基于spring boot框架的动态api可视化生成方法
US20210124805A1 (en) * 2019-10-23 2021-04-29 Bayerische Motoren Werke Aktiengesellschaft Hybrid Policy Dialogue Manager for Intelligent Personal Assistants
CN114579085A (zh) * 2020-12-01 2022-06-03 深圳市远行科技股份有限公司 网关的api开发方法及装置
US11860914B1 (en) * 2023-02-27 2024-01-02 Casetext, Inc. Natural language database generation and query system
CN117370523A (zh) * 2023-10-17 2024-01-09 中国电信股份有限公司 大语言模型应用服务方法及装置
CN117370493A (zh) * 2023-09-22 2024-01-09 中国司法大数据研究院有限公司 一种基于大语言模型的***智能交互方法与装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109101415A (zh) * 2018-06-25 2018-12-28 平安科技(深圳)有限公司 基于数据库比对的接口测试方法、***、设备和存储介质
US20210124805A1 (en) * 2019-10-23 2021-04-29 Bayerische Motoren Werke Aktiengesellschaft Hybrid Policy Dialogue Manager for Intelligent Personal Assistants
CN114579085A (zh) * 2020-12-01 2022-06-03 深圳市远行科技股份有限公司 网关的api开发方法及装置
CN112685032A (zh) * 2020-12-31 2021-04-20 北京赛思信安技术股份有限公司 一种基于spring boot框架的动态api可视化生成方法
US11860914B1 (en) * 2023-02-27 2024-01-02 Casetext, Inc. Natural language database generation and query system
CN117370493A (zh) * 2023-09-22 2024-01-09 中国司法大数据研究院有限公司 一种基于大语言模型的***智能交互方法与装置
CN117370523A (zh) * 2023-10-17 2024-01-09 中国电信股份有限公司 大语言模型应用服务方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
岳国栋;宁慧;刘超;郭江鸿;: "基于百度地图的旅店查询***的研究与开发", 应用科技, no. 04, 4 July 2013 (2013-07-04) *

Similar Documents

Publication Publication Date Title
CN117056471A (zh) 知识库构建方法及基于生成式大语言模型的问答对话方法和***
CN100428241C (zh) 用于定义和翻译聊天缩略语的***和方法
US6446098B1 (en) Method for converting two-dimensional data into a canonical representation
US8054953B2 (en) Method and system for executing correlative services
CN108491443A (zh) 由计算机实施的与用户对话的方法和计算机***
CN111666006B (zh) 画作问答方法及装置、画作问答***、可读存储介质
CN108446313B (zh) 一种数据格式转换方法和装置
CN109902087B (zh) 用于问答的数据处理方法及装置、服务器
CN116483980A (zh) 人机交互方法、装置及***
US6999934B2 (en) Method and system for processing, storing, retrieving and presenting information with an extendable interface for natural and artificial languages
CN115714030A (zh) 一种基于疼痛感知和主动交互的医疗问答***及方法
CN109471957B (zh) 一种基于统一标签的元数据转换方法及装置
CN117668182A (zh) 融合知识图谱和大语言模型的规范智能问答方法及***
CN117573842A (zh) 文档检索方法以及自动问答方法
US20190205436A1 (en) System and method for executing database operations on a database
CN118132568A (zh) 调用外部api或者查询数据库的方法及存储介质
CN115577085A (zh) 表格问答任务的处理方法及设备
US20190108290A1 (en) Human assisted automated question and answer system using natural language processing of real-time requests assisted by humans for requests of low confidence
EP1297451B1 (en) Service provision in a communications network
CN111611344B (zh) 基于字典和知识图谱的复杂属性查询方法、***及设备
CN110210014B (zh) 智能表格***
CN117828064B (zh) 一种问答***及问答***的构建方法
KR101195529B1 (ko) 문장 첨삭 서비스 제공 장치 및 방법
CN117951171A (zh) 数据处理方法、装置、电子设备及存储介质
CN116108137A (zh) 信息检索方法、介质、设备及装置

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