plugin_entities.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from typing import Optional
  2. from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator
  3. from core.tools.entities.common_entities import I18nObject
  4. from core.tools.entities.tool_entities import ToolIdentity, ToolParameter, ToolProviderIdentity
  5. class AgentStrategyProviderIdentity(ToolProviderIdentity):
  6. pass
  7. class AgentStrategyParameter(ToolParameter):
  8. pass
  9. class AgentStrategyProviderEntity(BaseModel):
  10. identity: AgentStrategyProviderIdentity
  11. plugin_id: Optional[str] = Field(None, description="The id of the plugin")
  12. class AgentStrategyIdentity(ToolIdentity):
  13. pass
  14. class AgentStrategyEntity(BaseModel):
  15. identity: AgentStrategyIdentity
  16. parameters: list[AgentStrategyParameter] = Field(default_factory=list)
  17. description: I18nObject = Field(..., description="The description of the agent strategy")
  18. output_schema: Optional[dict] = None
  19. # pydantic configs
  20. model_config = ConfigDict(protected_namespaces=())
  21. @field_validator("parameters", mode="before")
  22. @classmethod
  23. def set_parameters(cls, v, validation_info: ValidationInfo) -> list[AgentStrategyParameter]:
  24. return v or []
  25. class AgentProviderEntityWithPlugin(AgentStrategyProviderEntity):
  26. strategies: list[AgentStrategyEntity] = Field(default_factory=list)