autogen_core._default_subscription 源代码

from typing import Callable, Type, TypeVar, overload

from ._agent_type import AgentType
from ._base_agent import BaseAgent, subscription_factory
from ._subscription_context import SubscriptionInstantiationContext
from ._type_subscription import TypeSubscription
from .exceptions import CantHandleException


[文档] class DefaultSubscription(TypeSubscription): """默认订阅设计用于那些仅需要全局作用域代理的应用程序,是一个合理的默认选择。 该主题默认使用"default"主题类型,并尝试根据实例化上下文检测要使用的代理类型。 Args: topic_type (str, optional): 要订阅的主题类型。默认为"default"。 agent_type (str, optional): 用于订阅的代理类型。默认为None,此时将尝试根据实例化上下文检测代理类型。 """ def __init__(self, topic_type: str = "default", agent_type: str | AgentType | None = None): if agent_type is None: try: agent_type = SubscriptionInstantiationContext.agent_type().type except RuntimeError as e: raise CantHandleException( "If agent_type is not specified DefaultSubscription must be created within the subscription callback in AgentRuntime.register" ) from e super().__init__(topic_type, agent_type)
BaseAgentType = TypeVar("BaseAgentType", bound="BaseAgent") @overload def default_subscription() -> Callable[[Type[BaseAgentType]], Type[BaseAgentType]]: ... @overload def default_subscription(cls: Type[BaseAgentType]) -> Type[BaseAgentType]: ...
[文档] def default_subscription( cls: Type[BaseAgentType] | None = None, ) -> Callable[[Type[BaseAgentType]], Type[BaseAgentType]] | Type[BaseAgentType]: if cls is None: return subscription_factory(lambda: [DefaultSubscription()]) else: return subscription_factory(lambda: [DefaultSubscription()])(cls)
[文档] def type_subscription(topic_type: str) -> Callable[[Type[BaseAgentType]], Type[BaseAgentType]]: return subscription_factory(lambda: [DefaultSubscription(topic_type=topic_type)])