You need to enable JavaScript to run this app.
导航
service_chat
最近更新时间:2025.04.28 19:59:34首次发布时间:2025.04.22 18:04:58
我的收藏
有用
有用
无用
无用

本节将说明如何基于已创建好的一个知识服务进行检索或者问答

概述

/api/knowledge/service/chat 接口支持基于一个已创建的知识服务进行检索/问答

使用 service/chat 接口有哪些优势?
1、无需串联拼接 search_knowledge 接口和 chat_completions 接口,在控制台前端调试在线参数并发布服务后,即可通过当前接口调用,获得与控制台前端完全一致的效果
2、无需生成复杂的 aksk 签名,通过 API key 即可调用

前提条件

在您的知识库控制台界面发布知识服务,并关联相应的 API key(用于权限校验)。

请求接口

URI

/api/knowledge/service/chat

请求方法

POST

请求头

Content-Type: application/json

请求消息类型

'Authorization': f'Bearer {apikey}'

该知识服务关联的 apikey,用于鉴权

"Host": knowledge_base_domain

知识库域名

请求参数

参数

类型

是否必选

默认值

参数说明

service_resource_id

string

知识服务唯一标识符

messages

json

检索时多轮对话消息,格式为一问一答形式
发出消息的对话参与者角色,可选值包括:

  • user:User Message 用户消息
  • assistant:Assistant Message 对话助手消息

其中 最后一个元素 role == user ,content为当前最新的提问 query
例如:

[
    {"role": "user", "content": "你好"},
    {"role": "assistant", "content": "你好!有什么我可以帮助你的?"}
    {"role": "user", "content": "用户问题"}
]

query_param

nil

检索附加过滤条件,在创建知识服务时如果您已配置了过滤条件,那么和该附加过滤条件一起生效,逻辑为AND

  • 使用方式和支持字段见filter表达式,如可支持对 doc_id 做筛选
  • 此处用过过滤的字段,需要在 collection/create 时添加到 index_config 的 fields 字段

例如:

doc_filter = {
    "op": "must",
    "field": "doc_id",
    "conds": ["tos_doc_id_123", "tos_doc_id_456"]
}
query_param = {
    "doc_filter": doc_filter
}

stream

bool

true

针对问答类型的知识服务,是否采用流式返回

响应消息

目前知识服务主要分为两类,检索类型和问答类型。针对不同类型的知识服务,返回的消息格式也有所不同

检索类知识服务

如果您请求的是检索类型的知识服务,那么返回结果如下:

字段

类型

备注

code

int

状态码

message

string

返回信息

data

json

返回数据详情

--count

int

检索结果返回的条数

--rewrite_query

string

query 改写的结果

--token_usage

json

Token 使用信息

--result_list

json

检索返回的信息

问答类知识服务-非流式

如果您请求的是问答类型的知识服务,并选择非流式回答,返回结果如下:

字段

类型

备注

code

int

状态码

message

string

返回信息

data

json

返回数据详情

--count

int

检索结果返回的条数

--rewrite_query

string

query 改写的结果

--token_usage

json

Token 使用信息

--result_list

json

检索返回的信息

--generated_answer

string

LLM 模型生成的回答

--reasoning_content

string

推理模型生成的内容

问答类知识服务-流式

如果您请求的是问答类型的知识服务,并选择流式回答,检索的结果将会放在首个流中返回,token_usage 会放在尾流中返回,中间流按照 SSE 格式返回生成的结果(可参考 chat_completions 接口)。

字段

类型

备注

code

int

状态码

message

string

返回信息

data

json

返回数据详情

--count

int

检索结果返回的条数 首流返回

--rewrite_query

string

query 改写的结果 首流返回

--result_list

json

检索返回的信息 首流返回

--generated_answer

string

LLM 模型生成的回答 中间流返回

--reasoning_content

string

推理模型生成的内容 中间流返回

--token_usage

json

Token 使用信息 尾流返回

完整示例

请求消息

curl -i -X POST \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer your_api_key' \
  http://api-knowledgebase.mlp.cn-beijing.volces.com/api/knowledge/service/chat \
  -d '{
    "service_resource_id": "your_service_resource_id",
    "stream": false,
    "messages": [
        {
            "role": "user",
            "content": "注册抖音的方式有哪些"
        }
    ]
}'

