import cascadeflow
from cascadeflow import CascadeAgent, ModelConfig
from cascadeflow.tools import ToolConfig, ToolExecutor
agent = CascadeAgent(models=[
ModelConfig(name="gpt-4o-mini", provider="openai", cost=0.000375),
ModelConfig(name="gpt-4o", provider="openai", cost=0.00625),
])
tools = [
ToolConfig(name="search", description="Web search", parameters={"q": {"type": "string"}},
handler=lambda q: f"Results for {q}"),
ToolConfig(name="calc", description="Calculator", parameters={"expr": {"type": "string"}},
handler=lambda expr: str(eval(expr))),
]
cascadeflow.init(mode="enforce")
with cascadeflow.run(
budget=1.00,
max_tool_calls=8,
compliance="gdpr",
kpi_weights={"quality": 0.6, "cost": 0.3, "latency": 0.1},
) as session:
result = await agent.run(
"Research EU market data and calculate growth rates",
tools=tools,
tool_executor=ToolExecutor(tools=tools),
max_steps=15,
)
summary = session.summary()
print(f"Cost: ${summary['cost_total']:.4f} / $1.00")
print(f"Steps: {summary['steps']}")
print(f"Tool calls: {summary['tool_calls']} / 8")
print(f"Budget remaining: ${summary['budget_remaining']:.4f}")