model_entities.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. from enum import Enum
  2. from typing import Optional
  3. from pydantic import BaseModel, ConfigDict
  4. from core.model_runtime.entities.common_entities import I18nObject
  5. from core.model_runtime.entities.model_entities import ModelType, ProviderModel
  6. from core.model_runtime.entities.provider_entities import ProviderEntity
  7. class ModelStatus(Enum):
  8. """
  9. Enum class for model status.
  10. """
  11. ACTIVE = "active"
  12. NO_CONFIGURE = "no-configure"
  13. QUOTA_EXCEEDED = "quota-exceeded"
  14. NO_PERMISSION = "no-permission"
  15. DISABLED = "disabled"
  16. class SimpleModelProviderEntity(BaseModel):
  17. """
  18. Simple provider.
  19. """
  20. provider: str
  21. label: I18nObject
  22. icon_small: Optional[I18nObject] = None
  23. icon_large: Optional[I18nObject] = None
  24. supported_model_types: list[ModelType]
  25. def __init__(self, provider_entity: ProviderEntity) -> None:
  26. """
  27. Init simple provider.
  28. :param provider_entity: provider entity
  29. """
  30. super().__init__(
  31. provider=provider_entity.provider,
  32. label=provider_entity.label,
  33. icon_small=provider_entity.icon_small,
  34. icon_large=provider_entity.icon_large,
  35. supported_model_types=provider_entity.supported_model_types
  36. )
  37. class ProviderModelWithStatusEntity(ProviderModel):
  38. """
  39. Model class for model response.
  40. """
  41. status: ModelStatus
  42. load_balancing_enabled: bool = False
  43. class ModelWithProviderEntity(ProviderModelWithStatusEntity):
  44. """
  45. Model with provider entity.
  46. """
  47. provider: SimpleModelProviderEntity
  48. class DefaultModelProviderEntity(BaseModel):
  49. """
  50. Default model provider entity.
  51. """
  52. provider: str
  53. label: I18nObject
  54. icon_small: Optional[I18nObject] = None
  55. icon_large: Optional[I18nObject] = None
  56. supported_model_types: list[ModelType]
  57. class DefaultModelEntity(BaseModel):
  58. """
  59. Default model entity.
  60. """
  61. model: str
  62. model_type: ModelType
  63. provider: DefaultModelProviderEntity
  64. # pydantic configs
  65. model_config = ConfigDict(protected_namespaces=())