import asyncio
from dedalus_labs import AsyncDedalus, DedalusRunner
from dedalus_labs.utils.stream import stream_async
from dotenv import load_dotenv
load_dotenv()
def policy(ctx: dict) -> dict:
step = ctx.get("step", 1)
if step >= 3:
# After step 3, tell the model to wrap up
return {
"message_prepend": [
{"role": "system", "content": "Provide your final answer now."}
],
"max_steps": 4
}
return {}
async def main():
client = AsyncDedalus()
runner = DedalusRunner(client)
result = runner.run(
input="Research the history of the internet and summarize key milestones",
model="openai/gpt-4o-mini",
mcp_servers=["tsion/brave-search-mcp"],
stream=True,
policy=policy
)
await stream_async(result)
if __name__ == "__main__":
asyncio.run(main())