feat: Enhance GetCompletionRatio function

This commit is contained in:
1808837298@qq.com
2025-03-27 16:38:29 +08:00
parent 1df39e5a7f
commit 58525c574b

View File

@@ -375,6 +375,17 @@ func GetCompletionRatio(name string) float64 {
return ratio return ratio
} }
} }
hardCodedRatio, contain := getHardcodedCompletionModelRatio(name)
if contain {
return hardCodedRatio
}
if ratio, ok := CompletionRatio[name]; ok {
return ratio
}
return hardCodedRatio
}
func getHardcodedCompletionModelRatio(name string) (float64, bool) {
lowercaseName := strings.ToLower(name) lowercaseName := strings.ToLower(name)
if strings.HasPrefix(name, "gpt-4-gizmo") { if strings.HasPrefix(name, "gpt-4-gizmo") {
name = "gpt-4-gizmo-*" name = "gpt-4-gizmo-*"
@@ -385,87 +396,85 @@ func GetCompletionRatio(name string) float64 {
if strings.HasPrefix(name, "gpt-4") && !strings.HasSuffix(name, "-all") && !strings.HasSuffix(name, "-gizmo-*") { if strings.HasPrefix(name, "gpt-4") && !strings.HasSuffix(name, "-all") && !strings.HasSuffix(name, "-gizmo-*") {
if strings.HasPrefix(name, "gpt-4o") { if strings.HasPrefix(name, "gpt-4o") {
if name == "gpt-4o-2024-05-13" { if name == "gpt-4o-2024-05-13" {
return 3 return 3, true
} }
return 4 return 4, true
} }
if strings.HasPrefix(name, "gpt-4.5") { if strings.HasPrefix(name, "gpt-4.5") && strings.HasSuffix(name, "preview") {
return 2 return 2, true
} }
if strings.HasPrefix(name, "gpt-4-turbo") || (strings.HasPrefix(name, "gpt-4-") && strings.HasSuffix(name, "preview")) { if strings.HasPrefix(name, "gpt-4-turbo") || (strings.HasPrefix(name, "gpt-4-") && strings.HasSuffix(name, "preview")) {
return 3 return 3, true
} }
return 2 // 没有特殊标记的 gpt-4 模型默认倍率为 2
return 2, false
} }
if strings.HasPrefix(name, "o1") || strings.HasPrefix(name, "o3") { if strings.HasPrefix(name, "o1") || strings.HasPrefix(name, "o3") {
return 4 return 4, true
} }
if name == "chatgpt-4o-latest" { if name == "chatgpt-4o-latest" {
return 3 return 3, true
} }
if strings.Contains(name, "claude-instant-1") { if strings.Contains(name, "claude-instant-1") {
return 3 return 3, true
} else if strings.Contains(name, "claude-2") { } else if strings.Contains(name, "claude-2") {
return 3 return 3, true
} else if strings.Contains(name, "claude-3") { } else if strings.Contains(name, "claude-3") {
return 5 return 5, true
} }
if strings.HasPrefix(name, "gpt-3.5") { if strings.HasPrefix(name, "gpt-3.5") {
if name == "gpt-3.5-turbo" || strings.HasSuffix(name, "0125") { if name == "gpt-3.5-turbo" || strings.HasSuffix(name, "0125") {
// https://openai.com/blog/new-embedding-models-and-api-updates // https://openai.com/blog/new-embedding-models-and-api-updates
// Updated GPT-3.5 Turbo model and lower pricing // Updated GPT-3.5 Turbo model and lower pricing
return 3 return 3, true
} }
if strings.HasSuffix(name, "1106") { if strings.HasSuffix(name, "1106") {
return 2 return 2, true
} }
return 4.0 / 3.0 return 4.0 / 3.0, true
} }
if strings.HasPrefix(name, "mistral-") { if strings.HasPrefix(name, "mistral-") {
return 3 return 3, true
} }
if strings.HasPrefix(name, "gemini-") { if strings.HasPrefix(name, "gemini-") {
return 4 return 4, true
} }
if strings.HasPrefix(name, "command") { if strings.HasPrefix(name, "command") {
switch name { switch name {
case "command-r": case "command-r":
return 3 return 3, true
case "command-r-plus": case "command-r-plus":
return 5 return 5, true
case "command-r-08-2024": case "command-r-08-2024":
return 4 return 4, true
case "command-r-plus-08-2024": case "command-r-plus-08-2024":
return 4 return 4, true
default: default:
return 4 return 4, true
} }
} }
// hint 只给官方上4倍率由于开源模型供应商自行定价不对其进行补全倍率进行强制对齐 // hint 只给官方上4倍率由于开源模型供应商自行定价不对其进行补全倍率进行强制对齐
if lowercaseName == "deepseek-chat" || lowercaseName == "deepseek-reasoner" { if lowercaseName == "deepseek-chat" || lowercaseName == "deepseek-reasoner" {
return 4 return 4, true
} }
if strings.HasPrefix(name, "ERNIE-Speed-") { if strings.HasPrefix(name, "ERNIE-Speed-") {
return 2 return 2, true
} else if strings.HasPrefix(name, "ERNIE-Lite-") { } else if strings.HasPrefix(name, "ERNIE-Lite-") {
return 2 return 2, true
} else if strings.HasPrefix(name, "ERNIE-Character") { } else if strings.HasPrefix(name, "ERNIE-Character") {
return 2 return 2, true
} else if strings.HasPrefix(name, "ERNIE-Functions") { } else if strings.HasPrefix(name, "ERNIE-Functions") {
return 2 return 2, true
} }
switch name { switch name {
case "llama2-70b-4096": case "llama2-70b-4096":
return 0.8 / 0.64 return 0.8 / 0.64, true
case "llama3-8b-8192": case "llama3-8b-8192":
return 2 return 2, true
case "llama3-70b-8192": case "llama3-70b-8192":
return 0.79 / 0.59 return 0.79 / 0.59, true
} }
if ratio, ok := CompletionRatio[name]; ok { return 1, false
return ratio
}
return 1
} }
func GetAudioRatio(name string) float64 { func GetAudioRatio(name string) float64 {