feat(bias): implement data models and storage for tool weighting and bias profiles
This commit is contained in:
@@ -368,18 +368,70 @@ class Preset:
|
||||
)
|
||||
|
||||
@dataclass
|
||||
class ToolPreset:
|
||||
class Tool:
|
||||
name: str
|
||||
categories: Dict[str, Dict[str, Any]]
|
||||
approval: str = 'auto'
|
||||
weight: int = 3
|
||||
parameter_bias: Dict[str, str] = field(default_factory=dict)
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"categories": self.categories,
|
||||
"name": self.name,
|
||||
"approval": self.approval,
|
||||
"weight": self.weight,
|
||||
"parameter_bias": self.parameter_bias,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: Dict[str, Any]) -> "Tool":
|
||||
return cls(
|
||||
name=data["name"],
|
||||
approval=data.get("approval", "auto"),
|
||||
weight=data.get("weight", 3),
|
||||
parameter_bias=data.get("parameter_bias", {}),
|
||||
)
|
||||
|
||||
@dataclass
|
||||
class ToolPreset:
|
||||
name: str
|
||||
categories: Dict[str, List[Union[Tool, Any]]]
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
serialized_categories = {}
|
||||
for cat, tools in self.categories.items():
|
||||
serialized_categories[cat] = [t.to_dict() if isinstance(t, Tool) else t for t in tools]
|
||||
return {
|
||||
"categories": serialized_categories,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, name: str, data: Dict[str, Any]) -> "ToolPreset":
|
||||
raw_categories = data.get("categories", {})
|
||||
parsed_categories = {}
|
||||
for cat, tools in raw_categories.items():
|
||||
parsed_categories[cat] = [Tool.from_dict(t) if isinstance(t, dict) else t for t in tools]
|
||||
return cls(
|
||||
name=name,
|
||||
categories=data.get("categories", {}),
|
||||
categories=parsed_categories,
|
||||
)
|
||||
|
||||
@dataclass
|
||||
class BiasProfile:
|
||||
name: str
|
||||
tool_weights: Dict[str, int] = field(default_factory=dict)
|
||||
category_multipliers: Dict[str, float] = field(default_factory=dict)
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"name": self.name,
|
||||
"tool_weights": self.tool_weights,
|
||||
"category_multipliers": self.category_multipliers,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: Dict[str, Any]) -> "BiasProfile":
|
||||
return cls(
|
||||
name=data["name"],
|
||||
tool_weights=data.get("tool_weights", {}),
|
||||
category_multipliers=data.get("category_multipliers", {}),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user