知识库
注意:插件应用相关功能已于2024年7月31日迁移至AppBuilder,如有需要请查看AppBulier。本文内容不再更新,且于2024年7月19日下线。
功能介绍
本接口用于使用知识库中存储的相关内容进行问答增强。
注意事项
调用知识库API前,需先确保已安装知识库插件,安装方式请查看插件列表。
SDK调用
SDK支持使用平台插件能力,以帮助用户快速构建 LLM 应用或将 LLM 应用到自建程序中。
使用说明
调用本文API,需使用安全认证AK/SK鉴权,调用流程及鉴权介绍详见SDK安装及使用流程。
调用示例(非流式)
import os
import qianfan
# 使用安全认证AK/SK鉴权,通过环境变量方式初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
# Plugin 通过endpoint参数指定插件服务,将your_endpoint替换为服务地址后缀,例如服务地址为https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/testxxx/,则your_endpoint替换为testxxx,更多介绍详见本文插件服务地址说明
plugin = qianfan.Plugin(endpoint="your_endpoint")
# 知识库展示
resp = plugin.do(plugins=["uuid-zhishiku"], query="深度合成服务提供者应当设置哪些入口")
print(resp)
返回示例(非流式)
QfResponse(
code=200,
headers={
...
},
body={
'id': 'as-981vhw8jgi',
'object': 'chat.completion',
'created': 1698058648,
'result': '深度合成服务提供者应当设置便捷的用户申诉和公众投诉、举报入口,公布处理流程和反馈时限,及时受理、处理和反馈处理结果。',
'is_truncated': False,
'need_clear_history': False,
'usage': {'prompt_tokens': 1673, 'completion_tokens': 53, 'total_tokens': 1726},
'log_id': 539802381612933814},
image=None)
调用示例(流式)
import os
import qianfan
# 使用安全认证AK/SK鉴权,通过环境变量方式初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
# Plugin 通过endpoint参数指定插件服务,将your_endpoint替换为服务地址后缀,例如服务地址为https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/testxxx/,则your_endpoint替换为testxxx,更多介绍详见本文插件服务地址说明
plugin = qianfan.Plugin(endpoint="your_endpoint")
# 流式调用
resp = plugin.do(endpoint="your_custom_endpoint", query="政策上规定深度合成服务提供者应当设置哪些内容?", stream=True)
for r in resp:
print(r["result"])
返回示例(流式)
QfResponse(code=200, headers={...},
body={'id': 'as-amnf7c3hg9', 'object': 'chat.completion', 'created': 1698230717, 'sentence_id': 0, 'is_end': False, 'is_truncated': False, 'result': '政策上规定深度合成', 'need_clear_history': False, 'usage': {'prompt_tokens': 1335, 'completion_tokens': 9, 'total_tokens': 1344}, 'log_id': 4287202150558504277}, image=None)
QfResponse(code=200, headers={...},
body={'id': 'as-amnf7c3hg9', 'object': 'chat.completion', 'created': 1698230718, 'sentence_id': 1, 'is_end': False, 'is_truncated': False, 'result': '服务提供者应当设置显著标识功能,并提示使用者深度合成情况。', 'need_clear_history': False, 'usage': {'prompt_tokens': 1335, 'completion_tokens': 27, 'total_tokens': 1371}, 'log_id': 4287202150558504277}, image=None)
QfResponse(code=200, headers={...},
body={'id': 'as-amnf7c3hg9', 'object': 'chat.completion', 'created': 1698230719, 'sentence_id': 2, 'is_end': True, 'is_truncated': False, 'result': '', 'need_clear_history': False, 'usage': {'prompt_tokens': 1335, 'completion_tokens': 0, 'total_tokens': 1371}, 'log_id': 4287202150558504277}, image=None)
插件服务地址说明
调用插件SDK时,需通过endpoint指定插件服务,endpoint值可以通过插件服务地址获取。
(1)配置插件应用服务成功后,可以查看服务地址等信息。如何配置插件应用服务,详见插件编排使用说明。
说明:只有服务状态为上线状态,才可以查看自动生成的服务地址。
(2)在千帆ModelBuilder控制台-系统配置-插件编排页面,点击某插件服务详情。
(3)在插件的详情页中,查看完整的服务地址。
(4)获取endpoint值。
例如,插件服务地址为https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/testxxx/
,则endpoint值为testxxx。
请求参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
query | string | 是 | 查询信息。说明: (1)成员不能为空 (2)长度不能超过1000个字符 |
plugins | list[string] | 否 | 需要调用的插件ID列表,说明: (1)如果使用知识库插件,该字段必填,且为固定值"uuid-zhishiku" (2)如果不填写该字段,是在插件编排时配置范围内进行意图识别,使用模型进行回答 |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认false,可选值如下: (1)true: 是,以流式接口的形式返回数据 (2)false:否,非流式接口形式返回数据 |
llm | dict | 否 | llm相关参数,不指定参数时,使用调试过程中的默认值。 参数示例: "llm":{"temperature":0.1,"top_p":1,"penalty_score":1} |
input_variables | dict | 否 | 说明: (1)如果prompt中使用了变量,推理时可以填写具体值; (2)如果prompt中未使用变量,该字段不填。 参数示例: "input_variables":{"key1":"value1","key2":"value2"} key1、key2为配置时prompt中使用了变量key |
history | dict | 否 | 聊天上下文信息。说明: (1)history可以为空 (2)非空情况下数目必须为偶数,奇数位history的role值必须为user,偶数位history的role值为assistant。参数示例:[{"role":"user","content":"..."},{"role":"assistant","content":"..."},...] |
verbose | bool | 否 | 是否返回插件的原始请求信息,默认false,可选值如下: true:是,返回插件的原始请求信息meta_info false:否,不返回插件的原始请求信息meta_info |
llm说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)范围 (0, 1.0],不能为0 |
top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0] |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0] |
history说明
名称 | 类型 | 描述 |
---|---|---|
role | string | 当前支持以下: · user: 表示用户 · assistant: 表示对话助手 |
content | string | 对话内容,不能为空 |
返回参数
名称 | 类型 | 描述 |
---|---|---|
log_id | int | 唯一的log id,用于问题定位 |
id | string | 本轮对话的id |
object | string | 回包类型。 chat.completion:多轮对话返回 |
created | int | 时间戳 |
sentence_id | int | 表示当前子句的序号,只有在流式接口模式下会返回该字段 |
is_end | bool | 表示当前子句是否是最后一句,只有在流式接口模式下会返回该字段 |
result | string | 插件返回结果 |
is_truncated | bool | 当前生成的结果是否被截断 |
need_clear_history | bool | 表示用户输入是否存在安全,是否关闭当前会话,清理历史会话信息 true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息 false:否,表示用户输入无安全风险 |
ban_round | int | 当need_clear_history为true时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round = -1 |
usage | usage | token统计信息,token数 = 汉字数+单词数*1.3 (仅为估算逻辑) |
meta_info | dict | 插件的原始请求信息 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数 |
completion_tokens | int | 回答tokens数 |
total_tokens | int | tokens总数 |
meta_info说明
名称 | 类型 | 描述 |
---|---|---|
plugin_id | string | 插件Id,固定值为"uuid-zhishiku" |
request | dict | 知识库原始请求参数 |
response | dict | 知识库原始返回结果 |
request说明
名称 | 类型 | 描述 |
---|---|---|
query | string | 用于查询知识库的用户请求 |
kbIds | list[Any] | 使用知识库的 Id 列表 |
score | float | 分片和query的相似度分数的下限,低于该下限的文档分片不会被返回 |
topN | int | 返回的最相关的文档数 |
response说明
名称 | 类型 | 描述 |
---|---|---|
retCode | int | 错误码 |
message | string | 错误信息 |
result | dict | 返回结果 |
result说明
名称 | 类型 | 描述 |
---|---|---|
besQueryCostMilsec3 | int | bes查询耗时 |
dbQueryCostMilsec1 | int | db查询耗时 |
embeddedCostMilsec2 | int | embedding查询耗时 |
responses | dict | 知识库返回的最相关文档信息 |
urlSignedCostMilsec4 | int | bos url生成耗时 |
responses说明
名称 | 类型 | 描述 |
---|---|---|
contentUrl | string | 文档分片的下载地址 |
docId | string | 文档 Id |
docName | string | 文档的名称 |
kbId | string | 文档上传的知识库 Id |
score | float | 当前分片和用户请求的相关度,取值范围(0-1) |
shardId | string | 分片 ID |
shardIndex | int | 分片序号 |
content | string | 分片的实际内容 |
HTTP调用
鉴权说明
本文API,支持2种鉴权方式。不同鉴权方式,调用方式不同,使用Header、Query参数不同,详见本文请求说明。开发者可以选择以下任一种方式进行鉴权。
请求说明
- 基本信息
请求地址: https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/{服务地址后缀名称}/
请求方式: POST
- 服务地址说明
配置插件应用服务成功后,可以查看服务地址等信息。如何配置插件应用服务,详见插件编排使用说明。
说明:只有服务状态为上线状态,才可以查看自动生成的服务地址。
在插件的详情页中,查看完整的服务地址。
- Header参数
根据不同鉴权方式,查看对应Header参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
基于安全认证AK/SK进行签名计算鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具 |
- Query参数
只有访问凭证access_token鉴权方式,需使用Query参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
access_token | string | 是 | 通过API Key和Secret Key获取的access_token,参考Access Token获取 |
- Body参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
query | string | 是 | 查询信息。说明: (1)成员不能为空 (2)长度不能超过1000个字符 |
plugins | list[string] | 否 | 需要调用的插件ID列表,说明: (1)如果使用知识库插件,该字段必填,且固定值为["uuid-zhishiku"],参数示例:"plugins":["uuid-zhishiku"] (2)如果不填写该字段,是在插件编排时配置范围内进行意图识别,使用模型进行回答 |
stream | bool | 否 | 是否以流式接口的形式返回数据,默认false,可选值如下: (1)true: 是,以流式接口的形式返回数据 (2)false:否,非流式接口形式返回数据 |
llm | object | 否 | llm相关参数,不指定参数时,使用调试过程中的默认值。 参数示例: "llm":{"temperature":0.1,"top_p":1,"penalty_score":1} |
input_variables | object | 否 | 说明: (1)如果prompt中使用了变量,推理时可以填写具体值; (2)如果prompt中未使用变量,该字段不填。 参数示例: "input_variables":{"key1":"value1","key2":"value2"} key1、key2为配置时prompt中使用了变量key |
history | object | 否 | 聊天上下文信息。说明: (1)history可以为空 (2)非空情况下数目必须为偶数,奇数位history的role值必须为user,偶数位history的role值为assistant。参数示例: [{"role":"user","content":"..."},{"role":"assistant","content":"..."},...] |
verbose | bool | 否 | 是否返回插件的原始请求信息,默认false,可选值如下: true:是,返回插件的原始请求信息meta_info false:否,不返回插件的原始请求信息meta_info |
llm说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
temperature | float | 否 | 说明: (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定 (2)范围 (0, 1.0],不能为0 |
top_p | float | 否 | 说明: (1)影响输出文本的多样性,取值越大,生成文本的多样性越强 (2)取值范围 [0, 1.0] |
penalty_score | float | 否 | 通过对已生成的token增加惩罚,减少重复生成的现象。说明: (1)值越大表示惩罚越大 (2)取值范围:[1.0, 2.0] |
history说明
名称 | 类型 | 描述 |
---|---|---|
role | string | 当前支持以下: · user: 表示用户 · assistant: 表示对话助手 |
content | string | 对话内容,不能为空 |
响应说明
名称 | 类型 | 描述 |
---|---|---|
log_id | number | 唯一的log id,用于问题定位 |
id | string | 本轮对话的id |
object | string | 回包类型。 chat.completion:多轮对话返回 |
created | int | 时间戳 |
sentence_id | int | 表示当前子句的序号,只有在流式接口模式下会返回该字段 |
is_end | bool | 表示当前子句是否是最后一句,只有在流式接口模式下会返回该字段 |
result | string | 插件返回结果 |
is_truncated | bool | 当前生成的结果是否被截断 |
need_clear_history | bool | 表示用户输入是否存在安全,是否关闭当前会话,清理历史会话信息 true:是,表示用户输入存在安全风险,建议关闭当前会话,清理历史会话信息 false:否,表示用户输入无安全风险 |
ban_round | int | 当need_clear_history为true时,此字段会告知第几轮对话有敏感信息,如果是当前问题,ban_round = -1 |
usage | usage | token统计信息,token数 = 汉字数+单词数*1.3 (仅为估算逻辑) |
meta_info | Object | 插件的原始请求信息 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数 |
completion_tokens | int | 回答tokens数 |
total_tokens | int | tokens总数 |
meta_info说明
名称 | 类型 | 描述 |
---|---|---|
plugin_id | string | 插件 Id,为“uuid-zhishiku” |
request | Object | 知识库原始请求参数 |
response | Object | 知识库原始返回结果 |
request说明
名称 | 类型 | 描述 |
---|---|---|
query | string | 用于查询知识库的用户请求 |
kbIds | array | 使用知识库的 Id 列表 |
score | float | 分片和query的相似度分数的下限,低于该下限的文档分片不会被返回 |
topN | Integer | 返回的最相关的文档数 |
response说明
名称 | 类型 | 描述 |
---|---|---|
retCode | Integer | 错误码 |
message | string | 错误信息 |
result | Object | 返回结果 |
result说明
名称 | 类型 | 描述 |
---|---|---|
besQueryCostMilsec3 | Integer | bes查询耗时 |
dbQueryCostMilsec1 | Integer | db查询耗时 |
embeddedCostMilsec2 | Integer | embedding查询耗时 |
responses | list[object] | 知识库返回的最相关文档信息 |
urlSignedCostMilsec4 | Integer | bos url生成耗时 |
responses说明
名称 | 类型 | 描述 |
---|---|---|
contentUrl | string | 文档分片的下载地址 |
docId | string | 文档 Id |
docName | string | 文档的名称 |
kbId | string | 文档上传的知识库 Id |
score | float | 当前分片和用户请求的相关度,取值范围(0-1) |
shardId | string | 分片 ID |
shardIndex | Integer | 分片序号 |
content | string | 分片的实际内容 |
请求示例(非流式)
以访问凭证access_token鉴权方式为例,说明如何调用API,示例如下。
# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”
curl 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/[服务后缀名称]/?access_token=[步骤一调用接口获取的access_token]'
--data '{"query": "使用知识库查询数据集创建案例","plugins":["uuid-zhishiku"],"verbose":true}'
-H 'Content-Type: application/json'
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/[服务后缀名称]/?access_token=" + get_access_token()
payload = json.dumps({
"query": "使用知识库查询数据集创建案例",
"plugins":["uuid-zhishiku"],
"verbose":True
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例(非流式)
{
"id": "as-yu10xg1umt",
"object": "chat.completion",
"created": 1695622860,
"result": "数据集创建的案例执行以下步骤:\n1. 点击左侧导航栏的数据总览;\n2. 点击页面左上方“创建数据集”按钮;\n3. 弹窗填写数据集信息:数据集名称img_cls_multi,数据类型为图片标注;\n4. 选择类型为图像分类标注,并使用单图多标签作为标注模板;\n5. 点击右下角“完成”按钮。",
"is_truncated": false,
"need_clear_history": false,
"usage": {
"prompt_tokens": 433,
"completion_tokens": 107,
"total_tokens": 540
},
"meta_info": {
"plugin_id": "uuid-zhishiku",
"request": {
"query": "数据集创建案例",
"kbIds": [
"64f59e7c779fb0a5a92d987f"
],
"score": 0,
"topN": 5
},
"response": {
"retCode": 1,
"message": "",
"result": {
"besQueryCostMilsec3": 340,
"dbQueryCostMilsec1": 0,
"embeddedCostMilsec2": 330,
"responses": [
{
"contentUrl": "http://easydata.bj.bcebos.com/_system_/knowledge/kb-qzpqzj0usrk3zje8/doc/9bca5802-a1e9-4e83-a375-21d2009641d1/shard/e35fb73f-9194-4337-a545-d81479c4c657?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2023-09-25T06%3A20%3A55Z%2F1800%2Fhost%2Fa1a2aa03882d1cfc5ea0dc4a230b259700ce678ad7be952ce6811efd6743fda2",
"docId": "9bca5802-a1e9-4e83-a375-21d2009641d1",
"docName": "EasyData产品4.1.2测试用例.xlsx",
"kbId": "64f59e7c779fb0a5a92d987f",
"score": 0.5065146,
"shardId": "e35fb73f-9194-4337-a545-d81479c4c657",
"shardIndex": 0,
"content": "预期结果\u0001跳转至智能数据-数据总览页\u0001实测结果\u0001案例执行人\u0001功能模块\u0001数据集管理\u0001功能点\u0001创建数据集\u0001执行用户\u0001系统管理员admin\u0001案例测试编号\u0001ST-ED-02\u0001案例名称\u0001数据集创建\u0001案例描述\u00011.点击左侧导航栏的数据总览2.点击页面左上方『创建数据集』按钮3.弹窗填写数据集信息:数据集名称:img_cls_multi 数据类型:图片标注类型:图像分类标注模板:单图多标签4.点击右下角『完成』按钮。"
},
{
"contentUrl": "http://easydata.bj.bcebos.com/_system_/knowledge/kb-qzpqzj0usrk3zje8/doc/9bca5802-a1e9-4e83-a375-21d2009641d1/shard/bd30a9df-d17f-4ad3-a182-d0d644122c8a?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2023-09-25T06%3A20%3A55Z%2F1800%2Fhost%2F789a2fc0d5d00ed632ff1498804e0433e7f1b6e2e7a716c2a028d2597294fdf9",
"docId": "9bca5802-a1e9-4e83-a375-21d2009641d1",
"docName": "EasyData产品4.1.2测试用例.xlsx",
"kbId": "64f59e7c779fb0a5a92d987f",
"score": 0.47083926,
"shardId": "bd30a9df-d17f-4ad3-a182-d0d644122c8a",
"shardIndex": 0,
"content": "Overview\u0001Sheet 1: EasyData验收用例\u0001功能模块\u0001数据总览\u0001功能点\u0001登录系统\u0001执行用户\u0001系统管理员admin\u0001案例测试编号\u0001ST-01\u0001案例名称\u0001首页-使用流程-登录\u0001案例描述\u0001在console页面登录(http//master8136)点击右上角登录按钮默认管理员账号/密码(一般为admin/123qweasd!)。"
},
{
"contentUrl": "http://easydata.bj.bcebos.com/_system_/knowledge/kb-qzpqzj0usrk3zje8/doc/edb5229e-ad27-49b9-b945-e421255e06ee/shard/d4d72e12-47f1-475f-b68f-e071415a3802?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2023-09-25T06%3A20%3A55Z%2F1800%2Fhost%2F5db7b80596d097fd2f627e864083b4e45fa40a5bc21feff85b95ec762d1f3269",
"docId": "edb5229e-ad27-49b9-b945-e421255e06ee",
"docName": "test2.txt",
"kbId": "64f59e7c779fb0a5a92d987f",
"score": 0.4332734,
"shardId": "d4d72e12-47f1-475f-b68f-e071415a3802",
"shardIndex": 0,
"content": "我很【满意】这次的旅行体验。\u0001It's a perfect blend of sweet, spicy, and savory flavors.。"
}
],
"urlSignedCostMilsec4": 341
}
}
},
"log_id": 4600987778375255377
}
请求示例(流式)
# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”
curl 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/[服务后缀名称]/?access_token=[步骤一调用接口获取的access_token]'
--data '{"query": "使用知识库查询数据集创建案例","plugins":["uuid-zhishiku"],"verbose":true,"stream":true}'
-H 'Content-Type: application/json'
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/[服务后缀名称]/?access_token=" + get_access_token()
payload = json.dumps({
"query": "使用知识库查询数据集创建案例",
"plugins":["uuid-zhishiku"],
"verbose":True,
"stream": True
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload, stream=True)
for line in response.iter_lines():
print(line)
if __name__ == '__main__':
main()
响应示例(流式)
# 首包需要的回显信息
data: {"plugin_id":"uuid-zhishiku","request":{"query":"数据集创建案例","kbIds":["64f59e7c779fb0a5a92d987f"],"score":0,"topN":5},"response":{"retCode":1,"message":"","result":{"besQueryCostMilsec3":381,"dbQueryCostMilsec1":0,"embeddedCostMilsec2":364,"responses":[{"contentUrl":"http://easydata.bj.bcebos.com/_system_/knowledge/kb-qzpqzj0usrk3zje8/doc/9bca5802-a1e9-4e83-a375-21d2009641d1/shard/e35fb73f-9194-4337-a545-d81479c4c657?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2023-09-25T06%3A46%3A08Z%2F1800%2Fhost%2F79d06cadc07837227e913a6b9268b542dcf248411292b0b166fa1d7e53845789","docId":"9bca5802-a1e9-4e83-a375-21d2009641d1","docName":"EasyData产品4.1.2测试用例.xlsx","kbId":"64f59e7c779fb0a5a92d987f","score":0.5065146,"shardId":"e35fb73f-9194-4337-a545-d81479c4c657","shardIndex":0,"content":"预期结果\u0001跳转至智能数据-数据总览页\u0001实测结果\u0001案例执行人\u0001功能模块\u0001数据集管理\u0001功能点\u0001创建数据集\u0001执行用户\u0001系统管理员admin\u0001案例测试编号\u0001ST-ED-02\u0001案例名称\u0001数据集创建\u0001案例描述\u00011.点击左侧导航栏的数据总览2.点击页面左上方『创建数据集』按钮3.弹窗填写数据集信息:数据集名称:img_cls_multi 数据类型:图片标注类型:图像分类标注模板:单图多标签4.点击右下角『完成』按钮。"},{"contentUrl":"http://easydata.bj.bcebos.com/_system_/knowledge/kb-qzpqzj0usrk3zje8/doc/9bca5802-a1e9-4e83-a375-21d2009641d1/shard/bd30a9df-d17f-4ad3-a182-d0d644122c8a?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2023-09-25T06%3A46%3A08Z%2F1800%2Fhost%2F44419753b3cf0cefd32e872575aab499bd9b2a23c94fae677d8e7335dd5fd1bb","docId":"9bca5802-a1e9-4e83-a375-21d2009641d1","docName":"EasyData产品4.1.2测试用例.xlsx","kbId":"64f59e7c779fb0a5a92d987f","score":0.47083926,"shardId":"bd30a9df-d17f-4ad3-a182-d0d644122c8a","shardIndex":0,"content":"Overview\u0001Sheet 1: EasyData验收用例\u0001功能模块\u0001数据总览\u0001功能点\u0001登录系统\u0001执行用户\u0001系统管理员admin\u0001案例测试编号\u0001ST-01\u0001案例名称\u0001首页-使用流程-登录\u0001案例描述\u0001在console页面登录(http//master8136)点击右上角登录按钮默认管理员账号/密码(一般为admin/123qweasd!)。"},{"contentUrl":"http://easydata.bj.bcebos.com/_system_/knowledge/kb-qzpqzj0usrk3zje8/doc/edb5229e-ad27-49b9-b945-e421255e06ee/shard/d4d72e12-47f1-475f-b68f-e071415a3802?authorization=bce-auth-v1%2F50c8bb753dcb4e1d8646bb1ffefd3503%2F2023-09-25T06%3A46%3A08Z%2F1800%2Fhost%2Ffb9cfd99832733f61d96dd1e7fb9e0bf3d59568205df0e3b123c74ad773c62f0","docId":"edb5229e-ad27-49b9-b945-e421255e06ee","docName":"test2.txt","kbId":"64f59e7c779fb0a5a92d987f","score":0.4332734,"shardId":"d4d72e12-47f1-475f-b68f-e071415a3802","shardIndex":0,"content":"我很【满意】这次的旅行体验。\u0001It's a perfect blend of sweet, spicy, and savory flavors.。"}],"urlSignedCostMilsec4":383}},"log_id":2385836841933227644}
# 后续为用户请求的响应结果
data: {"id":"as-6np8kdry8x","object":"chat.completion","created":1695624371,"sentence_id":0,"is_end":false,"is_truncated":false,"result":"数据集创建的步骤","need_clear_history":false,"usage":{"prompt_tokens":433,"completion_tokens":8,"total_tokens":441},"log_id":2385836841933227644}
data: {"id":"as-6np8kdry8x","object":"chat.completion","created":1695624372,"sentence_id":1,"is_end":false,"is_truncated":false,"result":"包括:\n1. 点击左侧导航栏的数据总览;\n2. 点击页面左上方『创建数据集』按钮;\n3. 弹窗填写数据集信息:数据集名称:img_cls_multi 数据类型:图片","need_clear_history":false,"usage":{"prompt_tokens":433,"completion_tokens":55,"total_tokens":496},"log_id":2385836841933227644}
data: {"id":"as-6np8kdry8x","object":"chat.completion","created":1695624373,"sentence_id":2,"is_end":false,"is_truncated":false,"result":"标注;\n 类型:图像分类标注;模板:单图多标签;\n4. 点击右下角『完成』按钮。","need_clear_history":false,"usage":{"prompt_tokens":433,"completion_tokens":27,"total_tokens":523},"log_id":2385836841933227644}
data: {"id":"as-6np8kdry8x","object":"chat.completion","created":1695624373,"sentence_id":3,"is_end":true,"is_truncated":false,"result":"","need_clear_history":false,"usage":{"prompt_tokens":433,"completion_tokens":0,"total_tokens":523},"log_id":2385836841933227644}
错误码
若请求错误,服务器将返回的JSON文本包含以下参数:
名称 | 描述 |
---|---|
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如Access Token失效返回:
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
需要重新获取新的Access Token再次请求。
更多相关错误码,请查看错误码说明。
错误码 | 错误信息 | 描述 |
---|---|---|
1000 | 知识库不存在或状态异常 | 指定的知识库被删除或者无法使用 |
1001 | 知识库无法访问 | 知识库服务器无法访问 |
1002 | 知识库文档链接无法访问 | 知识库数据下载异常 |
1004 | 用户提示词过长 | 用户提示词过长,超过文心一言支持的最大请求长度,需要缩短提示词 |
337008 | 插件id输入错误 | 一般指插件id输入错误,如插件id超过3个可能会引起此错误 |