constants.go 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package domain
  2. // Status constants
  3. const (
  4. StatusActive = "active"
  5. StatusDisabled = "disabled"
  6. StatusError = "error"
  7. StatusUnused = "unused"
  8. StatusUsed = "used"
  9. StatusExpired = "expired"
  10. )
  11. // Role constants
  12. const (
  13. RoleAdmin = "admin"
  14. RoleSuperAdmin = "super_admin"
  15. RoleUser = "user"
  16. )
  17. // Platform constants
  18. const (
  19. PlatformAnthropic = "anthropic"
  20. PlatformOpenAI = "openai"
  21. PlatformGemini = "gemini"
  22. PlatformAntigravity = "antigravity"
  23. PlatformGrok = "grok"
  24. // 国产 OpenAI 兼容供应商(经 OpenAI 网关转发,按 Chat Completions 协议)。
  25. PlatformKimi = "kimi" // Kimi (月之暗面 / Moonshot)
  26. PlatformZhipu = "zhipu" // 智谱 GLM (bigmodel)
  27. PlatformDeepseek = "deepseek" // DeepSeek
  28. PlatformMiniMax = "minimax" // MiniMax (M 系列)
  29. PlatformComposite = "composite"
  30. )
  31. // Account mode constants 区分国产供应商的「按量付费(余额)」与「Coding Plan」两种接入方式。
  32. // 存储于 credentials["account_mode"],决定 base_url 预设与额度监控方式。
  33. const (
  34. AccountModePayG = "payg" // 按量付费:消耗余额,做余额检测冷却
  35. AccountModeCoding = "coding" // Coding Plan:滚动用量窗口冷却(5h / weekly)
  36. )
  37. // API protocol constants 国产供应商的上游 API 协议维度。存储于
  38. // credentials["api_protocol"],与 account_mode 正交:协议决定转发端点与格式,
  39. // 模式决定额度监控方式。同协议请求零转换直通;跨协议组合才走转换链。
  40. const (
  41. APIProtocolChatCompletions = "chat_completions" // OpenAI Chat Completions(默认)
  42. APIProtocolAnthropic = "anthropic" // 原生 Anthropic /v1/messages(适配 Claude Code)
  43. APIProtocolResponses = "responses" // OpenAI Responses(deepseek / kimi / minimax 原生端点,适配 Codex)
  44. APIProtocolAdaptive = "adaptive" // 按入站协议优先选择供应商原生端点
  45. )
  46. // Account type constants
  47. const (
  48. AccountTypeOAuth = "oauth" // OAuth类型账号(full scope: profile + inference)
  49. AccountTypeSetupToken = "setup-token" // Setup Token类型账号(inference only scope)
  50. AccountTypeAPIKey = "apikey" // API Key类型账号
  51. AccountTypeUpstream = "upstream" // 上游透传类型账号(通过 Base URL + API Key 连接上游)
  52. AccountTypeBedrock = "bedrock" // AWS Bedrock 类型账号(通过 SigV4 签名或 API Key 连接 Bedrock,由 credentials.auth_mode 区分)
  53. AccountTypeServiceAccount = "service_account" // Google Service Account 类型账号(用于 Vertex AI)
  54. )
  55. // Redeem type constants
  56. const (
  57. RedeemTypeBalance = "balance"
  58. RedeemTypeConcurrency = "concurrency"
  59. RedeemTypeSubscription = "subscription"
  60. RedeemTypeInvitation = "invitation"
  61. )
  62. // PromoCode status constants
  63. const (
  64. PromoCodeStatusActive = "active"
  65. PromoCodeStatusDisabled = "disabled"
  66. )
  67. // Admin adjustment type constants
  68. const (
  69. AdjustmentTypeAdminBalance = "admin_balance" // 管理员调整余额
  70. AdjustmentTypeAdminConcurrency = "admin_concurrency" // 管理员调整并发数
  71. )
  72. // Group subscription type constants
  73. const (
  74. SubscriptionTypeStandard = "standard" // 标准计费模式(按余额扣费)
  75. SubscriptionTypeSubscription = "subscription" // 订阅模式(按限额控制)
  76. )
  77. // Subscription status constants
  78. const (
  79. SubscriptionStatusActive = "active"
  80. SubscriptionStatusExpired = "expired"
  81. SubscriptionStatusSuspended = "suspended"
  82. )
  83. // AntigravityGemini31ProAgentModel is the upstream route for Gemini 3.1 Pro High.
  84. const AntigravityGemini31ProAgentModel = "gemini-pro-agent"
  85. // DefaultAntigravityModelMapping 是 Antigravity 平台的默认模型映射
  86. // 当账号未配置 model_mapping 时使用此默认值
  87. // 与前端 useModelWhitelist.ts 中的 antigravityDefaultMappings 保持一致
  88. var DefaultAntigravityModelMapping = map[string]string{
  89. // Claude 白名单
  90. "claude-fable-5-1": "claude-fable-5-1", // 官方模型
  91. "claude-fable-5": "claude-fable-5", // 官方模型
  92. "claude-opus-4-8": "claude-opus-4-8", // 官方模型
  93. "claude-opus-4-7": "claude-opus-4-7", // 官方模型
  94. "claude-opus-4-6-thinking": "claude-opus-4-6-thinking", // 官方模型
  95. "claude-opus-4-6": "claude-opus-4-6-thinking", // 简称映射
  96. "claude-opus-4-5-thinking": "claude-opus-4-6-thinking", // 迁移旧模型
  97. "claude-sonnet-4-6": "claude-sonnet-4-6",
  98. "claude-sonnet-4-5": "claude-sonnet-4-5", // 显式 canonical 选择透传
  99. "claude-sonnet-4-5-thinking": "claude-sonnet-4-6", // 迁移旧兼容别名
  100. // Claude 详细版本 ID 映射
  101. "claude-opus-4-5-20251101": "claude-opus-4-6-thinking", // 迁移旧模型
  102. "claude-sonnet-4-5-20250929": "claude-sonnet-4-6", // 迁移旧模型
  103. // Claude Haiku → Sonnet(无 Haiku 支持)
  104. "claude-haiku-4-5": "claude-sonnet-4-6",
  105. "claude-haiku-4-5-20251001": "claude-sonnet-4-6",
  106. // Gemini 2.5 白名单
  107. "gemini-2.5-flash": "gemini-2.5-flash",
  108. "gemini-2.5-flash-image": "gemini-2.5-flash-image",
  109. "gemini-2.5-flash-image-preview": "gemini-2.5-flash-image",
  110. "gemini-2.5-flash-lite": "gemini-2.5-flash-lite",
  111. "gemini-2.5-flash-thinking": "gemini-2.5-flash-thinking",
  112. "gemini-2.5-pro": "gemini-2.5-pro",
  113. // Gemini 3 白名单
  114. "gemini-3-flash": "gemini-3-flash",
  115. "gemini-3-pro-high": "gemini-3-pro-high",
  116. "gemini-3-pro-low": "gemini-3-pro-low",
  117. // Gemini 3 preview 映射
  118. "gemini-3-flash-preview": "gemini-3-flash",
  119. "gemini-3-pro-preview": "gemini-3-pro-high",
  120. // Gemini 3.1 白名单
  121. AntigravityGemini31ProAgentModel: AntigravityGemini31ProAgentModel,
  122. "gemini-3.1-pro": AntigravityGemini31ProAgentModel,
  123. "gemini-3.1-pro-high": AntigravityGemini31ProAgentModel,
  124. "gemini-3.1-pro-low": "gemini-3.1-pro-low",
  125. // Gemini 3.1 preview 映射
  126. "gemini-3.1-pro-preview": AntigravityGemini31ProAgentModel,
  127. // Gemini 3.1 image 白名单
  128. "gemini-3.1-flash-image": "gemini-3.1-flash-image",
  129. // Gemini 3.1 image preview 映射
  130. "gemini-3.1-flash-image-preview": "gemini-3.1-flash-image",
  131. // Gemini 3.6 Flash tiered models
  132. "gemini-3.6-flash": "gemini-3.6-flash",
  133. "gemini-3.6-flash-high": "gemini-3.6-flash-high",
  134. "gemini-3.6-flash-low": "gemini-3.6-flash-low",
  135. "gemini-3.6-flash-medium": "gemini-3.6-flash-medium",
  136. "gemini-3.6-flash-tiered": "gemini-3.6-flash-tiered",
  137. // Gemini 3 image 兼容映射(向 3.1 image 迁移)
  138. "gemini-3-pro-image": "gemini-3.1-flash-image",
  139. "gemini-3-pro-image-preview": "gemini-3.1-flash-image",
  140. // 其他官方模型
  141. "gpt-oss-120b-medium": "gpt-oss-120b-medium",
  142. "tab_flash_lite_preview": "tab_flash_lite_preview",
  143. }
  144. // DefaultBedrockModelMapping 是 AWS Bedrock 平台的默认模型映射
  145. // 将 Anthropic 标准模型名映射到 Bedrock 模型 ID
  146. // 注意:此处的 "us." 前缀仅为默认值,ResolveBedrockModelID 会根据账号配置的
  147. // aws_region 自动调整为匹配的区域前缀(如 eu.、apac.、jp. 等)
  148. var DefaultBedrockModelMapping = map[string]string{
  149. // Claude Fable
  150. "claude-fable-5-1": "anthropic.claude-fable-5-1",
  151. "claude-fable-5": "anthropic.claude-fable-5",
  152. // Claude Opus
  153. "claude-opus-5": "us.anthropic.claude-opus-5-v1",
  154. "claude-opus-4-8": "us.anthropic.claude-opus-4-8-v1",
  155. "claude-opus-4-7": "us.anthropic.claude-opus-4-7-v1",
  156. "claude-opus-4-6-thinking": "us.anthropic.claude-opus-4-6-v1",
  157. "claude-opus-4-6": "us.anthropic.claude-opus-4-6-v1",
  158. "claude-opus-4-5-thinking": "us.anthropic.claude-opus-4-5-20251101-v1:0",
  159. "claude-opus-4-5-20251101": "us.anthropic.claude-opus-4-5-20251101-v1:0",
  160. "claude-opus-4-1": "us.anthropic.claude-opus-4-1-20250805-v1:0",
  161. "claude-opus-4-20250514": "us.anthropic.claude-opus-4-20250514-v1:0",
  162. // Claude Sonnet
  163. "claude-sonnet-5": "us.anthropic.claude-sonnet-5-v1",
  164. "claude-sonnet-4-6-thinking": "us.anthropic.claude-sonnet-4-6",
  165. "claude-sonnet-4-6": "us.anthropic.claude-sonnet-4-6",
  166. "claude-sonnet-4-5": "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
  167. "claude-sonnet-4-5-thinking": "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
  168. "claude-sonnet-4-5-20250929": "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
  169. "claude-sonnet-4-20250514": "us.anthropic.claude-sonnet-4-20250514-v1:0",
  170. // Claude Haiku
  171. "claude-haiku-4-5": "us.anthropic.claude-haiku-4-5-20251001-v1:0",
  172. "claude-haiku-4-5-20251001": "us.anthropic.claude-haiku-4-5-20251001-v1:0",
  173. }