dify/api/core/agent/plugin_entities.py

43 lines
1.3 KiB
Python
Raw Normal View History

2024-12-09 23:02:11 +08:00
from typing import Optional
2024-12-09 23:02:25 +08:00
2024-12-09 23:02:11 +08:00
from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator
from core.tools.entities.common_entities import I18nObject
from core.tools.entities.tool_entities import ToolIdentity, ToolParameter, ToolProviderIdentity
class AgentStrategyProviderIdentity(ToolProviderIdentity):
2024-12-09 23:02:11 +08:00
pass
class AgentStrategyParameter(ToolParameter):
2024-12-09 23:02:11 +08:00
pass
class AgentStrategyProviderEntity(BaseModel):
identity: AgentStrategyProviderIdentity
2024-12-09 23:02:11 +08:00
plugin_id: Optional[str] = Field(None, description="The id of the plugin")
class AgentStrategyIdentity(ToolIdentity):
2024-12-09 23:02:11 +08:00
pass
class AgentStrategyEntity(BaseModel):
identity: AgentStrategyIdentity
parameters: list[AgentStrategyParameter] = Field(default_factory=list)
2024-12-09 23:02:11 +08:00
description: I18nObject = Field(..., description="The description of the agent strategy")
output_schema: Optional[dict] = None
# pydantic configs
model_config = ConfigDict(protected_namespaces=())
@field_validator("parameters", mode="before")
@classmethod
def set_parameters(cls, v, validation_info: ValidationInfo) -> list[AgentStrategyParameter]:
2024-12-09 23:02:11 +08:00
return v or []
class AgentProviderEntityWithPlugin(AgentStrategyProviderEntity):
2024-12-09 23:02:11 +08:00
strategies: list[AgentStrategyEntity] = Field(default_factory=list)