Files
social-app/backend/src/schemas/agent/system_agent.py
T

53 lines
1.6 KiB
Python
Raw Normal View History

from __future__ import annotations
from enum import Enum
from pydantic import BaseModel, Field, field_validator
from core.agentscope.tools.tool_config import ToolGroup
class AgentType(str, Enum):
WORKER = "worker"
MEMORY = "memory"
class ContextBuildStrategy(str, Enum):
DAY = "day"
NUMBER = "number"
class ContextMessagesConfig(BaseModel):
mode: ContextBuildStrategy = ContextBuildStrategy.NUMBER
count: int = Field(default=20, ge=1, le=200)
class SystemAgentLLMConfig(BaseModel):
temperature: float | None = Field(default=None, ge=0.0, le=2.0)
max_tokens: int | None = Field(default=None, ge=1)
timeout_seconds: float | None = Field(default=30.0, gt=0.0, le=300.0)
context_messages: ContextMessagesConfig = Field(
default_factory=ContextMessagesConfig
)
enabled_tool_groups: list[ToolGroup] = Field(default_factory=list, max_length=8)
@field_validator("enabled_tool_groups", mode="before")
@classmethod
def _normalize_enabled_tool_groups(cls, value: object) -> list[ToolGroup]:
if value is None:
return []
if not isinstance(value, list):
raise ValueError("enabled_tool_groups must be a list")
normalized: list[ToolGroup] = []
for item in value:
if isinstance(item, ToolGroup):
group = item
else:
raw_group = str(item or "").strip().lower()
if not raw_group:
continue
group = ToolGroup(raw_group)
if group not in normalized:
normalized.append(group)
return normalized