本节将说明如何基于已创建好的一个知识服务进行检索或者问答
/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 | 是 | 检索时多轮对话消息,格式为一问一答形式
其中 最后一个元素 role == user ,content为当前最新的提问 query
| |
query_param | 否 | nil | 检索附加过滤条件,在创建知识服务时如果您已配置了过滤条件,那么和该附加过滤条件一起生效,逻辑为AND
例如:
| |
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" }