| 1 | package config |
| 2 | |
| 3 | var scnetOpenAIModels = []string{ |
| 4 | "GLM-5.2", |
| 5 | "GLM-5", |
| 6 | "GLM-5.1", |
| 7 | "Kimi-K3", |
| 8 | "Kimi-K2.7-Code", |
| 9 | "Kimi-K2.6", |
| 10 | "Kimi-K2.5", |
| 11 | "DeepSeek-V4-Flash", |
| 12 | "DeepSeek-V3.2", |
| 13 | "MiniMax-M3", |
| 14 | "MiniMax-M2.7", |
| 15 | "MiniMax-M2.5", |
| 16 | "MiMo-V2.5-Pro", |
| 17 | } |
| 18 | |
| 19 | var scnetVisionModels = []string{"Kimi-K2.6", "Kimi-K2.5"} |
| 20 | |
| 21 | func scnetOpenAIModelOverrides() map[string]ProviderModelOverride { |
| 22 | return map[string]ProviderModelOverride{ |
| 23 | "DeepSeek-V4-Flash": { |
| 24 | // SCNet's OpenAI-compatible endpoint uses reasoning_effort and leaves |
| 25 | // enable_thinking on by default; it does not use DeepSeek's native |
| 26 | // thinking.type request shape. |
| 27 | ReasoningProtocol: ReasoningProtocolOpenAI, |
| 28 | SupportedEfforts: []string{"high", "max"}, |
| 29 | DefaultEffort: "high", |
| 30 | }, |
| 31 | } |
| 32 | } |
| 33 | |
| 34 | // SCNet (国家超算互联网) exposes a broader catalog through its OpenAI-compatible |
| 35 | // endpoint. Keep this curated list aligned with the Token Plan documentation; |
| 36 | // the UI preserves curated models when the dynamic catalog is also available. |
| 37 | var scnetPreset = ProviderPreset{ |
| 38 | ID: "scnet", |
| 39 | Label: "SCNet", |
| 40 | Description: "SCNet (国家超算互联网) OpenAI-compatible token-plan API.", |
| 41 | KeyEnv: "SCNET_API_KEY", |
| 42 | Entries: []ProviderEntry{{ |
| 43 | Name: "scnet", |
| 44 | Kind: "openai", |
| 45 | BaseURL: "https://api.scnet.cn/api/llm/v1", |
| 46 | ModelsURL: "https://api.scnet.cn/api/llm/v1/models", |
| 47 | Models: scnetOpenAIModels, |
| 48 | VisionModels: scnetVisionModels, |
| 49 | Default: "MiniMax-M2.5", |
| 50 | APIKeyEnv: "SCNET_API_KEY", |
| 51 | ModelOverrides: scnetOpenAIModelOverrides(), |
| 52 | }}, |
| 53 | } |
| 54 | |
| 55 | // SCNet documents the same current Token Plan catalog for its OpenAI- and |
| 56 | // Anthropic-compatible entrypoints. Keep an explicit curated list here because |
| 57 | // the OpenAI /models endpoint is not an Anthropic model-discovery contract. |
| 58 | var scnetAnthropicModels = append([]string(nil), scnetOpenAIModels...) |
| 59 | |
| 60 | var scnetAnthropicPreset = ProviderPreset{ |
| 61 | ID: "scnet-anthropic", |
| 62 | Label: "SCNet Anthropic", |
| 63 | Description: "SCNet (国家超算互联网) Anthropic-compatible token-plan endpoint with Bearer auth.", |
| 64 | KeyEnv: "SCNET_API_KEY", |
| 65 | Entries: []ProviderEntry{{ |
| 66 | Name: "scnet-anthropic", |
| 67 | Kind: "anthropic", |
| 68 | BaseURL: "https://api.scnet.cn/api/llm/anthropic", |
| 69 | Models: scnetAnthropicModels, |
| 70 | VisionModels: scnetVisionModels, |
| 71 | Default: "MiniMax-M2.5", |
| 72 | APIKeyEnv: "SCNET_API_KEY", |
| 73 | AuthHeader: true, |
| 74 | }}, |
| 75 | } |
| 76 | |
| 77 | func init() { |
| 78 | curatedProviderPresets = append(curatedProviderPresets, scnetPreset, scnetAnthropicPreset) |
| 79 | } |
| 80 |