> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# BrowserUse-integratie met Novita Agent Sandbox

export const SetupApiKeyGuide = () => {
  if (typeof document === "undefined") {
    return null;
  } else {
    return <>
                If you don't have a Novita account, you need to <Link href="https://novita.ai/user/register" target="_blank">sign up</Link> first. For details, please refer to <Link href="/docs/nl/guides/quickstart" target="_blank">Quick Start</Link>. After signing up, you can create an API key through the <Link href="https://novita.ai/settings/key-management" target="_blank">Key Management</Link> page and save it for subsequent steps.
            </>;
  }
};

[BrowserUse](https://github.com/browser-use/browser-use) is een krachtige AI-browseragent. Gecombineerd met de veilige, geïsoleerde omgeving die wordt geboden door Novita Agent Sandbox, kun je browser-AI-agents met hoge gelijktijdigheid en meerdere taken bouwen.

Dit document biedt gedetailleerde instructies voor het uitvoeren van BrowserUse-projecten op basis van de Novita Agent Sandbox-service.

Het document gebruikt de `browser-chromium` sandbox-template die door Novita is uitgebracht. Als je op basis hiervan je eigen template wilt maken of meer volledige voorbeeldcode wilt bekijken, raadpleeg dan [hier](https://github.com/novitalabs/Novita-CollabHub/tree/main/examples/browser-use).

### 1. Novita API Key verkrijgen

<SetupApiKeyGuide />

### 2. Afhankelijkheden installeren

Installeer de vereiste Python-pakketten:

```bash Python icon="terminal" theme={"system"}
pip install browser-use
```

### 3. Voorbeeldcode

Voordat je begint, moet je de benodigde omgevingsvariabelen configureren:

```bash Bash icon="terminal" theme={"system"}
export NOVITA_API_KEY="<Your Novita AI API Key>"
export LLM_API_KEY="<Your Novita AI API Key>"
export LLM_BASE_URL=https://api.novita.ai/openai
export LLM_MODEL="<Your LLM Model ID>"
```

Sla de volgende code op:

```python agent.py icon="python" theme={"system"}
import asyncio
import base64
import os
import time
import dotenv
dotenv.load_dotenv(override=True)
from browser_use import Agent, BrowserSession
from browser_use.llm import ChatOpenAI
from novita_sandbox.core import Sandbox

async def screenshot(agent: Agent):
  # Screenshot function
  print("Taking screenshot...")
  page = await agent.browser_session.get_current_page()
  screenshot_bytes = await page.screenshot(format='png')
  # screenshot method returns the binary data of the image, we should save it as a PNG file
  screenshots_dir = os.path.join(".", "screenshots")
  os.makedirs(screenshots_dir, exist_ok=True)
  screenshot_path = os.path.join(screenshots_dir, f"{time.time()}.png")
  if isinstance(screenshot_bytes, str):
    screenshot_data = base64.b64decode(screenshot_bytes)
  else:
    screenshot_data = screenshot_bytes
  with open(screenshot_path, "wb") as f:
    f.write(screenshot_data)
  print(f"Screenshot saved to {screenshot_path}")

async def main():
    # Create Novita sandbox instance
    sandbox = Sandbox.create(
        timeout=600,  # Timeout in seconds
        template="browser-chromium",  # This template contains chromium browser and exposes port 9223 for remote connection
    )
    try:
        # Get Chrome debug port address from sandbox
        host = sandbox.get_host(9223) # Get sandbox port 9223 address
        cdp_url = f"https://{host}"
        print(f"Chrome Debug Protocol URL: {cdp_url}")
        # Create BrowserUse session
        browser_session = BrowserSession(cdp_url=cdp_url)
        await browser_session.start()
        print("BrowserUse session created successfully")
        # Create AI Agent
        agent = Agent(
            task="Go to hackernews and find the top 3 stories",
            llm=ChatOpenAI(
                api_key=os.getenv("LLM_API_KEY"),
                base_url=os.getenv("LLM_BASE_URL"),
                model=os.getenv("LLM_MODEL"),
                temperature=1
            ),
            browser_session=browser_session,
        )
        # Run Agent task
        print("Starting Agent task execution...")
        await agent.run(
            on_step_end=screenshot, # Take screenshot after each step
        )
        # Close browser session
        await browser_session.kill()
        print("Task execution completed")
    finally:
        # Clean up sandbox resources
        sandbox.kill()
        print("Sandbox resources cleaned up")
        exit

if __name__ == "__main__":
    asyncio.run(main())
```

### 4. De agent uitvoeren

Na het installeren van de afhankelijkheden en het instellen van de omgevingsvariabelen kun je de voorbeeldcode uitvoeren. Als alles goed gaat, zie je de uitvoer in de terminal zoals hieronder. Browser-use voert taken uit in de externe browser binnen je sandbox.

<img src="https://mintcdn.com/novitaai/boSLMxY3k06MQY9D/nl/guides/images/sandbox-browser-use-output.png?fit=max&auto=format&n=boSLMxY3k06MQY9D&q=85&s=26caba910dad11846ae4cd541300ec55" alt="Uitvoer" width="1200" data-path="nl/guides/images/sandbox-browser-use-output.png" />

Er worden screenshots gegenereerd zoals hieronder:

<img src="https://mintcdn.com/novitaai/boSLMxY3k06MQY9D/nl/guides/images/sandbox-browser-use-screenshots/1.png?fit=max&auto=format&n=boSLMxY3k06MQY9D&q=85&s=906ca69c247643cdb450872f1c81e332" alt="screenshot1" width="1200" data-path="nl/guides/images/sandbox-browser-use-screenshots/1.png" />

Raadpleeg [hier](https://github.com/novitalabs/Novita-CollabHub/tree/main/examples/browser-use) om een completere demo uit te voeren.
