browser-chromium サンドボックステンプレートを使用します。これをベースに独自のテンプレートを作成したい場合、またはより完全なサンプルコードを確認したい場合は、こちらを参照してください。
1. Novita API Key を取得する
2. 依存関係をインストールする
必要な Python パッケージをインストールします。Python
3. サンプルコード
開始する前に、必要な環境変数を設定する必要があります。Bash
agent.py
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
browser-chromium サンドボックステンプレートを使用します。これをベースに独自のテンプレートを作成したい場合、またはより完全なサンプルコードを確認したい場合は、こちらを参照してください。
pip install browser-use
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>"
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())