model_entities.py 2.1 KB

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