plugin.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import datetime
  2. from enum import Enum
  3. from typing import Optional
  4. from pydantic import BaseModel, Field
  5. from core.model_runtime.entities.provider_entities import ProviderEntity
  6. from core.plugin.entities.base import BasePluginEntity
  7. from core.plugin.entities.endpoint import EndpointProviderDeclaration
  8. from core.tools.entities.common_entities import I18nObject
  9. from core.tools.entities.tool_entities import ToolProviderEntity
  10. class PluginInstallationSource(str, Enum):
  11. Github = "github"
  12. Marketplace = "marketplace"
  13. Package = "package"
  14. Remote = "remote"
  15. class PluginResourceRequirements(BaseModel):
  16. memory: int
  17. class Permission(BaseModel):
  18. class Tool(BaseModel):
  19. enabled: Optional[bool] = Field(default=False)
  20. class Model(BaseModel):
  21. enabled: Optional[bool] = Field(default=False)
  22. llm: Optional[bool] = Field(default=False)
  23. text_embedding: Optional[bool] = Field(default=False)
  24. rerank: Optional[bool] = Field(default=False)
  25. tts: Optional[bool] = Field(default=False)
  26. speech2text: Optional[bool] = Field(default=False)
  27. moderation: Optional[bool] = Field(default=False)
  28. class Node(BaseModel):
  29. enabled: Optional[bool] = Field(default=False)
  30. class Endpoint(BaseModel):
  31. enabled: Optional[bool] = Field(default=False)
  32. class Storage(BaseModel):
  33. enabled: Optional[bool] = Field(default=False)
  34. size: int = Field(ge=1024, le=1073741824, default=1048576)
  35. tool: Optional[Tool] = Field(default=None)
  36. model: Optional[Model] = Field(default=None)
  37. node: Optional[Node] = Field(default=None)
  38. endpoint: Optional[Endpoint] = Field(default=None)
  39. storage: Storage = Field(default=None)
  40. permission: Optional[Permission]
  41. class PluginDeclaration(BaseModel):
  42. class Plugins(BaseModel):
  43. tools: Optional[list[str]] = Field(default_factory=list)
  44. models: Optional[list[str]] = Field(default_factory=list)
  45. endpoints: Optional[list[str]] = Field(default_factory=list)
  46. version: str = Field(..., pattern=r"^\d{1,4}(\.\d{1,4}){1,3}(-\w{1,16})?$")
  47. author: Optional[str] = Field(..., pattern=r"^[a-zA-Z0-9_-]{1,64}$")
  48. name: str = Field(..., pattern=r"^[a-z0-9_-]{1,128}$")
  49. icon: str
  50. label: I18nObject
  51. created_at: datetime.datetime
  52. resource: PluginResourceRequirements
  53. plugins: Plugins
  54. tool: Optional[ToolProviderEntity] = None
  55. model: Optional[ProviderEntity] = None
  56. endpoint: Optional[EndpointProviderDeclaration] = None
  57. class PluginEntity(BasePluginEntity):
  58. name: str
  59. plugin_id: str
  60. plugin_unique_identifier: str
  61. declaration: PluginDeclaration
  62. installation_id: str
  63. tenant_id: str
  64. endpoints_setups: int
  65. endpoints_active: int
  66. runtime_type: str
  67. version: str
  68. class GithubPackage(BaseModel):
  69. repo: str
  70. version: str
  71. package: str
  72. class GithubVersion(BaseModel):
  73. repo: str
  74. version: str