返回 DeepSeek-Reasonix
model_override_render.go
根目录 / internal / config / model_override_render.go
1 package config
2
3 import (
4 "fmt"
5 "sort"
6 "strings"
7 )
8
9 func renderModelOverrides(m map[string]ProviderModelOverride) string {
10 keys := make([]string, 0, len(m))
11 for k, ov := range m {
12 if k == "" || modelOverrideEmpty(ov) {
13 continue
14 }
15 keys = append(keys, k)
16 }
17 sort.Strings(keys)
18 var b strings.Builder
19 b.WriteString("{ ")
20 for i, k := range keys {
21 if i > 0 {
22 b.WriteString(", ")
23 }
24 fmt.Fprintf(&b, "%q = %s", k, renderModelOverride(m[k]))
25 }
26 b.WriteString(" }")
27 return b.String()
28 }
29
30 func renderModelOverride(ov ProviderModelOverride) string {
31 var parts []string
32 if ov.ReasoningDefaults != "" {
33 parts = append(parts, fmt.Sprintf("reasoning_defaults = %q", ov.ReasoningDefaults))
34 }
35 if ov.ReasoningProtocol != "" {
36 parts = append(parts, fmt.Sprintf("reasoning_protocol = %q", ov.ReasoningProtocol))
37 }
38 if len(ov.SupportedEfforts) > 0 {
39 parts = append(parts, "supported_efforts = "+renderStringArray(ov.SupportedEfforts))
40 }
41 if ov.DefaultEffort != "" {
42 parts = append(parts, fmt.Sprintf("default_effort = %q", ov.DefaultEffort))
43 }
44 if ov.Vision != nil {
45 parts = append(parts, fmt.Sprintf("vision = %t", *ov.Vision))
46 }
47 if ov.ContextWindow > 0 {
48 parts = append(parts, fmt.Sprintf("context_window = %d", ov.ContextWindow))
49 }
50 if ov.MaxOutputTokens != 0 {
51 parts = append(parts, fmt.Sprintf("max_output_tokens = %d", ov.MaxOutputTokens))
52 }
53 return "{ " + strings.Join(parts, ", ") + " }"
54 }
55
56 func modelOverrideEmpty(ov ProviderModelOverride) bool {
57 return ov.ReasoningProtocol == "" && len(ov.SupportedEfforts) == 0 && ov.DefaultEffort == "" && ov.Vision == nil && ov.ContextWindow <= 0 && ov.MaxOutputTokens == 0
58 }
59
59 lines GO