@@ -10,32 +10,33 @@ import (
1010 "github.com/google/uuid"
1111)
1212
13- type modelRule struct {
14- pattern string
15- target string
13+ // 模型映射(有序,长 key 优先匹配,避免 "claude-sonnet-4" 误匹配 "claude-sonnet-4.5")
14+ type modelMapping struct {
15+ key string
16+ value string
1617}
1718
18- var modelRules = []modelRule {
19- {pattern : "claude-sonnet-4-20250514" , target : "claude-sonnet-4" },
20- {pattern : "claude-sonnet-4-6 " , target : "claude-sonnet-4.6 " },
21- {pattern : "claude-sonnet-4.6 " , target : "claude-sonnet-4.6 " },
22- {pattern : "claude-sonnet-4-5 " , target : "claude-sonnet-4.5 " },
23- {pattern : "claude-sonnet-4.5 " , target : "claude-sonnet-4.5 " },
24- {pattern : "claude-haiku-4-5" , target : "claude-haiku-4.5" },
25- {pattern : "claude-haiku-4.5" , target : "claude-haiku-4.5" },
26- {pattern : "claude-opus-4-6 " , target : "claude-opus-4.6 " },
27- {pattern : "claude-opus-4.6 " , target : "claude-opus-4.6 " },
28- {pattern : "claude-opus-4-5 " , target : "claude-opus-4.5 " },
29- {pattern : "claude-opus-4.5 " , target : "claude-opus-4.5 " },
30- {pattern : "claude-3-5- sonnet" , target : "claude-sonnet-4.5 " },
31- {pattern : "claude-3-opus" , target : "claude-sonnet-4.5" },
32- {pattern : "claude-3-sonnet " , target : "claude-sonnet-4" },
33- {pattern : "claude-3-haiku " , target : "claude-haiku-4.5 " },
34- {pattern : "gpt-4o " , target : "claude-sonnet -4.5" },
35- {pattern : "gpt-4-turbo" , target : "claude-sonnet-4.5" },
36- {pattern : "gpt-3.5-turbo" , target : "claude-sonnet-4.5" },
37- {pattern : "gpt-4" , target : "claude-sonnet-4.5" },
38- {pattern : "claude-sonnet-4 " , target : "claude-sonnet-4" },
19+ var modelMapOrdered = []modelMapping {
20+ {"claude-sonnet-4-20250514" , "claude-sonnet-4" },
21+ {"claude-sonnet-4-5 " , "claude-sonnet-4.5 " },
22+ {"claude-sonnet-4.5 " , "claude-sonnet-4.5 " },
23+ {"claude-sonnet-4-6 " , "claude-sonnet-4.6 " },
24+ {"claude-sonnet-4.6 " , "claude-sonnet-4.6 " },
25+ {"claude-haiku-4-5" , "claude-haiku-4.5" },
26+ {"claude-haiku-4.5" , "claude-haiku-4.5" },
27+ {"claude-opus-4-5 " , "claude-opus-4.5 " },
28+ {"claude-opus-4.5 " , "claude-opus-4.5 " },
29+ {"claude-opus-4-6 " , "claude-opus-4.6 " },
30+ {"claude-opus-4.6 " , "claude-opus-4.6 " },
31+ {"claude-sonnet-4 " , "claude-sonnet-4" },
32+ {"claude-3-5-sonnet" , "claude-sonnet-4.5" },
33+ {"claude-3-opus " , "claude-sonnet-4.5 " },
34+ {"claude-3-sonnet " , "claude-sonnet-4 " },
35+ {"claude-3-haiku " , "claude-haiku -4.5" },
36+ {"gpt-4-turbo" , "claude-sonnet-4.5" },
37+ {"gpt-4o" , "claude-sonnet-4.5" },
38+ {"gpt-4" , "claude-sonnet-4.5" },
39+ {"gpt-3.5-turbo " , "claude-sonnet-4.5 " },
3940}
4041
4142// Thinking 模式提示
@@ -57,9 +58,10 @@ func ParseModelAndThinking(model string, thinkingSuffix string) (string, bool) {
5758 lower = strings .ToLower (model )
5859 }
5960
60- for _ , rule := range modelRules {
61- if strings .Contains (lower , rule .pattern ) {
62- return rule .target , thinking
61+ // 映射模型(有序匹配,长 key 优先)
62+ for _ , m := range modelMapOrdered {
63+ if strings .Contains (lower , m .key ) {
64+ return m .value , thinking
6365 }
6466 }
6567
0 commit comments