Files
social-app/backend/src/schemas/agent/system_agent.py
T
qzl 7fd536e976 refactor: finalize agent schemas and profile model
- Remove deprecated calendar UI tests
- Update profile model with phone field support
- Update agent schemas with runtime_models and forwarded_props
- Update system_agent with new agent configuration
2026-03-19 18:43:35 +08:00

52 lines
1.6 KiB
Python

from __future__ import annotations
from enum import Enum
from pydantic import BaseModel, Field, field_validator
from core.agentscope.tools.tool_config import AgentTool, parse_agent_tool
class AgentType(str, Enum):
ROUTER = "router"
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
)
visibility_consumer_bit: int = Field(default=16, ge=16, le=63)
enabled_tools: list[AgentTool] = Field(default_factory=list, max_length=32)
@field_validator("enabled_tools", mode="before")
@classmethod
def _normalize_enabled_tools(cls, value: object) -> list[AgentTool]:
if value is None:
return []
if not isinstance(value, list):
raise ValueError("enabled_tools must be a list")
normalized: list[AgentTool] = []
for item in value:
raw_item = str(item or "").strip()
if not raw_item:
continue
tool = parse_agent_tool(raw_item)
if tool not in normalized:
normalized.append(tool)
return normalized