Skip to content

Is Enabled Real World Example

Source code in OpAgentsOlympus/practice/is_enabled_real_world_example.py
OpAgentsOlympus/practice/is_enabled_real_world_example.py
from agents import (
    Agent,
    Runner,
    function_tool,
    StopAtTools,
)
import asyncio
from local_config import config

@function_tool(is_enabled=lambda ctx, agent: True if ctx.context['role'] == 'admin' else False)
def delete_user(user_id: str) -> str:
    """Deletes a user. This is a final action."""
    return f"User {user_id} has been deleted."

admin_agent = Agent(
    name="Admin Agent",
    instructions="Help manage users. First get data, then delete if asked.",
    tools=[delete_user],
    tool_use_behavior=StopAtTools(stop_at_tool_names=["delete_user"]),
)

async def main():
    print("--- Running as a regular user ---")
    result_user = await Runner.run(
        admin_agent, "Please delete user user123.",
        context={"role": "user"},
        run_config=config
    )
    print(f"Final Output: {result_user.final_output}")

    print("\n--- Running as an admin ---")
    result_admin = await Runner.run(
        admin_agent,
        "Please delete user user123.",
        context={"role": "admin"},
        run_config=config
    )
    print(f"Final Output: {result_admin.final_output}")

asyncio.run(main())