返回 DeepSeek-Reasonix
reasoning_capability.go
根目录 / internal / provider / anthropic / reasoning_capability.go
1 package anthropic
2
3 import (
4 "reasonix/internal/provider"
5 "reasonix/internal/provider/openai"
6 )
7
8 func ReasoningForConfig(cfg provider.Config) provider.ReasoningCapability {
9 cfg = provider.ApplyOpenCodeGoContract("anthropic", cfg)
10 protocol, _ := cfg.Extra["reasoning_protocol"].(string)
11 if protocol == "none" {
12 return provider.ReasoningOptions("")
13 }
14 var cap provider.ReasoningCapability
15 if protocol == "deepseek" || openai.IsDeepSeek(cfg.BaseURL) {
16 cap = provider.ReasoningOptions("high", "disabled", "low", "high", "max")
17 } else if thinking, _ := cfg.Extra["thinking"].(string); thinking == "enabled" || thinking == "disabled" {
18 cap = provider.ReasoningOptions(thinking, "enabled", "disabled")
19 } else {
20 cap = provider.ReasoningOptions("", "low", "medium", "high", "xhigh", "max")
21 }
22 cap = provider.DeclaredReasoning(cfg, cap)
23 if thinking, _ := cfg.Extra["thinking"].(string); thinking == "disabled" {
24 return provider.ReasoningOptions("disabled", "disabled")
25 }
26 if thinking, _ := cfg.Extra["thinking"].(string); thinking == "enabled" && protocol != "deepseek" && !openai.IsDeepSeek(cfg.BaseURL) {
27 cap = provider.RestrictReasoning(cap, "enabled", "disabled")
28 }
29 return cap
30 }
31 func (c *client) ReasoningCapability() provider.ReasoningCapability { return c.reasoning.Clone() }
32
33 // configuredEffort validates the adapter input after config compatibility normalization.
34 func configuredEffort(cfg provider.Config) (string, error) {
35 effort, _ := cfg.Extra["effort"].(string)
36 if effort == "auto" || effort == "off" {
37 return "", nil
38 }
39 return effort, ReasoningForConfig(cfg).Validate(cfg.Model, effort)
40 }
41
42 func (c *client) RequiresToolCallReasoning() bool {
43 return c.deepSeekThinkingEnabled()
44 }
45
45 lines GO