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.
"""