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