2026-03-13 01:01:54 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
2026-03-13 14:10:13 +08:00
|
|
|
from enum import Enum
|
|
|
|
|
|
2026-03-19 00:52:12 +08:00
|
|
|
from pydantic import BaseModel, Field, field_validator
|
|
|
|
|
|
|
|
|
|
from core.agentscope.tools.tool_config import ToolGroup
|
2026-03-13 01:01:54 +08:00
|
|
|
|
|
|
|
|
|
2026-03-13 14:10:13 +08:00
|
|
|
class AgentType(str, Enum):
|
|
|
|
|
WORKER = "worker"
|
2026-03-19 00:52:12 +08:00
|
|
|
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)
|
2026-03-13 14:10:13 +08:00
|
|
|
|
|
|
|
|
|
2026-03-13 01:01:54 +08:00
|
|
|
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)
|
2026-03-19 00:52:12 +08:00
|
|
|
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
|