知识库对话体验
POST /studio/rag/data/v1/completions:chat
请求头(Request Header)
Authorization
可以使用如下两种Header
- 动态生成 Authorization Header, 参考认证(authentication)
-H "X-Date: $xdate" \
-H "Authorization: $auth"
- 直接提供完整的 Authorization Header,可以通过浏览器的开发者工具DevTools查看并复制接口调用的完整信息
-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6InB...'
请求参数(Request Parameters)
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
action | integer($enum) | 是 | 对话的动作 |
content | string | 否 | 用户输入内容 |
conversation_id | string | 否 | 指定进行对话的对话ID |
conversation | object | 否 | 对话详情,当conversation_id 为空时,需要传递此字段来创建新的对话 |
stream | boolean | 否 | 控制是否是流式输出,默认false表示非流式输出,true表示流式输出. |
其中,action
有如下情况
枚举值 | 数值 | 含义 |
---|---|---|
CHAT_ACTION_UNSPECIFIED | 0 | 未指定 |
CHAT_ACTION_NEXT | 1 | 如常进行下一轮对话 |
CHAT_ACTION_REGENERATION | 2 | 重新生成上一轮对话的新响应 |
其中,conversation
的参数如下
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
conversation_id | string | 否 | 对话ID(只输出). |
channel_id | string | 否 | 大模型渠道资源ID. |
display_name | string | 是 | 显示名称,第一次对话后自动更新. |
create_time | string($date-time) | 否 | 创建时间(只输出). |
update_time | string($date-time) | 否 | 更新时间(只输出). |
model | string | 是 | 模型名称. |
search_config | object | 是 | 知识搜索配置. |
prompt | string | 否 | 知识库提示,改写用户问题,增加知识库检索到的知识信息. |
model_config | object | 否 | 模型配置. |
sys_prompt | string | 否 | 人设提示,大模型所需要扮演的人设信息. |
conversation_question_prompt_enabled | bool | 否 | 是否提供用户可能想问的三个问题. |
user | string | 否 | 用户名. |
chat_times | int32 | 否 | 聊天次数. |
total_feedback_like | int32 | 否 | 点赞反馈的总数. |
total_feedback_unlike | int32 | 否 | 差评反馈的总数. |
其中,conversation.search_config
的参数如下
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
dataset_list | array[object] | 是 | 要搜索的知识库列表. |
top_k | int32 | 否 | 返回结果的Top K值. |
confidence | float | 否 | 置信度. |
weight | float | 否 | 权重:表示两种方法之间的比例. |
open_window | bool | 否 | 是否在提示中包含检索段的前后片段. |
其中,search_config.dataset_list
的参数如下
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
id | string | 是 | 知识库ID. |
display_name | string | 否 | 知识库显示名称. |
其中,conversation.model_config
的参数如下
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
frequency_penalty | float | 否 | 重复惩罚系数. |
max_tokens | int32 | 否 | 在聊天补全中生成的最大token数,默认值为102. |
n | int32 | 否 | 为每条输入消息生成的聊天补全选择数量. |
temperature | float | 否 | 使用的采样温度,范围在0到2之间. |
top_p | float | 否 | 采样温度的替代方案,称为核采样. |
请求示例(Request Example)
curl 'https://aidmp.cn-sh-01.sensecoreapi.cn/studio/rag/data/v1/completions:chat' \
-H 'Accept: text/event-stream' \
-H "X-Date: $xdate" \
-H "Authorization: $auth" \
-X POST \
--data-raw '{
"conversation_id":"d42034d2-44cb-4777-98f2-853dc6869c02",
"content":"关联问题:\n1. 知识库的主要功能是什么?\n2. 如何有效地利用知识库?\n3. 知识库在哪些领域得到广泛应用?",
"action":1,
"is_stream":true,
"conversation":{
"display_name":"关联问题:\n1. 知识库的主要功能是什么?\n2. 如何有效地利用知识库?\n3. 知识库在哪些领域得到广泛应用?",
"search_config":{
"dataset_list":[
{"id":"1431194b72344e88a4df1af91a710ca1","display_name":"testywj06141431"}],
"top_k":3,
"confidence":0.5,
"open_window":false,
"weight":0.5},
"model_config":{
"temperature":0.8,
"top_p":0.7,
"frequency_penalty":1.05,
"max_tokens":1024
},
"model":"SenseChat",
"prompt":"使用如下知识的内容作为你的**知识库数据**。\n 知识:\n {{ .Knowledge }}\n\n 回答时请遵循以下规则:\n - 尽量使用**知识库数据**的内容来回答。\n - 如果**知识库数据**中未提及,就用自身知识回答并且告诉用户该信息不是来自知识库。\n - 如果不确定时,请求用户澄清问题。\n\n 请回答问题: \n {{ .Question }}",
"sys_prompt":"#角色设定\n 作为一个智能问答助手,你的任务是为用户提供专业、准确的建议。 \n #组件能力\n 你能够理解和分析用户输入,提供相关且有用的答案。\n 你具备丰富的领域知识,可以回答广泛的问题。 \n #要求与限制\n 1.输出内容的风格要求:保持友好和专业的语气。\n 2.输出内容的字数限制:尽量控制在200字以内,除非问题需要更详细的解释。\n 3. 语言处理:根据用户问题的语言进行回答。",
"conversation_question_prompt_enabled":true
}
}'
响应(Response)
名称 | 类型 | 描述 |
---|---|---|
conversation_id | string | 对话ID. |
seq | int32 | 对话中的序列号. |
message | string | 非流式请求生成的响应内容. |
delta | string | 流式请求生成的响应内容. |
finish_reason | integer($enum) | 停止生成的原因. |
knowledge_base_results | array[object] | 知识检索的中间结果. |
history_id | string | 聊天历史ID. |
prompt_questions | array[string] | 用户下一个问题的提示. |
其中,finish_reason
有如下情况
枚举值 | 数值 | 含义 |
---|---|---|
FINISH_REASON_UNSPECIFIED | 0 | 未指定 |
FINISH_REASON_STOP | 1 | 因为到达终止标记而停止生成 |
FINISH_REASON_LENGTH | 2 | 因为达到最大长度而停止生成 |
FINISH_REASON_SENSITIVE | 3 | 因为触发敏感词而停止生成 |
FINISH_REASON_CONTEXT | 4 | 因为达到模型上下文长度限制而停止 |
其中,knowledge_base_results
的参数如下
名称 | 类型 | 描述 |
---|---|---|
page_content | string | 页面内容. |
document | object | 相关知识文档. |
confidence | float | 结果置信度. |
token_count | int64 | 内容的token数量. |
segment_number | int32 | 段落数量. |
words | int32 | 段落的字数. |
type | integer($enum) | 段落类型. |
display_type | integer($enum) | 显示类型. |
table_content | string | 表格内容. |
image_uri | string | 图片URI. |
image_key | string | 图片键. |
image_keys | array[string] | 图片键集合. |
display_content | string | 显示内容. |
其中,knowledge_base_results.document
的参数如下
名称 | 类型 | 描述 |
---|---|---|
document_id | string | 知识文档的ID. |
display_name | string | 知识文档的名称. |
type | integer($enum) | 知识文档的类型. |
document_size | int64 | 知识文档的大小. |
token_count | int64 | 知识文档的令牌计数. |
segment_count | int64 | 知识文档的段落计数. |
dataset_id | string | 知识文档所属知识库的ID. |
dataset_display | string | 知识文档所属知识库的显示名称. |
p_id | string | 父知识文档的ID. |
data_source_type | integer($enum) | 知识文档的数据源类型. |
creator | string | 知识文档的创建者. |
create_time | string($date-time) | 知识文档的创建时间. |
update_time | string($date-time) | 知识文档的更新时间. |
segments | array[object] | 知识文档的段落详细信息列表. |
uri | string | 知识文档在OSS中的预签名URI. |
其中,document.type
有如下情况
枚举值 | 数值 | 含义 |
---|---|---|
DOCUMENT_TYPE_UNSPECIFIED | 0 | 未指定 |
WEBPAGE | 1 | 网页 |
FOLDER | 2 | 文件夹 |
TXT | 3 | 文本文件 |
4 | PDF文件 | |
HTML | 5 | HTML文件 |
XLSX | 6 | XLSX文件 |
XLS | 7 | XLS文件 |
DOCX | 8 | DOCX文件 |
CSV | 9 | CSV文件 |
PPTX | 10 | PPTX文件 |
PPT | 11 | PPT文件,暂不支持 |
XML | 12 | XML文件 |
MARKDOWN | 13 | Markdown文件 |
MD | 14 | MD文件 |
JSON | 15 | Json文件 |
其中,document.data_source_type
有如下情况
枚举值 | 数值 | 含义 |
---|---|---|
DATA_SOURCE_TYPE_UNSPECIFIED | 0 | 开始,默认 |
LOCAL_FILE | 1 | 本地知识 |
WEB | 2 | 网络知识 |
NOTION | 3 | Notion知识 |
其中,document.segments
的参数如下
名称 | 类型 | 描述 |
---|---|---|
segment_id | string | 段ID. |
dataset_id | string | 知识库ID |
document_id | string | 文档ID |
content | string | 段落内容 |
token_count | int32 | 词元数量 |
number | int32 | 段落编号 |
metadata | object | 元数据 |
words | int32 | 单词数量 |
segment_type | integer($enum) | 段落类型 |
table_content | string | 表格内容 |
image_key | string | 图片键值 |
image_uri | string | 图片URI |
display_type | integer($enum) | 显示类型 |
image_keys | array[string] | 图片键值列表 |
display_content | string | 展示内容 |
其中,segments.metadata
的参数如下
名称 | 类型 | 描述 |
---|---|---|
key_words | array[string] | 关键词 |
image_name_value | string | 图片名称 |
image_size | int32 | 图片大小 |
table_name_value | string | 表格名称 |
table_rows | int32 | 表格行数 |
table_columns | array[string] | 表格列 |
score | float | 分数 |
其中,knowledge_base_results.type
和segments.segment_type
有如下情况
枚举值 | 数值 | 含义 |
---|---|---|
SEGMENT_TYPE_UNSPECIFIED | 0 | 未指定状态 |
SEGMENT_TYPE_TEXT | 1 | 文字 |
SEGMENT_TYPE_IMAGE | 2 | 图片 |
SEGMENT_TYPE_TABLE | 3 | 表格 |
SEGMENT_TYPE_WEB_IMAGE | 4 | 网页图片 |
其中,knowledge_base_results.display_type
和segments.display_type
有如下情况
枚举值 | 数值 | 含义 |
---|---|---|
DISPLAY_TYPE_UNSPECIFIED | 0 | 未指定状态 |
DISPLAY_TYPE_TEXT | 1 | 文字 |
DISPLAY_TYPE_MARKDOWN | 2 | Markdown |
响应示例(Response Example)
{"result":{"conversation_id":"","seq":0,"message":"","delta":" ","finish_reason":0,"knowledge_base_results":[],"history_id":"","prompt_questions":[]}},
{"result":{"conversation_id":"3ba7b7ef-ff9d-4d9d-b7ad-4079107f7f3f","seq":1,"message":"","delta":"","finish_reason":1,"knowledge_base_results":[],"history_id":"32f3d69e-f82a-4907-9e9c-9200860b2923","prompt_questions":[" 关联问题:\n1. 在哪些国家或地区,男性和女性的法定结婚年龄不同?\n2. 有没有国家或地区允许未成年人在特定条件下合法结婚?\n3. 历史上,法定结婚年龄的变化趋势是怎样的?"]}}