响应消息

执行成功返回:

{
    "code": 0,
    "data": {
        "count": 2,
        "token_usage": {
            "embedding_token_usage": {
                "prompt_tokens": 23,
                "completion_tokens": 0,
                "total_tokens": 23
            },
            "rerank_token_usage": 62,
            "llm_token_usage": {
                "prompt_tokens": 510,
                "completion_tokens": 52,
                "total_tokens": 562,
                "prompt_tokens_details": {
                    "cached_tokens": 0
                },
                "completion_tokens_details": {
                    "reasoning_tokens": 0
                }
            }
        },
        "result_list": [
            {
                "id": "_sys_auto_gen_doc_id-8423876736290680802-0",
                "content": "问题:注册抖音的方式有哪些\n答案:有手机号、邮箱等方式",
                "score": 0.6423748731613159,
                "point_id": "_sys_auto_gen_doc_id-8423876736290680802-0",
                "chunk_id": 0,
                "process_time": 1745475503,
                "rerank_score": 0.929823701560032,
                "doc_info": {
                    "doc_id": "_sys_auto_gen_doc_id-8423876736290680802",
                    "doc_name": "未命名表格.xlsx",
                    "create_time": 1745475499,
                    "doc_type": "xlsx",
                    "doc_meta":"[{\"field_name\":\"所属行业\",\"field_type\":\"list\<string\>\",\"field_value\":[\"医疗\"]},{\"field_name\":\"优先级\",\"field_type\":\"float32\",\"field_value\":\"10\"}]",
                    "source": "tos_fe"
                },
                "recall_position": 1,
                "rerank_position": 1,
                "chunk_type": "structured",
                "chunk_source": "document",
                "update_time": 1745475503,
                "table_chunk_fields": [
                    {
                        "field_name": "问题",
                        "field_value": "注册抖音的方式有哪些"
                    },
                    {
                        "field_name": "答案",
                        "field_value": "有手机号、邮箱等方式"
                    }
                ],
                "FromRecallQueue": "master_recall"
            },
            {
                "id": "_sys_auto_gen_doc_id-8423876736290680802-1",
                "content": "问题:注册微信有另外的方式吗\n答案:另外可以通过QQ注册微信",
                "score": 0.5205988883972168,
                "point_id": "_sys_auto_gen_doc_id-8423876736290680802-1",
                "chunk_id": 1,
                "process_time": 1745475503,
                "rerank_score": 0.3796083432458134,
                "doc_info": {
                    "doc_id": "_sys_auto_gen_doc_id-8423876736290680802",
                    "doc_name": "未命名表格.xlsx",
                    "create_time": 1745475499,
                    "doc_type": "xlsx",
                    "doc_meta":"[{\"field_name\":\"所属行业\",\"field_type\":\"list\<string\>\",\"field_value\":[\"医疗\"]},{\"field_name\":\"优先级\",\"field_type\":\"float32\",\"field_value\":\"10\"}]",
                    "source": "tos_fe"
                },
                "recall_position": 2,
                "rerank_position": 2,
                "chunk_type": "structured",
                "chunk_source": "document",
                "update_time": 1745475503,
                "table_chunk_fields": [
                    {
                        "field_name": "问题",
                        "field_value": "注册微信有另外的方式吗"
                    },
                    {
                        "field_name": "答案",
                        "field_value": "另外可以通过QQ注册微信"
                    }
                ],
                "FromRecallQueue": "master_recall"
            }
        ],
        "generated_answer": "您好,注册抖音有手机号、邮箱等方式<reference data-ref=\"_sys_auto_gen_doc_id-8423876736290680802-0\" data-img-ref=\"false\"></reference>。",
    },
    "message": "success",
    "request_id": "02174581251018800000000000000000000ffff0a007412e51bff"
}

执行失败返回:

HTTP/1.1 400 OK
Content-Length: 43
Content-Type: application/json
{
    "code": 1000003,
    "message": "invalid request:messsages role nil",
    "request_id": "02174581256280800000000000000000000ffff0a007412632e7a"
}