Overview
Mark a tool for execution outside the framework.Usage
Copy
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

