| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package reasoning
- import (
- "strings"
- "github.com/samber/lo"
- )
- var EffortSuffixes = []string{"-max", "-xhigh", "-high", "-medium", "-low", "-minimal"}
- var OpenAIEffortSuffixes = []string{"-high", "-minimal", "-low", "-medium", "-none", "-xhigh"}
- var DeepSeekV4EffortSuffixes = []string{"-none", "-max"}
- // TrimEffortSuffix -> modelName level(low) exists
- func TrimEffortSuffix(modelName string) (string, string, bool) {
- return TrimEffortSuffixWithSuffixes(modelName, EffortSuffixes)
- }
- func TrimEffortSuffixWithSuffixes(modelName string, suffixes []string) (string, string, bool) {
- suffix, found := lo.Find(suffixes, func(s string) bool {
- return strings.HasSuffix(modelName, s)
- })
- if !found {
- return modelName, "", false
- }
- return strings.TrimSuffix(modelName, suffix), strings.TrimPrefix(suffix, "-"), true
- }
- func ParseOpenAIReasoningEffortFromModelSuffix(modelName string) (string, string) {
- baseModel, effort, ok := TrimEffortSuffixWithSuffixes(modelName, OpenAIEffortSuffixes)
- if !ok {
- return "", modelName
- }
- return effort, baseModel
- }
- func ParseDeepSeekV4ThinkingSuffix(modelName string) (baseModel string, thinkingType string, effort string, ok bool) {
- baseModel, suffix, ok := TrimEffortSuffixWithSuffixes(modelName, DeepSeekV4EffortSuffixes)
- if !ok || !strings.HasPrefix(baseModel, "deepseek-v4-") {
- return modelName, "", "", false
- }
- switch suffix {
- case "none":
- return baseModel, "disabled", "", true
- case "max":
- return baseModel, "enabled", "max", true
- default:
- return modelName, "", "", false
- }
- }
|