接口详情(总)
鉴权
字段 | 传参方式 | 类型 | 必传 | 描述 | 示例值 |
Authorization | header | String | 是 | API-Key | Bearer d1**2a |
路由配置
备注:SDK已封装好路由关系,通过SDK调用接口,无需设置接口路由配置。
字段 | 传参方式 | 类型 | 必传 | 描述 | 示例值 |
x-fag-appcode | header | String | 是 | 应用表示,固定为 | |
x-fag-servicename | header | String | 是 | 请求路由标识,不同接口值不一样,映射管理参考 | aca-character-create |
x-fag-servicename 与接口映射关系
接口 | 路径 | x-fag-appcode |
对话(流式) | /v2/api/chat/send | aca-chat-send-sse |
对话(非流式) | /v2/api/chat/send | aca-chat-send |
创建角色 | /v2/api/character/create | aca-character-create |
更新角色 | /v2/api/character/update | aca-character-update |
角色详情 | /v2/api/character/details | aca-character-details |
删除角色 | /v2/api/character/delete | aca-character-delete |
角色查询 | /v2/api/character/search | aca-character-search |
创建/更新角色版本 | /v2/api/character/createOrUpdateVersion | aca-character-version-mgmt |
角色版本列表 | /v2/api/character/versions | aca-character-versions |
角色版本推荐 | /v2/api/character/newversion/recommend | aca-character-version-recommend |
对话消息查询 | /v2/api/chat/message/histories | aca-message-history |
对话消息评价 | /v2/api/chat/rating | aca-message-rating |
系统消息推送 | /v2/api/chat/reminder | aca-chat-reminder |
重置对话 | /v2/api/chat/reset | aca-chat-reset |
万相图片获取 | /v2/api/chat/polling/image | aca-message-history |
角色描述自动生成 | /v2/api/character/auto/desc | aca-polling-image |
kv对抽取 | /v2/api/extract/kv | aca-extract-memory-kv |
summary抽取 | /v2/api/extract/summary | aca-extract-memory-summary |
终止对话 | /v2/api/chat/stop | aca-chat-stop |
创建知识库 | /v2/api/knowledge_base/create | aca-kb-create |
修改知识库 | /v2/api/knowledge_base/update | aca-kb-update |
查询知识库 | /v2/api/knowledge_base/search | aca-kb-search |
删除知识库 | /v2/api/knowledge_base/delete | aca-kb-delete |
知识库文件详情上传 | /v2/api/knowledge_base/detail/upload | aca-kb-detail-upload |
知识库文件详情修改 | /v2/api/knowledge_base/detail/update | aca-kb-detail-update |
知识库文件详情查询 | /v2/api/knowledge_base/detail/delete | aca-kb-detail-delete |
知识库文件详情删除 | /v2/api/knowledge_base/detail/search | aca-kb-detail-search |
对话
注意:对话场景分为固定角色对话、非固定角色对话和助手类对话,不同场景对话,入参有所不同,详细差异请参考接口说明-必填。
接口
POST /v2/api/chat/send
入参
请求头参数
字段 | 传参方式 | 类型 | 必传 | 描述 |
X-AcA-SSE | header | String | 否 | 是否开启流式对话- 开启 - |
请求体参数
参数 | 类型 | 必传 | 接口类型 | 说明 |
model | string | 否 | --- | 模型,对话类支持 xingchen-base, xingchen-plus-v2(默认), 助手类 qwen-spark-v1(默认) |
parameters | object | 否 | --- | 模型设置 |
parameters.topP | float | 否 | --- | topP生成时,核采样方法的概率阈值。例如,取值为0.8时,仅保留累计概率之和大于等于0.8的概率分布中的token,作为随机采样的候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的随机性越低。默认值 0.95。注意,取值不要大于等于1 |
parameters.seed | double | 否 | --- | **当使用xingchen-plus-v2默认模型时,每次调用的seed必须不同。**用seed生成时,随机数的种子,用于控制模型生成的随机性。如果使用相同的种子,每次运行生成的结果都将相同;当需要复现模型的生成结果时,可以使用相同的种子。seed参数支持无符号64位整数类型。默认值 1683806810 |
parameters.temperature | float | 否 | --- | 较高的值将使输出更加随机,而较低的值将使输出更加集中和确定。可选,默认取值0.92 |
parameters.incrementalOutput | boolean | 否 | --- | 是否增量输出,若为true,每次流式输出不包含已输出内容,只对流式接口的输出有效 |
input.messages | array | 是 | --- | 对话历史(时间顺序正排),固定角色可通过角色配置最大对话轮数。list中的每个元素形式为{"role":角色, "content": 内容}。角色当前可选值:system、user、assistant,function,其中,仅messages[0]中支持role为system,user、assistant、function需要交替出现,最后一条为用户提问。 |
input.aca.botProfile | object | 是 | --- | 角色设置 |
input.aca.botProfile.characterId | string | 否 | 固定角色 | 固定角色必填 |
input.aca.botProfile.name | string | 否 | 非固定角色、助手 | 角色名称,非固定角色、角色模板必填 |
input.aca.botProfile.params | Object | 否 | 角色模板传参 | 角色模板场景必填 |
input.aca.botProfile.customTemplateId | string | 否 | 角色模板id | 角色模板场景必填 |
input.aca.botProfile.enableOpenLine | Boolean | 否 | 角色模板场景下是否使用模板开场白 | 仅角色模板场景下生效 默认true |
input.aca.botProfile.content | string | 否 | 非固定角色、助手 | 自定义角色人设,非固定角色必填 |
input.aca.botProfile.type | string | 否 | 仅助手类接口必填,其余接口类型无需填写 | 固定为 |
input.aca.botProfile.traits | string | 否 | 非固定角色 | 强制要求,非必填 |
input.aca.userProfile | object | 是 | --- | 用户设置 |
input.aca.userProfile.userId | string | 是 | --- | 业务系统用户唯一标识,固定角色接口同一用户不能并行对话,必须待上次对话回复结束后才可发起下轮对话;非固定角色接口、助手接口支持并行对话。 |
input.aca.userProfile.userName | string | 否 | --- | 对话用户名称 |
input.aca.userProfile.basicInfo | string | 否 | --- | 用户基本信息 |
input.aca.scenario | object | 否 | --- | 角色场景设置 |
input.aca.scenario.description | string | 否 | --- | 场景描述,如当前对话时间为晚上 |
input.aca.scenario.safetyPrompt | string | 否 | 助手 | 安全提示,若用户提问涉及安全问题,可以给大模型对应的system设定提示,约定回复要求。 |
input.aca.scenario.isRealTime | boolean | 否 | --- | 真实时间 |
input.aca.sampleMessages | array | 否 | 非固定角色、助手 | 对话示例 |
input.aca.context | object | 否 | 固定角色 | 对话上下文设置 |
input.aca.context.useChatHistory | boolean | 否 | 固定角色 | 是否使用平台对话历史, 默认true,若false,则不使用平台对话历史 |
input.aca.context.isRegenerate | boolean | 否 | 固定角色 | 是否为重新生成 |
input.aca.context.queryId | string | 否 | 固定角色 | 重新生成且使用平台历史时,该值必传,不使用平台历史时,该值可以不传 |
input.aca.context.answerId | string | 否 | 固定角色 | 重复生成场景,若 answerId 不为空,认为是重新生成后的新一轮对话,该 answerId 为最后轮对话中多个回复中的一条回复消息ID,该条回复会被采纳,该轮对话其他回复消息会被废弃 |
input.aca.memory | object | 否 | 非固定角色 | 长期记忆 |
input.aca.memory.summaries | array | 否 | 非固定角色 | 抽取记忆 |
input.aca.memory.originals | array | 否 | 非固定角色 | 原文记忆 |
input.aca.memory.tags | array | 否 | 非固定角色 | kv记忆 |
input.aca.advancedSettings | object | 否 | 非固定角色 | 高级设置 |
input.aca.advancedSettings.enableWebSearch | boolean | 否 | 非固定角色 | 是否开启网络搜索 |
input.aca.advancedSettings.searchEnhancedKeyword | string | 否 | 非固定角色 | 网络搜索关键字 |
input.aca.advancedSettings.enableCharacterKbSearch | boolean | 否 | 非固定角色 | 是否开启知识库检索 |
input.aca.advancedSettings.knowledgeBases | array[string] | 否 | 非固定角色 | 知识库id列表 |
input.aca.platformPlugins | array | 否 | 非固定角色 | 平台插件,如拒识插件,可看平台拒识插件参数详情 |
input.aca.functionList | array | 否 | 固定角色、非固定角色 | 函数列表 |
function.name | string | 是 | 固定角色、非固定角色 | 函数名称,如weather |
function.description | string | 是 | 固定角色、非固定角色 | 函数描述,如通过调用天气预报API获取当地天气预报信息 |
function.parameters | object | 是 | 固定角色、非固定角色 | 函数参数描述,如 |
注意:模型参数 |
平台拒识插件参数详情
参数 | 类型 | 必传 | 接口类型 | 说明 |
platformPlugins[i] | objcet | 否 | 非固定角色 | 平台插件 |
platformPlugins[i].enabled | boolean | 是 | 非固定角色 | 是否启用 |
platformPlugins[i].name | string | 是 | 非固定角色 | 插件名称,目前支持"reject_answer_plugin"拒识插件 |
platformPlugins[i].rejectConditions | array | 是 | 非固定角色 | 拒识类型 |
platformPlugins[i].rejectConditions[i].enabled | boolean | 是 | 非固定角色 | 是否启动 |
platformPlugins[i].rejectConditions[i].conditionType | string | 是 | 非固定角色 | 拒识具体类型,支持"reject_rule","passive_rule"和"knowledge_domain_rule" |
platformPlugins[i].rejectConditions[i].keywords | array[string] | 是 | 非固定角色 | 关键字集合,当conditionType等于"reject_rule"和"passive_rule"时必填 |
platformPlugins[i].rejectConditions[i].subRejectCondition | object | 是 | 非固定角色 | 子拒绝类型,只有当当conditionType等于knowledge_domain_rule时必填 |
platformPlugins[i].rejectConditions[i].subRejectCondition.conditionType | string | 是 | 非固定角色 | 子拒识具体类型,支持"ancient"和"real_world" |
platformPlugins[i].rejectConditions[i].subRejectCondition.keywords | array[string] | 是 | 非固定角色 | 关键字集合,当conditionType="ancient",必须且只能填写一个关键字,real_world时不填 |
返回参数
流式调用返回
参数 | 类型 | 说明 |
requestId | string | 系统生成的标志本次调用的id。 |
success | boolean | 是否成功返回 |
errorCode | int | 错误码 |
errorName | string | 错误名称 |
httpStatusCode | int | http错误码 |
errorMessage | string | 错误消息 |
usage | object | |
usage.userTokens | int | 用户输入的token数 |
usage.inputTokens | int | 本次请求输入内容的 token 数目。在打开了搜索的情况下,输入的 token 数目因为还需要添加搜索相关内容支持,所以会超出客户在请求中的输入。 |
usage.outputTokens | int | 模型生成回复转换为Token后的长度。 |
choices | array | 消息体 |
choices[i].stopReason | string | 完成标识符,已完成为 stop,未完成为 “null” |
choices[i].messages | array | |
message.role | string | 模型role,固定为assistant |
message.content | string | 模型生成消息输出 |
message.meta | object | 消息属性 |
message.meta.hasRisk | boolean | 是否存在安全风险, |
message.functionCall | object | 模型function调用结果 |
message.functionCall.tought | string | 模型规划结果 |
message.functionCall.apiCallList | array | 模型生成的function接口调用信息 |
apiCall.apiName | string | 对应的function名 |
apiCall.parameter | object | 调用该function时应传入的参数 |
非流式调用返回
参数 | 类型 | 说明 |
requestId | string | 系统生成的标志本次调用的id。 |
success | boolean | 是否成功返回 |
errorCode | int | 错误码 |
errorName | string | 错误名称 |
httpStatusCode | int | http错误码 |
errorMessage | string | 错误消息 |
data | object | |
data.usage | object | |
usage.userTokens | int | 用户输入的token数 |
usage.inputTokens | int | 本次请求输入内容的 token 数目。在打开了搜索的情况下,输入的 token 数目因为还需要添加搜索相关内容支持,所以会超出客户在请求中的输入。 |
usage.outputTokens | int | 模型生成回复转换为Token后的长度。 |
data.choices | array | 消息体 |
choices[i].stopReason | string | 完成标识符,已完成为 stop,未完成为 null |
choices[i].messages | array | |
message.role | string | 模型role,固定为assistant |
message.content | string | 模型生成消息输出 |
message.meta | object | 消息属性 |
message.meta.hasRisk | boolean | 是否存在安全风险,true/false |
message.functionCall | object | 模型function调用结果 |
message.functionCall.tought | string | 模型规划结果 |
message.functionCall.apiCallList | array | 模型生成的function接口调用信息 |
apiCall.apiName | string | 对应的function名 |
apiCall.parameter | object | 调用该function时应传入的参数 |
群聊
接口
POST /v2/api/groupchat/send
入参
参数位置 | 参数 | 说明 | 是否必填 | 类型 | 备注 |
header | Authorization | API Key | 是 | string | |
x-request-id | 请求唯一标识 | 否 | string | ||
Content-Type | 请求参数类型 | 是 | string | 只支持 applicatioin/json | |
Accept | 接受响应的数据类型 | 是 | string | 可选值:text/event-stream 流式,application/json非流式 | |
X-AcA-SSE | 返回结果协议是否开启SSE | 否默认不开启 | string | 可选值:- enable (开启流式)- disable (不开启流式) | |
body | model | 模型名称 | 否 | string | 默认xingchen-plus-v2 |
parameters | 模型参数 | 否 | json | ||
parameters.seed | 随机数的种子 | 否 | double | **当使用xingchen-plus-v2默认模型时,每次调用的seed必须不同。**用seed生成时,随机数的种子,用于控制模型生成的随机性。如果使用相同的种子,每次运行生成的结果都将相同;当需要复现模型的生成结果时,可以使用相同的种子。seed参数支持无符号64位整数类型 | |
parameters.temperature | 温度值 | 否 | double | 较高的值将使输出更加随机,而较低的值将使输出更加集中和确定。可选,默认取值0.92 | |
input | 输入 | 是 | json | ||
input.messages | 对话历史 | 是 | list[json] | ||
messages.role | 发送者角色类型 | 是 | string | 可选值:user (用户) assistant(角色) | |
messages.name | 发送者名称 | 是 | string | ||
messages.content | 发送内容 | 是 | string | ||
aca | 星尘对象 | 是 | json | ||
aca.groupInfo | 群信息 | 是 | string | ||
groupInfo.name | 群名 | 是 | string | ||
groupInfo.description | 群描述 | 是 | string | ||
aca.botProfiles | 群聊角色设定 | 是 | list[json] | ||
botProfiles.name | 角色名称 | 是 | string | ||
botProfiles.content | 角色设定 | 是 | string | ||
botProfiles.task | 角色在聊天室的任务 | 是 | string | ||
botProfiles.remarks | 角色开场白 | 否 | list[string] | ||
aca.replySetting | 指定角色配置 | 是 | json | ||
replySetting.botName | 角色名称 | 是 | string | 必须为 botProfile.name 中的一名角色 | |
aca.userProfile | 用户配置 | 是 | json | ||
userName | 用户名称 | 是 | string | ||
userProfile.userId | 用户ID | 否 | string | 客户系统的用户ID |
返回
与对话接口返回一致
模型接口
该接口只支持非固定角色对话
人设信息通过系统消息(messages.role=system)设置
参数类型为下划线分割,而非驼峰
接口
POST /v2/api/completions
入参
参数位置 | 参数分组 | 参数 | 说明 | 是否必填 | 类型 | 备注 |
header | 认证 | Authorization | API Key | 是 | string | 通过星尘平台密钥管理生成 |
日志分析 | x-request-id | 请求唯一标识 | 否 | string | 全链路日志分析用 | |
Content-Type | 请求参数类型 | 是 | string | 只支持 applicatioin/json | ||
网关路由 | x-fag-appcode | 网关路由参数 | 是 | string | 固定为aca | |
x-fag-servicename | 网关路由参数 | 是 | string | 固定为aca-completion | ||
body | 模型配置 | model | 模型名称 | 是 | string | 默认xingchen-plus-v2 |
stream | 是否流式输出 | 否 | boolean | 默认非流式输出 | ||
max_tokens | 最大输出token长度 | 否 | int | 最大值1500 | ||
seed | 随机数的种子 | 否 | double | **当使用xingchen-plus模型时,每次调用的seed必须不同。**用seed生成时,随机数的种子,用于控制模型生成的随机性。如果使用相同的种子,每次运行生成的结果都将相同;当需要复现模型的生成结果时,可以使用相同的种子。seed参数支持无符号64位整数类型 | ||
temperature | 温度值 | 否 | double | 较高的值将使输出更加随机,而较低的值将使输出更加集中和确定。可选,默认取值0.92 | ||
top_p | 核采样方法概率阈值 | 否 | double | topP生成时,核采样方法的概率阈值。例如,取值为0.8时,仅保留累计概率之和大于等于0.8的概率分布中的token,作为随机采样的候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的随机性越低。默认值 0.95。注意,取值不要大于等于1 | ||
消息列表 | messages | 对话历史 | 是 | list[json] | 对话历史事件正序 | |
系统消息 | messages.role | 消息角色 | 是 | string | 系统消息的role为 | |
messages.name | 名称 | 否 | string | |||
messages.content | 消息内容 | 是 | string | 角色设定 | ||
用户消息 | messages.role | 角色 | 是 | string | 用户消息role为 | |
messages.name | 名称 | 否 | string | 用户名称 | ||
messages.content | 内容 | 是 | string | 用户问题 | ||
角色回复消息 | messages.role | 角色 | 是 | string | 角色消息role为 | |
messages.name | 名称 | 否 | string | 角色名称 | ||
messages.content | 内容 | 是,若为工具调用,可为空 | string | 角色回复内容 | ||
messages.tool_calls | 工具调用参数 | 否 | list[json] | |||
messages.tool_calls.id | 工具标识 | 否 | string | |||
messages.tool_calls.type | 工具类型 | 否 | string | |||
messages.tool_calls.function | 工具描述 | 是 | json | |||
messages.tool_calls.function.name | 工具名称 | 是 | string | |||
messages.tool_calls.function.arguments | 工具参数 | 是 | string | |||
工具调用结果消息 | role | 角色 | 是 | string | 工具调用结果消息role为 | |
content | 内容 | 是 | string | |||
tool_call_id | 工具标识 | 否 | string | |||
工具列表 | tools | 工具列表描述 | 否 | list[json] | ||
tools.id | 工具标识 | 否 | string | |||
tools.type | 工具类型 | 否 | string | 固定为 | ||
tools.function | 工具描述对象 | 是 | json | |||
tools.function.name | 工具名称 | 是 | string | 函数名称,如weather | ||
tools.function.description | 工具描述 | 是 | string | 函数描述,如通过调用天气预报API获取当地天气预报信息 | ||
tools.function.parameters | 工具参数 | 是 | json | 函数参数描述,如 | ||
用户信息 | user | 用户唯一标识 | 是 | string |
返回
参数 | 说明 | 类型 | 备注 |
choices | 回复结果 | list[json] | |
choices.messages | 回复消息 | list[json] | |
choices.messages.role | 回复角色类型 | string | 可选值: assistant(角色回复) |
choices.messages.name | 角色名称 | string | |
choices.messages.content | 回复内容 | string | |
choices.messages.tool_calls | 工具调用参数结果 | list[json] | |
choices.messages.tool_calls.id | 工具标识 | string | |
choices.messages.tool_calls.type | 工具类型 | string | |
choices.messages.tool_calls.function | 工具描述 | json | |
choices.messages.tool_calls.function.name | 工具名称 | string | |
choices.messages.tool_calls.function.arguments | 工具参数 | json string | |
choices.finish_reason | 回复结束类型 | string | 可选值 null (生成中), stop(生成结束), length(输出达到最大输出阈值时,提前中止) |
usage | 计量 | json | |
usage.prompt_tokens | Prompt Token数量 | int | |
usage.completion_tokens | 输出Token数量 | int | |
usage.total_tokens | 总计Token数量 | int |
角色管理
创建角色
接口
POST /v2/api/character/create
入参
名称 | 类型 | 是否必传 | 说明 |
name | string | 是 | 角色名称 |
avatar | object | 是 | 角色头像 |
basicInformation | string | 是 | 角色基本信息,包含人设、经历 |
openingLine | string | 是 | 开场白 |
traits | string | 否 | 强制要求 |
roleTypes | List | 否 | 角色标签、支持自定义、最多两个、长度为10字符以内 |
chatExample | string | 否 | 对话示例 |
permConfig | object | 否 | 权限配置 |
permConfig.isPublic | int | 是 | 是否开放角色属性给其他星尘用户查看(1:是,0:否) 说明:当您接入自己的应用使用时,无须打开该开关;请谨慎选择 |
permConfig.allowChat | int | 是 | 开放角色与其他星尘用户聊天(1:是,0:否) 说明:指开放角色与其他星尘web端用户聊天,开启后需申请关闭权限,请谨慎选择 |
permConfig.allowApi | int | 是 | 开放角色API接口允许其他星尘用户调用(1:是,0:否) 说明:如您需要使用其它账号通过API接入该角色,请打开该开关; |
advancedConfig | object | 否 | 高级配置 |
advancedConfig.isRealInfo | boolean | 否 | 是否开启web检索 |
advancedConfig.searchKeyword | string | 否 | web检索关键词(开启web检索需添加该字段) |
advancedConfig.isRealTime | boolean | 否 | 是否使用真实时间 |
advancedConfig.shortTermMemoryRound | int | 否 | 短期记忆轮数,对话接口使用平台历史时有效(最大支持100轮历史对话) |
advancedConfig.longTermMemories | list | 否 | 长期记忆设置 |
advancedConfig.platformPlugins | list | 否 | 插件列表 |
advancedConfig.knowledgeBases | list[string] | 否 | 知识库id列表 |
卡牌库插件暂不支持通过API接入,创建角色时无需调用Function-call能力,在对话中使用
返回参数
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | |
data | object | 角色对象,CharacterKey |
data.characterId | string | 角色ID,同一角色不同版本,characterId一样 |
data.version | short | 角色版本 |
更新角色
接口
POST /v2/api/character/update
入参
名称 | 类型 | 是否必传 | 说明 |
characterId | string | 是 | 角色ID |
version | short | 是 | 角色版本,只有主版本角色允许变更权限相关字段 |
name | string | 否 | 角色名称 |
avatar | string | 否 | 角色头像 |
basicInformation | string | 否 | 角色基本信息,包含人设、经历 |
openingLine | string | 否 | 开场白 |
traits | string | 否 | 强制要求 |
roleTypes | List | 否 | 角色标签、支持自定义、最多两个、长度为10字符以内 |
chatExample | string | 否 | 对话示例 |
permConfig | object | 否 | 权限配置 |
advancedConfig | object | 否 | 高级配置 |
advancedConfig.longTermMemories | list | 否 | 长期记忆设置 |
advancedConfig.platformPlugins | list | 否 | 插件列表 |
advancedConfig.knowledgeBases | list[string] | 否 | 知识库id列表 |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | |
data | boolean | 是否成功 |
查询角色
接口
POST api/character/search
入参
名称 | 类型 | 是否必传 | 说明 |
where | object | 是 | 搜索条件对象 |
where.scope | string | 是 | 查询范围- my - 只查询我创建的角色- public - 查询平台开放的角色- pre_configured - 预制角色 |
where.characterName | string | 否 | 角色名称,右匹配 |
where.roleTypes | list | 否 | 角色标签、可以传多个 |
pageNum | int | 是 | 页码 |
pageSize | int | 是 | 页大小 |
orderBy | list | 否 | 排序 |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | 请求唯一标识 |
data | object | |
data.list | object | 角色列表 |
data.page | int | 页码 |
data.pageSize | int | 分页大小 |
data.total | int | 角色总数 |
角色详情
接口
GET /v2/api/character/details
入参
名称 | 类型 | 是否必传 | 说明 |
characterId | string | 是 | 角色ID |
version | short | 是 | 角色版本 |
返回
角色对象CharacterDTO
如下:
名称 | 类型 | 说明 |
characterId | string | 角色ID |
version | int | 角色版本 |
majorVersion | int | 是否为主版本 |
name | string | 角色名称 |
avatar | object | 角色头像 |
introduction | string | 角色摘要 |
basicInformation | string | 角色基本信息,包含人设、经历 |
openingLine | string | 开场白 |
traits | string | 强制要求 |
chatExample | string | 对话示例 |
roleTypes | list | 角色类型 用于星尘网页平台上公开角色分类 |
auditStatus | string | 审核状态 用于星尘平台的角色公开 审核中无法更新角色 - review更新审核中 - update更新中 - succcess审核成功 - refuse审核失败 |
configStatus | string | 上下架状态 下架状态的角色不能对话和更新 - out下架 - normal或null为上架状态 |
greenStatus | string | 绿网审核状态 用于人工绿网审核 审核中无法更新角色 - review审核中 - update更新审核中 - succcess审核成功 - refuse审核失败 |
permConfig | object | 权限配置 |
permConfig.isPublic | int | 是否开放角色属性给其他用户查看(1:是,0:否) |
permConfig.allowChat | int | 开放角色与其他用户聊天(1:是,0:否) |
permConfig.allowApi | int | 开放角色API接口允许其他用户调用(1:是,0:否) |
advancedConfig | object | 高级配置 |
advancedConfig.isRealInfo | boolean | 真实世界信息检索 |
advancedConfig.searchKeyword | string | 搜索关键字 |
advancedConfig.isRealTime | boolean | 是否使用真实时间 |
advancedConfig.shortTermMemoryRound | 短期记忆轮数,对话接口使用平台历史时有 | |
advancedConfig.knowledgeBases | list[string] | 否 |
模型参数parameters优先级从高到低可以通过接口传入、角色属性配置、和平台默认配置三个方式配置。
返回示例
{
"code": 200,
"data": {
"characterId": "178cad6d92dc4fbc9d50abed64809e2b", // 相同角色,不通版本 characterId 相同
"version": 1,
"majorVersion": 1, // 是否为主版本,1 是,0 否
"name": "满腔忠义的关云长",
"avatar": {
"fileSavePath": "oss-6400001-IAkXjMiqkajy9MCSywI4LD5K.png",
"filename": "关云长.png",
"fileUrl": "alifanyi-pixar-hz.oss-cn-hangzhou.aliyuncs.com/oss-6400001-IAkXjMiqkajy9MCSywI4LD5K.jpg?Expires=1688635588&OSSAccessKeyId=LTAIp4mkTgZD****&Signature=vitQVIB4GroVIZKbk%2BEWGL%2F6ifA%3D"
},
"basicInformation": "我们来玩一个角色扮演的游戏, 你是「满腔忠义的关云长」。",
"openingLine": "我是「关云长」,很高心与你玩游戏",
"traits": "请在对话时尽可能的展现你的性格、感情, 用文言文回答, 并使用古人的语气和用词。",
"chatExample": "{{user}}:敢问阁下尊姓大名。\n{{char}}:吾姓关名羽,字长生,后改云长,河东解良人也。",
"gmtCreate": "2023-07-14T02:02:19.000+00:00",
"gmtModified": "2023-07-14T02:04:05.000+00:00",
"userId": "abc",
"bizUserId": "xyz",
"versions": [
{
},
],
"manageable": true,
"permConfig": {
"isPublic": 0,
"allowApi": 0,
"allowChat": 0
}
"advancedConfig": {
"isRealInfo": true,
"searchKeyword":"关云长",
"isRealTime": true,
"shortTermMemoryRound": 50,
"knowledgeBases":["d89f6dbb32c645688b01e976cf7ec08e"]
}
},
"success": true
}
对话历史
对话历史查询
接口
POST /v2/api/chat/message/histories
入参
名称 | 类型 | 是否必传 | 说明 |
where | object | 是 | 查询条件对象角色参考下表 |
where.characterId | string | 是 | 角色ID |
where.bizUserId | string | 是 | 客户系统用户ID |
where.sessionId | string | 否 | 会话ID |
where.startTime | long | 否 | 开始时间戳精确到毫秒 |
where.endTime | long | 否 | 结束时间戳 |
where.messageIds | list | 否 | 消息ID列表 |
pageNum | int | 否(默认1) | 分页页码 |
pageSize | int | 否(默认10) | 分页大小 |
orderBy | list | 否(默认创建时间倒排) | 历史消息排序 |
返回
名称 | 类型 | 说明 |
messageId | string | 消息ID |
sessionId | string | 会话ID |
chatId | string | 一次对话ID,一问多答 chatId 相同 |
messageIssuer | object | 不同userType, userId 和 userName表示不同含义,userType 取值:- user - 用户,userId 和 userName 分别表示用户ID和用户名- character - 角色,userId 和 userName 分别表示角色ID和角色名 |
messageType | string | opening_remarks - 开场白sys_greetings - 系统问候user - 用户提问character - 角色回复chat_description - 对话提示 |
status | string | 历史消息状态normal:正常reset:被重置 |
content | string | json string |
对话历史评价
接口
POST /v2/api/chat/rating
入参
名称 | 类型 | 是否必传 | 说明 |
messageId | string | 是 | 消息ID |
rating | int | 是 | 评分 0为差评 5为好评 |
返回
名称 | 类型 | 说明 |
content | boolean | true成功、false失败 |
系统推荐
接口
POST v2/api/chat/message/reminder
入参
名称 | 类型 | 是否必传 | 说明 |
characterId | string | 是 | 角色的id 角色给用户主动发消息 |
bizUserId | string | 是 | 接收消息的用户bizUserId |
content | string | 是 | 提示消息 |
返回
名称 | 类型 | 说明 |
content | boolean | true成功、false失败 |
重置对话(清除上下文)
在使用平台对话历史的场景下,每次对话会自动将对话历史作为记忆送给大模型,若要抹去这段记忆,可以通过该接口清除历史对话,开启新会话。
接口
POST v2/api/chat/reset
入参
名称 | 类型 | 是否必传 | 说明 |
characterId | string | 是 | 角色的id |
userId | string | 是 | 接收消息的用户bizUserId |
返回
名称 | 类型 | 说明 |
data | boolean | true成功、false失败 |
其他
万相图片轮询
接口
GET /v2/api/chat/polling/image
入参
名称 | 类型 | 是否必传 | 说明 |
messageId | String | 是 | 带有图片任务id的消息ID |
userId | String | 是 | paas端用户id |
返回
名称 | 类型 | 说明 |
taskId | string | 图片任务ID |
fileUrls | list | 图片链接列表 |
status | string | 图片生成状态,success,running,failure |
返回示例
{
"requestId": "210f470117126410644908058e6315",
"code": 200,
"data": {
"taskId": "342a02b4-2cb7-4219-a3d4-c7de90ab1ff8",
"fileUrls": [
"https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/1d/2d/20240409/723609ee/19311d8c-e3c2-4533-9a10-a7cb99865d98-1.png?Expires=1712727324&OSSAccessKeyId=LTAI5tQZd8AEcZX6KZV4****&Signature=fh4ix8VrpoUpSb3qOo67xGO9L6M%3D"
],
"status": "success"
},
"success": true
}
角色描述自动生成
接口
POST /v2/api/character/auto/desc
入参
名称 | 类型 | 是否必传 | 说明 |
type | String | 是 | file或者text |
fileUrl | String | 否 | 外部文件链接 |
text | String | 否 | 文本内容 |
fileName | String | 否 | type是file时必填,带有文件类型后缀的文件名 |
返回
名称 | 类型 | 说明 |
content | string | 自动生成的内容 |
usage | object | token用量 |
usage.outputTokens | int | token输出用量 |
usage.inputTokens | int | token输入用量 |
返回示例
{
"requestId": "d8e90bd07474fd7d46c16e07408d5802",
"code": 200,
"data": {
"content": "【基本信息】\n关羽(?-220),本字长生,后改字云长,汉族,出生于并州河东解(今山西运城)。\n\n【生平经历】\n关羽是中国东汉末年著名的将领。他从刘备于乡里聚众起兵开始便追随刘备,成为刘备最为信任的将领之一。\n\n【死后影响及地位】\n关羽去世后,其形象逐渐被后人神化,一直是历来民间祭祀的对象,被尊称为“关公”。又经历代朝廷褒封,清代时被奉为“忠义神武灵佑仁勇威显关圣大帝”,崇为“武圣”,与“文圣”孔子齐名。\n\n【文学作品中的形象】\n长篇历史小说《三国演义》对关羽的事迹多有描写和夸大,在《演义》中,关羽被描写为“五虎大将”之首。\n\n【其他相关】\n古代有地名关羽,但其确切位置不明。",
"usage": {
"outputTokens": 213,
"inputTokens": 230
}
},
"success": true
}
kv对抽取
接口
POST /v2/api/extract/kv
入参
名称 | 类型 | 是否必传 | 说明 |
messages | list | 是 | 消息集合 |
messages[i].role | string | 是 | assistant或者user |
message[i].content | string | 是 | 消息内容 |
kvMemoryConfigs | list | 是 | 抽取条件设置集合 |
kvMemoryConfigs[i].kvMemoryConfig | object | 是 | 抽取条件设置 |
kvMemoryConfig.enabled | boolean | 是 | 是否启用 |
kvMemoryConfig.memoryText | String | 是 | 记忆文本 |
返回
名称 | 类型 | 说明 |
schemas | list | 抽取的内容集合 |
schemas[i].schema | object | 抽取的内容 |
schema.role | string | assistant或者user |
schema.key | string | 记忆文本 |
schema.value | list | 抽取的文本内容 |
usage | object | token用量 |
usage.outputTokens | int | token输出用量 |
usage.inputTokens | int | token输入用量 |
返回示例
{
"requestId": "cefaf145993be9e24fa5830fdf88aef2",
"code": 200,
"data": {
"schemas": [
{
"role": "user",
"key": "职业",
"value": [
"武术爱好者"
]
},
{
"role": "user",
"key": "喜欢",
"value": [
"武术"
]
}
],
"usage": {
"outputTokens": 74,
"inputTokens": 627
}
},
"success": true
}
summary抽取
接口
POST /v2/api/extract/summary
入参
名称 | 类型 | 是否必传 | 说明 |
messages | list | 是 | 消息集合 |
messages[i].role | string | 是 | assistant或者user |
message[i].content | string | 是 | 消息内容 |
返回
名称 | 类型 | 说明 |
memoryResults | list | 抽取的内容集合 |
memoryResults[i].memoryResult | object | 抽取的内容 |
memoryResult.content | string | 抽取的文本内容 |
usage | object | token用量 |
usage.outputTokens | int | token输出用量 |
usage.inputTokens | int | token输入用量 |
返回示例
{
"requestId": "ca61f80aa865a2575863b8246dddd51f",
"code": 200,
"data": {
"memoryResults": [
{
"content": "user提议一起去打篮球"
},
{
"content": "assistant同意一起去打篮球"
},
{
"content": "user和assistant计划一起去打篮球,然后去吃火锅"
}
],
"usage": {
"outputTokens": 45,
"inputTokens": 590
}
},
"success": true
}
excel转docx(文件上传接口)
接口
POST v2/api/common/file/asyn/upload
入参
名称 | 类型 | 是否必传 | 说明 |
sourceUrl | string | 是 | 公网可访问的文件url链接 注:文件类型要和type类型一致 |
type | string | 是 | 文件转换类型 excelToDocx(excel转doc) |
返回
名称 | 类型 | 说明 |
id | Long | 任务id 上传成功后生成 请记住此任务id 方便后续调用结果查询接口查询结果 |
status | String | 任务状态init初始化 success成功 failed失败 error异常 |
url | String | 转换后的结果文件url 此处为空 |
返回示例
{
"requestId": "3f3d2c3b9b140d92301e92c09aa2c520",
"code": 200,
"data": {
"id": 66637,
"status": "init"
},
"success": true
}
excel转docx(结果查询接口)
接口
GET v2/api/common/file/asyn/download
入参
名称 | 类型 | 是否必传 | 说明 |
taskId | Long | 是 | 任务id |
返回
名称 | 类型 | 说明 |
id | Long | 任务id |
status | String | 任务状态init初始化 success成功 failed失败 error异常 |
url | String | 任务处理成功后 此处是转换后的结果文件url 复制到浏览器即可下载结果文件 |
返回示例
{
"requestId": "29f72b106044e11e3bdf05db4e5d2a23",
"code": 200,
"data": {
"id": 66637,
"status": "success",
"url": "https://character-ai.oss-cn-hangzhou.aliyuncs.com/fileChange/7eeb432d6a154efda77988342390728a_20240410164700.docx?Expires=1715330820&OSSAccessKeyId=LTAI5tCjo7K2tamrwRLJ****&Signature=8UIgACG%2BSBwfz1iXc3v3l8OUx3M%3D"
},
"success": true
}
终止对话
接口
POST /v2/api/chat/stop
入参
名称 | 类型 | 是否必传 | 说明 |
requestId | string | 是 | 正在生成的请求唯一标识,流式对话可以response.requestId,非流式对话因不能在请求结束前获取requestId,无法终止对话 |
content | string | 否 | 终止前保存的内容 |
返回
名称 | 类型 | 说明 |
data | Boolean | 是否终止成功 |
返回示例
{
"requestId": "2c29e19178aadfcb2f99c764134748d8",
"code": 200,
"data": true,
"success": true
}
知识库管理
知识库创建
接口
POST /v2/api/knowledge_base/create
入参
名称 | 类型 | 是否必传 | 说明 |
name | string | 是 | 知识库名称 |
description | string | 否 | 知识库描述 |
userProfile | object | 否 | 用户信息 |
userProfile.userId | string | 否 | 用户自定义userId |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | 请求唯一标识 |
data | object | 请求返回内容 |
data.knowledgeBaseId | string | 知识库id |
data.name | string | 知识库名称 |
data.description | string | 知识库描述 |
返回示例
{
"requestId": "48c909bce7df08bff86bd0ce5b1bf256",
"code": 200,
"data": {
"knowledgeBaseId": "01d8ad6724414f719028dd22906045e2",
"name": "测试知识库",
"description": "测试的知识库"
},
"success": true
}
知识库修改
接口
POST /v2/api/knowledge_base/update
入参
名称 | 类型 | 是否必传 | 说明 |
knowledgeBaseId | string | 是 | 知识库id |
name | string | 否 | 知识库名称 |
description | string | 否 | 知识库描述 |
userProfile | object | 否 | 用户信息 |
userProfile.userId | string | 否 | 用户自定义userId |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | 请求唯一标识 |
data | bool | 是否修改成功 |
返回示例
{
"requestId": "57511655d3a14e40e740dbc953323c56",
"code": 200,
"data": true,
"success": true
}
知识库查询
接口
POST /v2/api/knowledge_base/search
入参
名称 | 类型 | 是否必传 | 说明 |
pageNum | int | 否(默认1) | 分页页码 |
pageSize | ing | 否(默认30) | 分页大小 |
userProfile | object | 否 | 用户信息 |
userProfile.userId | string | 否 | 用户自定义userId |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | 请求唯一标识 |
data | object | 请求返回内容 |
data.page | int | 分页页码 |
data.pageSize | int | 分页大小 |
data.total | int | 总数 |
data.list | array | 数据 |
data.list[i].id | int | 知识库主键id |
data.list[i].knowledgeBaseId | string | 知识库id |
data.list[i].name | string | 知识库名称 |
data.list[i].gmtCreate | int | 知识库创建时间 |
data.list[i].gmtModified | int | 知识库修改时间 |
data.list[i].description | string | 知识库描述 |
data.list[i].count | int | 知识库下文件详情数量 |
返回示例
{
"requestId": "359b36e96b40ac3a7fdee6438673c17f",
"code": 200,
"data": {
"list": [
{
"id": 1481,
"gmtCreate": 1720589842000,
"gmtModified": 1720589949000,
"knowledgeBaseId": "01d8ad6724414f719028dd22906045e2",
"name": "修改测试的知识库",
"userId": "ad7bd837841744b092f5cad828dc443d",
"bizUserId": "",
"description": "修该测试知识库描述",
"count": 0
}
],
"page": 1,
"pageSize": 10,
"total": 1
},
"success": true
}
知识库删除
接口
POST /v2/api/knowledge_base/delete
入参
名称 | 类型 | 是否必传 | 说明 |
knowledgeBaseId | string | 是 | 知识库id |
userProfile | object | 否 | 用户信息 |
userProfile.userId | string | 否 | 用户自定义userId |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | 请求唯一标识 |
data | bool | 是否修改成功 |
返回示例
{
"requestId": "57511655d3a14e40e740dbc953323c56",
"code": 200,
"data": true,
"success": true
}
知识库文件详情上传
接口
POST /v2/api/knowledge_base/detail/upload
入参
名称 | 类型 | 是否必传 | 说明 |
knowledgeBaseId | string | 是 | 知识库id |
type | string | 是 | 文件类型:text,form和document |
fileInfos | array | 是 | 上传文件集合 |
fileInfos[i].filename | string | 是 | 文件名称,以文件格式后缀结尾 |
fileInfos[i].fileUrl | string | 是 | 公网可访问地址 |
userProfile | object | 否 | 用户信息 |
userProfile.userId | string | 否 | 用户自定义userId |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | 请求唯一标识 |
data | bool | 是否上传成功 |
返回示例
{
"requestId": "57511655d3a14e40e740dbc953323c56",
"code": 200,
"data": true,
"success": true
}
知识库文件详情修改
接口
POST /v2/api/knowledge_base/detail/update
入参
名称 | 类型 | 是否必传 | 说明 |
knowledgeBaseId | string | 是 | 知识库id |
name | string | 是 | 现在文件的名称 |
newName | string | 是 | 修改的名称 |
userProfile | object | 否 | 用户信息 |
userProfile.userId | string | 否 | 用户自定义userId |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | 请求唯一标识 |
data | bool | 是否修改成功 |
返回示例
{
"requestId": "57511655d3a14e40e740dbc953323c56",
"code": 200,
"data": true,
"success": true
}
知识库文件详情查询
接口
POST /v2/api/knowledge_base/detail/search
入参
名称 | 类型 | 是否必传 | 说明 |
knowledgeBaseId | string | 是 | 知识库id |
pageNum | int | 否(默认1) | 分页页码 |
pageSize | ing | 否(默认30) | 分页大小 |
userProfile | object | 否 | 用户信息 |
userProfile.userId | string | 否 | 用户自定义userId |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | 请求唯一标识 |
data | object | 请求返回内容 |
data.page | int | 分页页码 |
data.pageSize | int | 分页大小 |
data.total | int | 总数 |
data.list | array | 数据 |
data.list[i].id | int | 知识库详情主键id |
data.list[i].knowledgeBaseId | string | 知识库id |
data.list[i].name | string | 知识库详情名称 |
data.list[i].gmtCreate | int | 知识库详情创建时间 |
data.list[i].gmtModified | int | 知识库详情修改时间 |
data.list[i].type | string | 知识库详情类型 |
data.list[i].status | int | 知识库详情数状态不 |
data.list[i].fileInfo | object | 文件详情 |
data.list[i].fileInfo.filename | string | 文件名 |
data.list[i].fileInfo.fileSavePath | string | oss路径 |
data.list[i].fileInfo.fileUrl | string | 转存后的地址 |
返回示例
{
"requestId": "9f80ea20-30f6-4554-9a90-e2c495ae69c3",
"code": 200,
"data": {
"list": [
{
"id": 5409,
"gmtCreate": 1720590322000,
"gmtModified": 1720590380000,
"knowledgeBaseId": "01d8ad6724414f719028dd22906045e2",
"name": "测试.txt",
"type": "text",
"status": "file_parsing",
"fileInfo": {
"fileSavePath": "kb/oss-ad7bd837841744b092f5cad828dc443d-82e373fba2c09b62068995d1e8cde9f2.txt",
"filename": "测试.txt",
"fileUrl": "//character-ai.oss-cn-hangzhou.aliyuncs.com/kb/oss-ad7bd837841744b092f5cad828dc443d-82e373fba2c09b62068995d1e8cde9f2.txt?Expires=1752126453&OSSAccessKeyId=LTAI5tCjo7K2tamrwRLJ****&Signature=nI%2BCoYHE4oKO2dVAn0W2yNohZrg%3D"
}
}
],
"page": 1,
"pageSize": 30,
"total": 1
},
"success": true
}
知识库文件详情删除
接口
POST /v2/api/knowledge_base/detail/delete
入参
名称 | 类型 | 是否必传 | 说明 |
knowledgeBaseId | string | 是 | 知识库id |
name | string | 是 | 知识库文件详情名称 |
userProfile | object | 否 | 用户信息 |
userProfile.userId | string | 否 | 用户自定义userId |
返回
名称 | 类型 | 说明 |
code | int | 返回码,正常返回200,异常返回空 |
success | bool | 正常返回 true,异常返回null |
requestId | string | 请求唯一标识 |
data | bool | 是否修改成功 |
返回示例
{
"requestId": "57511655d3a14e40e740dbc953323c56",
"code": 200,
"data": true,
"success": true
}