Skip to main content

Overview

Mark a tool for execution outside the framework.

Usage

import asyncio
from upsonic.tools import tool
from upsonic import Agent, Task

@tool(external_execution=True)
def external_database_query(query: str) -> str:
    """
    Execute a database query externally.

    Args:
        query: SQL query to execute

    Returns:
        Query results
    """
    return f"Query executed: {query} | Results: 10 rows returned"

async def main():
    agent = Agent(model="openai/gpt-4o-mini")
    task = Task(
        description="CALL external_database_query tool with the query 'SELECT * FROM users'",
        tools=[external_database_query]
    )
    
    output = await agent.do_async(task, return_output=True)
    
    # Handle external execution
    for requirement in output.active_requirements:
        if requirement.is_external_tool_execution:
            tool_exec = requirement.tool_execution
            tool_args = tool_exec.tool_args
            # Execute the actual external operation
            result = external_database_query(**tool_args)
            requirement.set_external_execution_result(result)
    
    # Continue execution
    final_result = await agent.continue_run_async(task=task, return_output=True)
    return final_result

# Run the async function
result = asyncio.run(main())

Parameters

  • external_execution (bool): If True, pauses agent execution for external tool handling