host
headers
Content-Type: application/json
Authorization: Bearer {token}
GET /v1/knowledge-bases
请求参数
名称 | 类型 | 说明 | 是否必填 | 备注 |
---|---|---|---|---|
page | integer | 分页 | 是 | 大于等于1 |
size | integer | 每页条数 | 是 | 默认20 |
响应示例
{
"data": [
{
"index_id": "xxxxxx",
"index_name": "测试一下",
"created_at": "2023-08-15T11:41:31.363Z",
"doc_count": "1",
"content_length": "9880",
"documents": [
"智能说明书.txt"
]
}
],
"page": 1,
"size": 20,
"total": "1",
"message": "成功"
}
POST /v1/knowledge-bases
请求参数
名称 | 类型 | 说明 | 是否必填 | 备注 |
---|---|---|---|---|
index_name | string | 知识库名 | 是 | - |
请求示例
{
"index_name": "ls_docs",
}
响应示例
{
"data":{
"index_id": "xxxxxx"
},
"message": "成功"
}
DELETE /v1/knowledge-bases/:index_id
响应示例
{
"message": "删除成功",
"data": {}
}
GET /v1/knowledge-bases/:index_id/documents
请求参数
名称 | 类型 | 说明 | 是否必填 | 备注 |
---|---|---|---|---|
index_id | string | 知识库id | 是 | - |
page | string | 页码 | 否 | |
size | string | 分页数量 | 否 |
响应示例
{
"data": [
{
"user_id": "16",
"index_id": "xxx",
"doc_name": "智能说明书.txt",
"doc_id": "xxx",
"doc_url": "https://cdn.iflyos.cn/xxx/智能说明书.txt",
"text_splitter": {
"method": "token",
"options": {
"chunk_size": 256,
"chunk_overlap": 20
}
},
"content_length": 9880,
"status": 1,
"created_at": "2023-08-16T06:49:55.820Z",
"executed_at": "2023-08-16T06:49:55.820Z",
"executed_id": "xxx",
"executed_note": ""
}
],
"page": 1,
"size": 20,
"total": "1",
"message": "成功"
}
POST /v1/knowledge-bases/:index_id/documents/process_preview
请求参数
名称 | 类型 | 说明 | 是否必填 | 备注 |
---|---|---|---|---|
documents | Array of objects | 文档数组。每个文档都表示为一个 JSON 对象。 | 是 | 参数详情查看“添加文档”接口参数说明 |
text_splitter | objects | 文档拆分策略 | 是 | 参数详情查看“添加文档”接口参数说明 |
limit | int | 输出分片条数 | 否 | 默认值为10 |
请求示例
{
"documents": [
{
"doc_name": "智能说明书.txt",
"doc_url": "https://xxx/智能说明书.txt"
}
],
"text_splitter": {
"method": "token",
"options": {
"chunk_size": "100",
"chunk_overlap": "10"
}
}
}
响应示例
{
"data": [
{
"text": "xxxxxxx",
"length": 100
},
...
],
"message": "成功"
}
POST /v1/knowledge-bases/:index_id/documents
请求参数
名称 | 类型 | 说明 | 是否必填 | 备注 |
---|---|---|---|---|
documents | Array of objects | 文档数组。每个文档都表示为一个 JSON 对象。 | 是 | - |
text_splitter | objects | 文档拆分策略 | 是 | - |
请求参数 documents
名称 | 类型 | 说明 | 是否必填 | 备注 |
---|---|---|---|---|
doc_name | string | 文档名称 | 是 | - |
doc_url | string | 文档读取连接 | 是 | - |
请求参数 text_splitter
名称 | 类型 | 说明 | 是否必填 | 备注 |
---|---|---|---|---|
method | string | 文档分片策略,可选:token(按token数)、sentence(按语句)、separator(按分隔符) | 是 | - |
options | object | 分片策略参数 | 是 | - |
请求参数 text_splitter.options
名称 | 类型 | 说明 | 是否必填 | 备注 |
---|---|---|---|---|
chunk_size | int | 分片最大长度 | 否,chunk_method是token和sentence时必填 | - |
chunk_overlap | int | 分片重叠长度 | 否,chunk_method是token和sentence时必填 | - |
separator | int | 分片重叠长度 | 否,chunk_method是separator时必填 | - |
请求示例
{
"documents": [
{
"doc_name": "文档1",
"doc_url": "http://cdn.xxx.com/wendang.txt",
},
{
"doc_name": "文档2",
"doc_url": "http://cdn.xxx.com/wendang2.txt",
}
],
"text_splitter": {
"method": "token",
"options": {
"chunk_size": "100",
"chunk_overlap": "10"
}
}
}
响应示例
{
"message": "创建成功",
"data": {}
}
GET /v1/knowledge-bases/:index_id/documents/:doc_id
响应示例
{
"data": {
"user_id": "16",
"index_id": "xxx",
"doc_name": "智能说明书.txt",
"doc_id": "xxx",
"doc_url": "https://cdn.iflyos.cn/xxx/智能说明书.txt",
"text_splitter": {
"method": "token",
"options": {
"chunk_size": 256,
"chunk_overlap": 20
}
},
"content_length": 9880,
"status": 1,
"created_at": "2023-08-16T06:49:55.820Z",
"executed_at": "2023-08-16T06:49:55.820Z",
"executed_id": "xxx",
"executed_note": ""
},
"message": "成功"
}
DELETE /v1/knowledge-bases/{index_id}/documents
请求参数
名称 | 类型 | 说明 | 是否必填 | 备注 |
---|---|---|---|---|
index_id | string | 知识库id | 是 | - |
doc_ids | array | 文档ID数组 | 是 | - |
请求示例
{
"doc_ids": ["doc_id1", "doc_id2"]
}
响应示例
{
"message": "删除成功",
"data": {}
}
POST /v1/knowledge-bases/:index_id/chat/completions
请求参数
名称 | 类型 | 说明 | 是否必填 | 默认值 | 备注 |
---|---|---|---|---|---|
messages | Array<message> | 会话和提问 | 是 | - | 需要自行拼接对话历史信息,数组最后是最新的用户提问 |
message.role | string | 角色 | 是 | - | 可取值: user,assistant ;其中user表示用户的提问,assistant表示AI的回复 ; 若当前message为messages数组的最后一个元素,role的值需为字符串'user' |
message.content | string | 文本内容 | 是 | - | 该角色的对话内容 |
doc_ids | array | 文档ID数组 | 否 | - | 默认检索当前知识库下所有文档 |
prompt_id | string | 对话prompt | 否 | - | 用于将检索后的知识进行prompt渲染 |
limit | number | 数量 | 否 | 5 | 用于知识检索时检索出的知识数量 |
model | string | 模型 | 否 | spark-general-1.5 | 可取值:spark-general-1.5: 基础模型v1.5版本;spark-general-2.0: 基础模型v2.0版本; |
threshold | float | 阈值 | 否 | - | 用于根据知识检索的分数过滤,最小值是0.1,最大值是1 |
temperature | float | 核采样阈值 | 否 | - | 最小值是0.1,最大值是1 |
stream | boolean | 是否支持流式 | 否 | false | - |
请求示例
curl --request POST \
--url https://api.listenai.com/v1/knowledge-bases/YOUR_KNOWLEDGE_LIB_ID/chat/completions \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_REQUEST_TOKEN' \
--data '{
"messages": [
{ "role": "user", "content": "空调怎么开" }
]
}'
响应示例
{
"choices": [
{
"finish_reason": null,
"index": 0,
"message": {
"content": "您可以使用遥控器或通过App内的语音控制页面来开启和关闭空调。如果您需要输入新的指令,需要重新唤醒空调。",
"role": "assistant"
}
}
],
"created": 1692107109,
"id": "cht000bcd39@dx189f97169419a4b540",
"object": "chat.completion",
"usage": {
"completion_tokens": 72,
"prompt_tokens": 943,
"question_tokens": 943,
"total_tokens": 1015
}
}
mustache
渲染引擎,支持参数传入进行模板内容渲染。如果系统默认提示词的无法满足需求,可以参考[此处]教程(/x/7ZMVidLt3)新建提示词模板进行替换。系统默认模板
---------
{{#knowledges}}
[参考资料]{{{text}}}[参考资料]
{{/knowledges}}
---------
你是一个智能客服,你需要分析上面的参考资料,按照以下步骤回答用户问题。
思考:参考资料的上下文中是否存在用户问题相关的答案;
动作:如果相关,则提取出相关内容回复,否则回复暂无查询到相关内容;
注意:
1. 始終使用提供的参考资料回答问题,而不是先验知识;
2. 请勿输出与问题无关的解释;
3. 请勿在答案中直接引用参考资料内容;
4. 避免类似”根据参考资料...“,”在参考资料中...“的表述。
问题:{{user_input}}
答案:
名称 | 类型 | 说明 |
---|---|---|
knowledges | array<knowledge> | 根据检索条件,检索出来的知识点数组 |
user_input | string | 请求对话中messages的用户输入 |
knowledge.text | string | 知识点的文本 |
knowledge.score | number | 知识点的分数 |
knowledge.index | number | 知识点所在knowledges数组的数组下标 |
curl --request POST \
--url https://api.listenai.com/v1/knowledge-bases/YOUR_KNOWLEDGE_LIB_ID/chat/completions \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_REQUEST_TOKEN' \
--data '{
"prompt_id": "YOUR_PROMPT_ID",
"messages": [
{ "role": "user", "content": "空调怎么开" }
]
}'