""" Demonstrate output validator. @dev You need to add OPENAI_API_KEY to your environment variables. """ import asyncio import os import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) from dotenv import load_dotenv load_dotenv() from pydantic import BaseModel from browser_use import ActionResult, Agent, Controller from browser_use.llm import ChatOpenAI controller = Controller() class DoneResult(BaseModel): title: str comments: str hours_since_start: int # we overwrite done() in this example to demonstrate the validator @controller.registry.action('Done with task', param_model=DoneResult) async def done(params: DoneResult): result = ActionResult(is_done=True, extracted_content=params.model_dump_json()) print(result) # NOTE: this is clearly wrong - to demonstrate the validator return 'blablabla' async def main(): task = 'Go to hackernews hn and give me the top 1 post' model = ChatOpenAI(model='gpt-4.1') agent = Agent(task=task, llm=model, controller=controller, validate_output=True) # NOTE: this should fail to demonstrate the validator await agent.run(max_steps=5) if __name__ == '__main__': asyncio.run(main())