本文介绍应用中心-插件中心的功能介绍。2024年6月30日我们将升级调整插件功能,现有版本将会下线。详情请查看插件服务更新通知
操作说明
API插件的新建、编辑、展示等均在「插件中心」菜单中。
添加API插件
填写插件名称以及插件描述,点击下一步后保存插件的基本信息。
插件名称租户内唯一
插件名称不能超过50个字符,插件描述不能超过500个字符
插件描述,是LLM调度插件的重要判断依据。LLM会根据插件的描述信息判断是否使用该插件解决用户问题,同时会根据插件描述、插件出入参等信息构建Manifest信息传递给模型,模型根据以上信息对用户的输入进行识别槽位、填补槽位等操作,最终将识别的参数传递给API完成插件的执行。可以参考如何写好插件及API出入参的描述
更新插件详细配置
当前API插件支持HTTP/HTTPS协议直接对接到平台上。
HTTP协议配置项说明
1、调用方式
当前支持最常用的两种调用协议GET和POST
2、接口地址
需要带上https/http的协议头
3、输入参数
由【参数code】【参数类型】【取值来源】【参数解释】共同组成。
【参数code】为接口的入参code,【参数解释】是对该入参的功能描述,这两部分是Manifest的重要组成部分,是大模型对入参进行识别、挖槽位、填槽位的重要依据,所以对参数code和参数解释进行明确且有效的定义,可以参考如何定义好插件的入参。
【取值来源】当前有两种:业务透传、模型识别,默认为模型识别。
如果入参勾选为“模型识别”,则说明该参数值的来源需要大模型从用户输入中进行提取。
该参数会被构造在Manifest中一同传递给大模型,大模型根据该参数的配置,对用户的输入进行识别提取,在API调用时对指定参数进行赋值。
如果入参勾选为“业务透传”,则说明该参数值的来源是从外部主动透传过来的。
该参数不会传递给大模型,大模型也不会感知该参数,业务方通过“bizVars”进行透传,详见【应用调用】或【测试窗】。
假设一个场景,用户想在某电商平台咨询“xx手机多少钱”,由于用户在平台上有会员、优惠券等抵扣的优惠,所以计算xx手机多少钱是需要传给API两个参数:「xx手机」以及「用户id」。xx手机是需要大模型从用户的问题中识别出来的参数,选择【模型识别】;用户id是不会让用户在问题中体现出来的,这个时候就需要选择【业务透传】,并在调用的时候通过bizVars透传给应用当中。
【参数类型】当前仅支持简单类型,string字符串,number数字以及boolean布尔型。
4、输出参数
如上图为例,输出参数以data、errorInfo和status为主体结构,且不可编辑,status的返回值为string,仅接收success为成功的返回值,所以接入的api返回需要满足以下结构,否则会报错“插件API 返回结果与定义不一致。
{
"data":{
"a":"1",
"b":"2",
……
},
"errorInfo":"",
"status":"success"
}
data支持list、object以及其他基本类型(string、number和boolean),允许多重嵌套。由于大模型会根据出参的定义,再结合用户的问题,对api返回的结果进行筛选、重新组合,作为最终的答案返回给用户,所以出参与入参一样,也需要尽可能精简和描述准确,嵌套的层级也尽可能少,详见如何定义好插件的出参。
测试API插件
平台为API插件的功能单测提供了测试窗功能。
按照要求填写入参值,点击插件测试,测试结果会打印在结果区域,结果会根据配置的输出参数结构进行json结构的解析,未配置具体结构的json会以jsonstring的形式显示。结果区域可以自由复制结果。
示例接口
为了方便用户体验测试,官方提供了一个接口用于体验调试功能(仅为mock接口,并不是真正天气查询接口,不可用于生产)
接口url:https://bailian.aliyun.com/sample/weather/query
协议:get
入参:
city 城市,例如杭州
date 日期,例如今天或者2023-07-11
出参:
status值为success
errorInfo值为空
data为字符串,返回例如晴,气温26~37℃
常出现的错误
错误code | 错误信息 | 错误原因 |
15312 | 配置的插件API返回结果与系统强制规范不一致 | 系统调用插件API返回的结构体中未满足{status:"failed", data: {}, errorinfo: "this is error"}。常出现于直接配置了现成的API但未适配返回结构体。 如何解决: 需要重新编写接口适配代码,让返回的结构体符合要求。 |
15500 | 插件测试失败 | 插件测试调用发生异常。 如何解决: 如果注册的API接口返回了具体的错误信息,该错误信息会跟随错误码一并返回给开发者,开发者可以根据具体错误信息来排查问题。 |