拟人对话生成
接口描述(Description)
模型基于人设进行角色扮演,可实现多人对话生成
请求地址(Request URL)
[POST] https://api.sensenova.cn/v1/llm/character/chat-completions
请求头(Request Header)
无特殊Header,请参考接口鉴权
请求体(Request Body)
请注意,单次请求,用户输入的token总数(即所有
content
的token总数) + 用户输入的角色设定(即character_settings
的token总数) + 用户期望模型生成的最大token数(即max_new_tokens
的值),必须 <= 模型最大上下文长度(不同模型的上下文长度支持情况,参考模型清单)。
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
model | string | 是 | - | 参考模型清单 | 模型ID |
n | int | 否 | 1 | [1,4] | 生成回复数量,响应参数中的index 即为回复序号(在使用某些模型时不支持传入该参数,详情请参考模型清单) |
max_new_tokens | int | 否 | 300 | [1,1024] | 期望模型生成的最大token数(不同模型支持的上下文长度不同,因此最大值也不同,参考模型清单) |
messages | object[] | 是 | - | - | 输入给模型的对话上下文,数组中的每个对象为聊天的上下文信息 |
character_settings | object[] | 是 | - | - | 多人对话中每个人的人物设定 |
role_setting | object | 是 | - | - | 本轮对话的设定 |
extra | string | 否 | - | - | 额外信息,用户自传 |
know_ids | string[] | 否 | - | 参考查询知识库列表 | 检索的知识库列表 |
knowledge_config | object | 否 | - | - | 知识配置 |
messages
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
name | string | 是 | - | 角色姓名,只能选择character_settings 中已设定的name | |
content | string | 是 | - | - | 对话的内容 |
character_settings
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
name | string | 是 | - | - | 角色姓名,长度不超过50个字符 |
gender | string | 是 | - | - | 角色性别,长度不超过50个字符 |
identity | string | 否 | - | - | 角色身份,长度不超过200个字符 |
nickname | string | 否 | - | - | 角色别名,长度不超过50个字符 |
feeling_toward | object[] | 否 | - | - | 好感度设定 |
detail_setting | string | 否 | - | - | 详细设定,长度不超过500个字符 |
other_setting | json string | 否 | - | - | 其他设定,长度不超过2000个字符 |
role_setting
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
user_name | string | 是 | - | - | 指定本次回复,用户扮演哪个角色,只能选择character_settings 中已设定的name |
primary_bot_name | string | 是 | - | - | 指定本次回复,模型扮演哪个角色,只能选择character_settings 中已设定的name |
feeling_toward
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
name | string | 是 | - | - | 角色姓名,只能选择character_settings 中已设定的name |
level | int | 是 | - | [1,3] | 对该角色的好感度,数字越大代表好感度越高 |
knowledge_config
部分参数如下:
名称 | 类型 | 必须 | 默认值 | 可选值 | 描述 |
---|---|---|---|---|---|
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 精准命中程度的阈值配置,越高代表对该知识库中问答对的检索结果相似度要求越严格 |
请求示例(Request Example)
curl --request POST "https://api.sensenova.cn/v1/llm/character/chat-completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_TOKEN" \
-d '{
"max_new_tokens": 1024,
"messages": [
{
"name": "string",
"content": "string"
}
],
"character_settings":[
{
"name": "string",
"gender": "string",
"identity": "string",
"nickname": "string",
"feeling_toward":[
{
"name": "string",
"level": 1
}
],
"detail_setting": "string",
"other_setting": "json string"
}
],
"role_setting":{
"user_name": "string",
"primary_bot_name": "string"
},
"model": "string",
"n": 1,
"extra": "string",
"know_ids": [
"string"
],
"knowledge_config": {
"knowledge_base_result": false,
"knowledge_base_configs":[
{
"know_id": "string",
"faq_threshold": 0
}
]
}
}'
响应(Response)
名称 | 类型 | 描述 |
---|---|---|
data | object | 生成内容 |
data
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
id | string | 消息ID |
reply | string | 模型生成的最优回复 |
choices | object[] | 生成的回复列表 |
knowledge_base_results | object[] | 知识检索中间结果 |
usage | object | token使用量 |
choices
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
message | string | 生成的回复内容 |
finish_reason | string | 停止生成的原因,枚举值 因结束符停止生成: stop 因达到最大生成长度停止生成: length 因触发敏感词停止生成: sensitive 因触发模型上下文长度限制: context |
index | int | 生成的回复序号 |
knowledge_base_results
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
know_id | string | 查询的知识库ID |
results | object[] | 查询到的知识库内容 |
usage
部分参数如下:
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 用户输入内容的token数 |
completion_tokens | int | 生成消息对应的token数 |
knowledge_tokens | int | 知识库内容输入模型的token数(仅在使用了知识库且检索到知识库内容的情况下不为0) |
total_tokens | int | 总token数 |
响应示例(Response Example)
{
"data":{
"id":"9a18cd7f047c4b9498920d7c27a7d707",
"reply":"(站起身,走到他身边,俯下身,伸手拿过他手中的毛笔,将它放在一旁,然后坐在他身边,双手撑着桌子,看着他)臣有事要与陛下商议。",
"choices":[
{
"index":0,
"finish_reason":"stop",
"message":"这句话的翻译是:Who am I?"
}
],
"knowledge_base_results": [
{
"know_id": "string",
"results": [
{
"result": "string",
"score": 0
}
]
}
],
"usage":{
"prompt_tokens":12,
"completion_tokens":170,
"knowledge_tokens": 0,
"total_tokens":182
}
}
}
错误信息
参考错误码