文档
开发指南
自动上下文切换模型

自动上下文切换模型

为了方便开发者的日常开发和使用,我们提供了自动切换模型 step-1-auto 和 step-1v-auto,该模型提供了基于上下文的自动切换能力。开发者可以直接使用 step-1-auto、step-1v-auto来调用开放平台 API,开放平台将会根据用户输入的 Token 和输出 token 之和,来选择对应的模型。

自动切换模型说明

自动切换模型支持切换同一个模型簇中不同上下文的模型,不同模型簇之间不支持自动切换。

自动切换模型名切换条件可切换模型
step-1-autoinput_token + max_tokens < 8192step-1-8k
step-1-auto8192 < input_token+max_tokens < 32000step-1-32k
step-1-auto32000 < input_token+max_tokens < 128000step-1-128k
step-1-auto128000 < input_token+max_tokensstep-1-256k
step-1v-autoinput_token + max_tokens < 8192step-1v-8k
step-1v-auto8192 < input_token+max_tokensstep-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,选择更大上下文的模型。