Skip to content

#79. Tool Execution Flow

Source code in OpAgentsOlympus/practice/#79. tool_execution_flow.py
OpAgentsOlympus/practice/#79. tool_execution_flow.py
from agents import Agent, function_tool, WebSearchTool, ToolsToFinalOutputResult, Runner
from open_router_config import config


@function_tool
def analyzer(data: str) -> str:
    return f"Analyzed: {data}"


@function_tool
def processor(data: str) -> str:
    return f"Processed: {data}"


def selective_handler(ctx, tool_results):
    function_results = [
        r for r in tool_results if r.tool_name in ["analyzer", "processor"]
    ]
    if len(function_results) >= 2:
        return ToolsToFinalOutputResult(
            is_final_output=True,
            final_output=f"Combined: {', '.join(r.output for r in function_results)}",
        )
    return ToolsToFinalOutputResult(is_final_output=False)


agent = Agent(
    name="MixedToolAgent",
    tools=[WebSearchTool(), analyzer, processor],
    tool_use_behavior=selective_handler,
)

result = Runner.run_sync(agent, "Use all tools", run_config=config)