gemini.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package model_setting
  2. import (
  3. "github.com/QuantumNous/new-api/setting/config"
  4. )
  5. // GeminiSettings 定义Gemini模型的配置
  6. type GeminiSettings struct {
  7. SafetySettings map[string]string `json:"safety_settings"`
  8. VersionSettings map[string]string `json:"version_settings"`
  9. SupportedImagineModels []string `json:"supported_imagine_models"`
  10. ThinkingAdapterEnabled bool `json:"thinking_adapter_enabled"`
  11. ThinkingAdapterBudgetTokensPercentage float64 `json:"thinking_adapter_budget_tokens_percentage"`
  12. FunctionCallThoughtSignatureEnabled bool `json:"function_call_thought_signature_enabled"`
  13. }
  14. // 默认配置
  15. var defaultGeminiSettings = GeminiSettings{
  16. SafetySettings: map[string]string{
  17. "default": "OFF",
  18. "HARM_CATEGORY_CIVIC_INTEGRITY": "BLOCK_NONE",
  19. },
  20. VersionSettings: map[string]string{
  21. "default": "v1beta",
  22. "gemini-1.0-pro": "v1",
  23. },
  24. SupportedImagineModels: []string{
  25. "gemini-2.0-flash-exp-image-generation",
  26. "gemini-2.0-flash-exp",
  27. },
  28. ThinkingAdapterEnabled: false,
  29. ThinkingAdapterBudgetTokensPercentage: 0.6,
  30. FunctionCallThoughtSignatureEnabled: true,
  31. }
  32. // 全局实例
  33. var geminiSettings = defaultGeminiSettings
  34. func init() {
  35. // 注册到全局配置管理器
  36. config.GlobalConfig.Register("gemini", &geminiSettings)
  37. }
  38. // GetGeminiSettings 获取Gemini配置
  39. func GetGeminiSettings() *GeminiSettings {
  40. return &geminiSettings
  41. }
  42. // GetGeminiSafetySetting 获取安全设置
  43. func GetGeminiSafetySetting(key string) string {
  44. if value, ok := geminiSettings.SafetySettings[key]; ok {
  45. return value
  46. }
  47. return geminiSettings.SafetySettings["default"]
  48. }
  49. // GetGeminiVersionSetting 获取版本设置
  50. func GetGeminiVersionSetting(key string) string {
  51. if value, ok := geminiSettings.VersionSettings[key]; ok {
  52. return value
  53. }
  54. return geminiSettings.VersionSettings["default"]
  55. }
  56. func IsGeminiModelSupportImagine(model string) bool {
  57. for _, v := range geminiSettings.SupportedImagineModels {
  58. if v == model {
  59. return true
  60. }
  61. }
  62. return false
  63. }