返回 DeepSeek-Reasonix
factory.go
根目录 / internal / provider / responses / factory.go
1 package responses
2
3 import (
4 "reasonix/internal/netclient"
5 "reasonix/internal/provider"
6 )
7
8 func newFromConfig(cfg provider.Config) (provider.Provider, error) {
9 cfg = provider.ApplyOpenCodeGoContract("responses", cfg)
10 effort, _ := cfg.Extra["effort"].(string)
11 mode, _ := cfg.Extra["mode"].(string)
12 webSearch, _ := cfg.Extra["web_search"].(bool)
13 var stateful *bool
14 switch value := cfg.Extra["stateful"].(type) {
15 case bool:
16 stateful = &value
17 case *bool:
18 stateful = value
19 }
20 proxy, _ := cfg.Extra["proxy_spec"].(netclient.ProxySpec)
21 keyEnv, _ := cfg.Extra["api_key_env"].(string)
22 keySource, _ := cfg.Extra["api_key_source"].(string)
23 maxOutputTokens, _ := cfg.Extra["max_output_tokens"].(int)
24 requestURL, _ := cfg.Extra["request_url"].(string)
25 return New(Config{
26 HTTPClient: cfg.HTTPClient,
27 Name: cfg.Name, DisplayName: cfg.DisplayName, Protocol: cfg.Protocol, APIKey: cfg.APIKey, BaseURL: cfg.BaseURL, Model: cfg.Model,
28 ModelInfo: cfg.ModelInfo,
29 Effort: effort, Mode: mode, Stateful: stateful, WebSearch: webSearch, Proxy: proxy,
30 KeyEnv: keyEnv, KeySource: keySource, MaxOutputTokens: maxOutputTokens, RequestURL: requestURL,
31 // Extra 原样透传:vision 等能力开关由调用方(boot/CLI)写入
32 // cfg.Extra,factory 若丢弃则 New() 读不到(评审 #7234 第 3 点)。
33 Extra: cfg.Extra,
34 }), nil
35 }
36
36 lines GO