autogen_agentchat.base._handoff 源代码

import logging
from typing import Any, Dict

from autogen_core.tools import BaseTool, FunctionTool
from pydantic import BaseModel, Field, model_validator

from .. import EVENT_LOGGER_NAME

event_logger = logging.getLogger(EVENT_LOGGER_NAME)


[文档] class Handoff(BaseModel): """交接配置。""" target: str """要交接到的目标代理名称。""" description: str = Field(default="") """交接的描述,例如交接发生的条件和目标代理的能力。 如果未提供,则根据目标代理名称生成。""" name: str = Field(default="") """此交接配置的名称。如果未提供,将从目标代理的名称生成。""" message: str = Field(default="") """发送给目标代理的消息。 默认情况下,这将是交接工具的结果。 如果未提供,将从目标代理的名称生成。"""
[文档] @model_validator(mode="before") @classmethod def set_defaults(cls, values: Dict[str, Any]) -> Dict[str, Any]: if not values.get("description"): values["description"] = f"Handoff to {values['target']}." if not values.get("name"): values["name"] = f"transfer_to_{values['target']}".lower() else: name = values["name"] if not isinstance(name, str): raise ValueError(f"Handoff name must be a string: {values['name']}") # Check if name is a valid identifier. if not name.isidentifier(): raise ValueError(f"Handoff name must be a valid identifier: {values['name']}") if not values.get("message"): values["message"] = ( f"Transferred to {values['target']}, adopting the role of {values['target']} immediately." ) return values
@property def handoff_tool(self) -> BaseTool[BaseModel, BaseModel]: """从此交接配置创建交接工具。""" def _handoff_tool() -> str: return self.message return FunctionTool(_handoff_tool, name=self.name, description=self.description, strict=True) """ The tool that can be used to handoff to the target agent. Typically, the results of the tool's execution are provided to the target agent. """