provider_entities.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. from enum import Enum
  2. from typing import Optional
  3. from pydantic import BaseModel
  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. class QuotaConfiguration(BaseModel):
  22. """
  23. Model class for provider quota configuration.
  24. """
  25. quota_type: ProviderQuotaType
  26. quota_unit: QuotaUnit
  27. quota_limit: int
  28. quota_used: int
  29. is_valid: bool
  30. restrict_models: list[RestrictModel] = []
  31. class SystemConfiguration(BaseModel):
  32. """
  33. Model class for provider system configuration.
  34. """
  35. enabled: bool
  36. current_quota_type: Optional[ProviderQuotaType] = None
  37. quota_configurations: list[QuotaConfiguration] = []
  38. credentials: Optional[dict] = None
  39. class CustomProviderConfiguration(BaseModel):
  40. """
  41. Model class for provider custom configuration.
  42. """
  43. credentials: dict
  44. class CustomModelConfiguration(BaseModel):
  45. """
  46. Model class for provider custom model configuration.
  47. """
  48. model: str
  49. model_type: ModelType
  50. credentials: dict
  51. class CustomConfiguration(BaseModel):
  52. """
  53. Model class for provider custom configuration.
  54. """
  55. provider: Optional[CustomProviderConfiguration] = None
  56. models: list[CustomModelConfiguration] = []
  57. class ModelLoadBalancingConfiguration(BaseModel):
  58. """
  59. Class for model load balancing configuration.
  60. """
  61. id: str
  62. name: str
  63. credentials: dict
  64. class ModelSettings(BaseModel):
  65. """
  66. Model class for model settings.
  67. """
  68. model: str
  69. model_type: ModelType
  70. enabled: bool = True
  71. load_balancing_configs: list[ModelLoadBalancingConfiguration] = []