plugin.py 2.6 KB

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