自动上下文切换模型
为了方便开发者的日常开发和使用,我们提供了自动切换模型 step-1-auto 和 step-1v-auto,该模型提供了基于上下文的自动切换能力。开发者可以直接使用 step-1-auto、step-1v-auto来调用开放平台 API,开放平台将会根据用户输入的 Token 和输出 token 之和,来选择对应的模型。
自动切换模型说明
自动切换模型支持切换同一个模型簇中不同上下文的模型,不同模型簇之间不支持自动切换。
自动切换模型名 | 切换条件 | 可切换模型 |
---|---|---|
step-1-auto | input_token + max_tokens < 8192 | step-1-8k |
step-1-auto | 8192 < input_token+max_tokens < 32000 | step-1-32k |
step-1-auto | 32000 < input_token+max_tokens < 128000 | step-1-128k |
step-1-auto | 128000 < input_token+max_tokens | step-1-256k |
step-1v-auto | input_token + max_tokens < 8192 | step-1v-8k |
step-1v-auto | 8192 < input_token+max_tokens | step-1v-32k |
实现原理
自动切换模型并未提供一个全新的模型,而是一个 Virtual Model,底层实际上是通过调用 Count API,计算当前输入的 Prompt ,并进行进一步分流,调用真实的模型。
// 基于开放的 token count api ,计算输入的 message 的 token 数量
// https://platform.stepfun.com/docs/api-reference/token-count
function count_token(messages){
}
// 接受用户传入的 messages 和 maxTokens,返回一个模型名称
function selectModel(messages, maxTokens) {
// 1. 计算输入的 message 的 token 数量
const inputToken = count(messages);
// 2. 计算出 input_token + maxTokens d的总 token 数量
const totalTokens = inputToken + maxTokens;
// 根据总 token 数量,返回对应的模型名称
if (totalTokens <= 8 * 1024) {
return "step-1-8k";
} else if (totalTokens <= 32 * 1000) {
return "step-1-32k";
} else if (totalTokens <= 128 * 1000) {
return "step-1-128k";
} else {
return "step-1-256k";
}
}
根据业务逻辑实现自定义的模型切换
在真实业务场景中,除了基于模型上下文进行切换,我们还推荐你根据模型的输入信息选择合适的模型。比如在对话过程中,根据用户的输入信息当中是否包含图片,选择使用 step-1v 模型簇或 step-1 模型簇。
// 接受用户输入的消息,判断是否有图片
function is_has_image(messages){
}
// 接受用户传入的信息,根据信息判断使用哪个模型
function selectModel(messages) {
// 判断是否有图片
if (is_has_image(messages)) {
return "step-1-auto"
}else{
return "step-1v-auto"
}
}
注意事项
- 模型 Token 数量计算时会存在一定的误差概率,出现误差时,可能会出现选择更长上下文的模型。
- 官方的 Tool (如 Web Search、知识库 Retrieval)等因为会带来额外的上下文,所以在计算 Token 数量时,会自动扩大 Token,选择更大上下文的模型。