provider_entities.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. from enum import Enum
  2. from typing import Optional
  3. from pydantic import BaseModel, ConfigDict
  4. from core.model_runtime.entities.model_entities import ModelType
  5. from models.provider import ProviderQuotaType
  6. class QuotaUnit(Enum):
  7. TIMES = 'times'
  8. TOKENS = 'tokens'
  9. CREDITS = 'credits'
  10. class SystemConfigurationStatus(Enum):
  11. """
  12. Enum class for system configuration status.
  13. """
  14. ACTIVE = 'active'
  15. QUOTA_EXCEEDED = 'quota-exceeded'
  16. UNSUPPORTED = 'unsupported'
  17. class RestrictModel(BaseModel):
  18. model: str
  19. base_model_name: Optional[str] = None
  20. model_type: ModelType
  21. # pydantic configs
  22. model_config = ConfigDict(protected_namespaces=())
  23. class QuotaConfiguration(BaseModel):
  24. """
  25. Model class for provider quota configuration.
  26. """
  27. quota_type: ProviderQuotaType
  28. quota_unit: QuotaUnit
  29. quota_limit: int
  30. quota_used: int
  31. is_valid: bool
  32. restrict_models: list[RestrictModel] = []
  33. class SystemConfiguration(BaseModel):
  34. """
  35. Model class for provider system configuration.
  36. """
  37. enabled: bool
  38. current_quota_type: Optional[ProviderQuotaType] = None
  39. quota_configurations: list[QuotaConfiguration] = []
  40. credentials: Optional[dict] = None
  41. class CustomProviderConfiguration(BaseModel):
  42. """
  43. Model class for provider custom configuration.
  44. """
  45. credentials: dict
  46. class CustomModelConfiguration(BaseModel):
  47. """
  48. Model class for provider custom model configuration.
  49. """
  50. model: str
  51. model_type: ModelType
  52. credentials: dict
  53. # pydantic configs
  54. model_config = ConfigDict(protected_namespaces=())
  55. class CustomConfiguration(BaseModel):
  56. """
  57. Model class for provider custom configuration.
  58. """
  59. provider: Optional[CustomProviderConfiguration] = None
  60. models: list[CustomModelConfiguration] = []
  61. class ModelLoadBalancingConfiguration(BaseModel):
  62. """
  63. Class for model load balancing configuration.
  64. """
  65. id: str
  66. name: str
  67. credentials: dict
  68. class ModelSettings(BaseModel):
  69. """
  70. Model class for model settings.
  71. """
  72. model: str
  73. model_type: ModelType
  74. enabled: bool = True
  75. load_balancing_configs: list[ModelLoadBalancingConfiguration] = []
  76. # pydantic configs
  77. model_config = ConfigDict(protected_namespaces=())