> ## 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.

# Intégration de BrowserUse avec 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/fr/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) est un puissant agent de navigation IA. Combiné à l’environnement isolé et sécurisé fourni par Novita Agent Sandbox, il vous permet de créer des agents IA de navigation à forte concurrence et multitâches.

Ce document fournit des instructions détaillées pour exécuter des projets BrowserUse basés sur le service Novita Agent Sandbox.

Le document utilise le modèle de sandbox `browser-chromium` publié par Novita. Si vous souhaitez créer votre propre modèle à partir de celui-ci ou consulter un exemple de code plus complet, veuillez vous référer à [ici](https://github.com/novitalabs/Novita-CollabHub/tree/main/examples/browser-use).

### 1. Obtenir une clé API Novita

<SetupApiKeyGuide />

### 2. Installer les dépendances

Installez les packages Python requis :

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

### 3. Exemple de code

Avant de commencer, vous devez configurer les variables d’environnement nécessaires :

```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>"
```

Enregistrez le code suivant :

```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. Exécuter l’agent

Après avoir installé les dépendances et configuré les variables d’environnement, vous pouvez exécuter l’exemple de code. Si tout se passe bien, vous verrez la sortie dans le terminal comme ci-dessous. Browser-use exécute des tâches dans le navigateur distant à l’intérieur de votre sandbox.

<img src="https://mintcdn.com/novitaai/bw8esg_Y_JmKJX-g/fr/guides/images/sandbox-browser-use-output.png?fit=max&auto=format&n=bw8esg_Y_JmKJX-g&q=85&s=1be00d282fe93e62bfed29d367effde6" alt="Sortie" width="1200" data-path="fr/guides/images/sandbox-browser-use-output.png" />

Cela générera des captures d’écran comme ci-dessous :

<img src="https://mintcdn.com/novitaai/bw8esg_Y_JmKJX-g/fr/guides/images/sandbox-browser-use-screenshots/1.png?fit=max&auto=format&n=bw8esg_Y_JmKJX-g&q=85&s=9572c36c38b8ae7a144dcb2337332cd7" alt="capture d’écran1" width="1200" data-path="fr/guides/images/sandbox-browser-use-screenshots/1.png" />

Pour exécuter une démo plus complète, veuillez vous référer à [ici](https://github.com/novitalabs/Novita-CollabHub/tree/main/examples/browser-use).
