Source code for p2p.agents.config

"""Configuration for backend-neutral survey agents."""

from __future__ import annotations

from collections.abc import Mapping
from dataclasses import dataclass, field
import math
from types import MappingProxyType
from typing import Any


[docs] @dataclass(frozen=True, slots=True) class AgentConfig: """Settings used by an injected agent/conductor factory.""" agent_type: str model_name: str formality: str = "" agent_kwargs: Mapping[str, Any] = field(default_factory=dict) delay: float = 0.0 def __post_init__(self) -> None: for field_name in ("agent_type", "model_name"): value = getattr(self, field_name) if not isinstance(value, str) or not value.strip(): raise ValueError( f"{field_name} must be a nonempty string" ) if not isinstance(self.formality, str): raise TypeError("formality must be a string") if not isinstance(self.agent_kwargs, Mapping): raise TypeError("agent_kwargs must be a mapping") if ( isinstance(self.delay, bool) or not isinstance(self.delay, (int, float)) ): raise TypeError("delay must be a number") if not math.isfinite(self.delay) or self.delay < 0: raise ValueError("delay must be finite and nonnegative") object.__setattr__( self, "agent_kwargs", MappingProxyType(dict(self.agent_kwargs)), )
__all__ = ["AgentConfig"]