autogen_core._agent_id 源代码

import re

from typing_extensions import Self

from ._agent_type import AgentType


def is_valid_agent_type(value: str) -> bool:
    return bool(re.match(r"^[\w\-\.]+\Z", value))


[文档] class AgentId: """ Agent ID 唯一标识一个代理运行时中的代理实例 - 包括分布式运行时。它是代理实例接收消息的'地址'。 更多信息请参见::ref:`agentid_and_lifecycle` """ def __init__(self, type: str | AgentType, key: str) -> None: if isinstance(type, AgentType): type = type.type if not is_valid_agent_type(type): raise ValueError(rf"Invalid agent type: {type}. Allowed values MUST match the regex: `^[\w\-\.]+\Z`") self._type = type self._key = key def __hash__(self) -> int: return hash((self._type, self._key)) def __str__(self) -> str: return f"{self._type}/{self._key}" def __repr__(self) -> str: return f'AgentId(type="{self._type}", key="{self._key}")' def __eq__(self, value: object) -> bool: if not isinstance(value, AgentId): return False return self._type == value.type and self._key == value.key
[文档] @classmethod def from_str(cls, agent_id: str) -> Self: """将格式为 ``type/key`` 的字符串转换为 AgentId""" items = agent_id.split("/", maxsplit=1) if len(items) != 2: raise ValueError(f"Invalid agent id: {agent_id}") type, key = items[0], items[1] return cls(type, key)
@property def type(self) -> str: """ 一个将代理与特定工厂函数关联的标识符。 字符串只能由字母数字字符(a-z)和(0-9)或下划线(_)组成。 """ return self._type @property def key(self) -> str: """ 代理实例标识符。 字符串只能由字母数字字符(a-z)和(0-9)或下划线(_)组成。 """ return self._key