对话生成(无会话历史)
接口描述(Description)
基于给定的聊天对话信息,创建模型响应
请求地址(Request URL)
[POST] https://api.sensenova.cn/v1/llm/chat-completions
请求头(Request Header)
无特殊Header,请参考接口鉴权
请求体(Request Body)
请注意,单次请求,用户输入的token总数(即所有
content
的token总数) + 用户期望模型生成的最大token数(即max_new_tokens
的值),必须 <= 模型最大上下文长度(不同模型的上下文长度支持情况,参考模型清单)。
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
model | string | 是 | - | 参考模型清单 | 模型ID |
n | int | 否 | 1 | [1,4] | 生成回复数量,响应参数中的index 即为回复序号(在使用某些模型时不支持传入该参数,详情请参考模型清单) |
know_ids | string[] | 否 | - | 参考查询知识库列表 | 检索的知识库列表 |
max_new_tokens | int | 否 | 1024 | [1,2048] | 期望模型生成的最大token数(不同模型支持的上下文长度不同,因此最大值也不同,参考模型清单) |
messages | object[] | 是 | - | - | 输入给模型的对话上下文,数组中的每个对象为聊天的上下文信息 |
repetition_penalty | float | 否 | 1.0 | (0,2] | 重复惩罚系数,1代表不惩罚,大于1倾向于生成不重复token,小于1倾向于生成重复token,推荐使用范围为[1,1.2] |
stream | boolean | 否 | false | 开启:true 关闭: false | 是否使用流式传输,如果开启,数据将按照data-only SSE (server-sent events)返回中间结果,并以 data: [DONE] 结束 |
temperature | float | 否 | 0.8 | (0,2] | 温度采样参数,大于1的值倾向于生成更加多样的回复,小于1倾向于生成更加稳定的回复(最多支持小数点后六位) |
top_p | float | 否 | 0.7 | (0,1) | 核采样参数,解码生成token时,在概率和大于等于top_p的最小token集合中进行采样 |
user | string | 否 | - | - | 外部用户ID,应用开发者可将应用系统用户ID传入,方便追踪 |
knowledge_config | object | 否 | - | - | 知识配置 |
plugins | object | 否 | - | - | 插件配置(在使用某些模型时不支持传入该参数,详情请参考模型清单) |
messages
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
role | string | 是 | - | 枚举值 user assistant system | 消息作者的角色,枚举值。请注意,数组中最后一项必须为 user |
content | string | 是 | - | - | 消息的内容 |
knowledge_config
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
control_level | string | 否 | normal | 枚举值 normal high | 模型生成回复时对知识库内容的参考程度 normal :模型正常参考知识库内容进行回答 high :模型强参考知识库内容进行回答(若您期望模型回答尽可能依赖知识库,不自由发散,推荐使用此值) |
knowledge_base_result | boolean | 否 | false | true false | 是否返回本次请求查询的知识库检索结果 true :返回 false :不返回 |
knowledge_base_configs | object[] | 否 | - | - | 知识库配置 |
knowledge_base_configs
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
know_id | string | 是 | - | 本次请求检索的知识库ID(konw_ids 中的知识库ID) | 需要实现配置的知识库ID |
faq_threshold | float | 是 | - | (0,1) | 知识库中的qa_lst 精准命中程度的阈值配置,越高代表对该知识库中问答对的检索结果相似度要求越严格 |
plugins
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
web_search | object | 否 | - | - | 在线检索配置(此参数将模型的在线检索能力作为独立的插件功能提供给用户使用,以实现更为灵活的配置) |
associated_knowledge | object | 否 | - | - | 文本知识注入配置 |
web_search
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
search_enable | boolean | 否 | false | true false | 是否允许在线检索,若允许在线检索,即允许模型自主判断本次请求是否需要在线检索 |
result_enable | boolean | 否 | false | true false | 是否返回在线检索的结果 |
associated_knowledge
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
content | string | 是 | - | - | 文本知识注入的内容,注意此内容的token数会视为用户输入内容的一部分,计入prompt_tokens ,遵循模型上下文长度校验规则 |
mode | string | 是 | - | concatenate override | 知识注入的模式 将外部注入的知识和内部的其他知识检索结果拼接在一起输入给模型: concatenate 外部注入的知识会替代内部的其他知识检索结果: override |
请求示例(Request Example)
curl --request POST "https://api.sensenova.cn/v1/llm/chat-completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_TOKEN" \
-d '{
"know_ids": [
"string"
],
"max_new_tokens": 1024,
"messages": [
{
"content": "string",
"role": "string"
}
],
"model": "string",
"n": 1,
"repetition_penalty": 1.0,
"stream": false,
"temperature": 0.8,
"top_p": 0.7,
"user": "string",
"knowledge_config":{
"control_level": "normal",
"knowledge_base_result": false,
"knowledge_base_configs":[
{
"know_id": "string",
"faq_threshold": 0
}
]
},
"plugins":{
"web_search":{
"search_enable": false,
"result_enable": false
},
"associated_knowledge":{
"content": "string",
"mode": "string"
}
}
}'
响应(Response)
名称 | 类型 | 描述 |
---|---|---|
data | object | 生成内容 |
data
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
id | string | 消息ID |
choices | object[] | 生成的回复列表 |
knowledge_base_results | object[] | 知识检索中间结果 |
usage | object | token使用量 |
plugins | object | 插件功能使用情况 |
choices
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
message | string | 非流式请求时,生成的回复内容 |
finish_reason | string | 停止生成的原因,枚举值 因结束符停止生成: stop 因达到最大生成长度停止生成: length 因触发敏感词停止生成: sensitive 因触发模型上下文长度限制: context |
index | int | 生成的回复序号 |
role | string | 回复消息的角色 |
delta | string | 流式请求时,生成的回复内容 |
knowledge_base_results
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
know_id | string | 查询的知识库ID |
results | object[] | 查询到的知识库内容 |
results
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
score | float | 相似度 |
result | string | 查询到的知识库文本内容 |
extra_info | object | 若该结果对应的知识库是使用delimiter 分割模式创建的,则返回检索到的知识库详细信息 |
extra_info
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
file_id | string | 此条结果对应的文件ID |
page | int | 此条结果对应的文件页码 |
usage
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 用户输入内容的token数 |
knowledge_tokens | int | 知识库内容输入模型的token数(仅在使用了知识库且检索到知识库内容的情况下不为0) |
completion_tokens | int | 生成消息对应的token数 |
total_tokens | int | 总token数 |
plugins
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
web_search | object | 在线检索使用情况,search_enable 关闭的情况下不返回此字段 |
web_search
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
online_search_count | int | 本次请求实际发生的在线检索次数 |
results | object[] | 本次请求在线检索结果,result_enable 关闭的情况下不返回此字段 |
results
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
index | int | 在线检索结果序号 |
url | string | 在线检索的URL |
url_source | string | 在线检索的来源 |
title | string | 在线检索网页标题 |
icon | string | 在线检索网站logo图片的URL |
响应示例(Response Example)
- 流式
data:{"data":{"id":"123456789012345","choices":[{"delta":"This","finish_reason":"","index": 0,"role":"assistant"}],"knowledge_base_results":[],"plugins":{"web_search":{"online_search_count":0,"results":[]}},"usage":{"prompt_tokens":6,"knowledge_tokens": 0,"completion_tokens":1,"total_tokens":7}},"status":{"code":0, "message": "ok"}}
data:{"data":{"id":"123456789012345","choices":[{"delta":"is","finish_reason":"","index": 0,"role":"assistant"}],"knowledge_base_results":[],"plugins":{"web_search":{"online_search_count":0,"results":[]}},"usage":{"prompt_tokens":6,"knowledge_tokens": 0,"completion_tokens":2,"total_tokens":8}},"status":{"code":0, "message": "ok"}}
data:{"data":{"id":"123456789012345","choices":[{"delta":"a","finish_reason":"","index": 0,"role":"assistant"}],"knowledge_base_results":[],"plugins":{"web_search":{"online_search_count":0,"results":[]}},"usage":{"prompt_tokens":6,"knowledge_tokens": 0,"completion_tokens":3,"total_tokens":9}},"status":{"code":0, "message": "ok"}}
data:{"data":{"id":"123456789012345","choices":[{"delta":"test","finish_reason":"","index": 0,"role":"assistant"}],"knowledge_base_results":[],"plugins":{"web_search":{"online_search_count":0,"results":[]}},"usage":{"prompt_tokens":6,"knowledge_tokens": 0,"completion_tokens":4,"total_tokens":10}},"status":{"code":0, "message": "ok"}}
data:{"data":{"id":"123456789012345","choices":[{"delta":"!","finish_reason":"","index": 0,"role":"assistant"}],"knowledge_base_results":[],"plugins":{"web_search":{"online_search_count":0,"results":[]}},"usage":{"prompt_tokens":6,"knowledge_tokens": 0,"completion_tokens":5,"total_tokens":11}},"status":{"code":0, "message": "ok"}}
data:{"data":{"id":"123456789012345","choices":[{"delta":"","finish_reason":"stop","index": 0,"role":"assistant"}],"knowledge_base_results":[{"know_id":"123456","results":[{"score":1.56, "result":"Test"}]}],"plugins":{"web_search":{"online_search_count":1,"results":[{"index":1,"url":"https://xxxx","url_source":"百科","title":"北京著名景点清单2023","icon":"https://xxx"}]}},"usage":{"prompt_tokens":6,"knowledge_tokens": 1,"completion_tokens":6,"total_tokens":13}},"status":{"code":0, "message": "ok"}}
data:[DONE]
- 非流式
{
"data": {
"id": "4b44cd86cd2c000",
"choices": [
{
"message": "This is a test!",
"finish_reason": "stop",
"index": 0,
"role": "string"
}
],
"knowledge_base_results": [
{
"know_id": "string",
"results": [
{
"result": "string",
"score": 0
}
]
}
],
"usage": {
"prompt_tokens": 6,
"knowledge_tokens": 0,
"completion_tokens": 6,
"total_tokens": 12
},
"plugins": {
"web_search":{
"online_search_count": 1,
"results":[
{
"index": 1,
"url": "string",
"url_source": "string",
"title": "string",
"icon": "string"
}
]
}
}
}
}
错误信息
参考错误码