Skip to content

subagent_tool

autogen.beta.tools.subagents.subagent_tool.subagent_tool #

subagent_tool(agent, *, description, name=None, stream=None, middleware=())
Source code in autogen/beta/tools/subagents/subagent_tool.py
def subagent_tool(
    agent: "Agent",
    *,
    description: str,
    name: str | None = None,
    stream: StreamFactory | None = None,
    middleware: Iterable[ToolMiddleware] = (),
) -> FunctionTool:
    tool_name = name or f"task_{agent.name}"

    @tool(
        name=tool_name,
        description=description,
        middleware=middleware,
    )
    async def delegate(
        ctx: Context,
        objective: str,
        context: str = "",
    ) -> str:
        task_stream = stream(agent, ctx) if stream else None

        result = await run_task(
            agent,
            objective,
            context=context,
            parent_context=ctx,
            stream=task_stream,
        )

        return result.result or ""

    return delegate