AgentBay AIBrowser とは
AgentBay AIBrowser は、ヘッドレスおよびヘッデッドブラウザを大規模に実行するための、スケーラブルなマネージドプラットフォームです。セッションの作成と管理、ブラウザインスタンスの初期化、および基盤となるハードウェアリソースのオンデマンドでの割り当てを行うためのインフラストラクチャを提供します。フォームへの入力、ユーザー操作のシミュレーション、最新の動的 Web サイトでの複雑なマルチステップタスクのオーケストレーションなど、Web オートメーションシナリオ向けに設計されています。
AgentBay AIBrowser API は、ブラウザを制御するためのシンプルなインターフェイスと、セッションを作成および管理するための実用的なツールを提供します。高度な AI 機能を使用して、自然言語で記述されたタスクを実行できます。
主な特徴
オートメーションフレームワークの互換性: CDP を介して Playwright および Puppeteer と高い互換性があります。
安全でスケーラブルなインフラストラクチャ: 管理されたセッション、分離された環境、および弾力的なリソース割り当て。
可観測性: セッションの再生、セッションインスペクター、およびライブデバッグのためのリアルタイムモード。
高度な機能: コンテキスト管理、IP プロキシ、およびステルス/指紋オプション。
AI 駆動の PageUseAgent: 自然言語を使用して複雑な Web フロータスクを実行します。
豊富な API 操作: セッション管理、ブラウザのライフサイクル制御、およびプロキシ操作のためのシンプルなインターフェイスを提供します。
クイックスタート (Python)
この最小限の実行可能な例は、AgentBay Python ソフトウェア開発キット (SDK) を使用してブラウザを初期化し、CDP を介して Playwright でそれを操作する方法を示しています。サンプルコードは、次のステップを実行します。
API キーを使用して
AgentBayクライアントを構築して認証し、信頼できるチャンネルを確立します。ブラウザが有効なイメージでセッションを作成することにより、新しい実行環境を構成します。これにより、必要なランタイムが利用可能になります。
BrowserOption()を使用してセッションのブラウザを初期化します。これにより、オートメーションの準備ができたリモートブラウザインスタンスが起動します。get_endpoint_url()で CDP エンドポイント URL を取得し、Playwright のconnect_over_cdpを使用して接続します。これにより、ローカルコードがリモートブラウザにブリッジされます。アクティブな接続を確立した後、コードは新しいページを開き、Web サイトに移動します。ローカルブラウザと同じように DOM を検査または操作できます。
すべての作業が完了したら、セッションを削除して、割り当てられたリソースを解放します。
前提条件:
API キーを設定します:
export AGENTBAY_API_KEY=your_api_key依存関係をインストールします:
pip install wuying-agentbay-sdk playwrightPlaywright ブラウザをインストールします:
python -m playwright install chromium
import os
import asyncio
from agentbay import AgentBay
from agentbay.session_params import CreateSessionParams
from agentbay.browser.browser import BrowserOption
from playwright.async_api import async_playwright
async def main():
api_key = os.getenv("AGENTBAY_API_KEY")
if not api_key:
raise RuntimeError("AGENTBAY_API_KEY environment variable not set")
agent_bay = AgentBay(api_key=api_key)
# セッションを作成します。ブラウザがプリインストールされたイメージを使用します。
params = CreateSessionParams(image_id="browser_latest")
session_result = agent_bay.create(params)
if not session_result.success:
raise RuntimeError(f"Failed to create session: {session_result.error_message}")
session = session_result.session
# ブラウザを初期化します。BrowserOption は、ステルス、プロキシ、指紋などをサポートします。
ok = await session.browser.initialize_async(BrowserOption())
if not ok:
raise RuntimeError("Browser initialization failed")
endpoint_url = session.browser.get_endpoint_url()
# CDP 経由で Playwright を接続して自動化します。
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(endpoint_url)
page = await browser.new_page()
await page.goto("https://www.aliyun.com")
print("Title:", await page.title())
await browser.close()
session.delete()
if __name__ == "__main__":
asyncio.run(main())主要なブラウザ API:
Browser.initialize(option: BrowserOption) -> bool/initialize_async(...): セッションのブラウザインスタンスを起動します。Browser.get_endpoint_url() -> str: CDP WebSocket エンドポイントを返します。Playwright のconnect_over_cdpと一緒に使用します。Browser.is_initialized() -> bool: ブラウザの準備ができているか確認します。
基本構成
Web ページによっては、異なる構成や表示環境が必要になる場合があります。ブラウザの ID とウィンドウサイズをカスタマイズして、特定のデバイスタイプやオーディエンスに合わせてユーザーエクスペリエンスを調整できます。次の例では、カスタムユーザーエージェントと正確なウィンドウサイズを設定します。次のステップを実行します。
認証し、ブラウザをホストするセッションを作成します。
macOS と Chrome の一般的なユーザーエージェントをシミュレートして、ブラウザ環境を識別します。
initialize_asyncを使用してブラウザを起動し、CDP エンドポイントをリクエストし、Playwright を介して接続を確立します。Web サイトにアクセスし、
User-Agentとウィンドウサイズが正しく設定されていることを確認します。
import os
import asyncio
from agentbay import AgentBay
from agentbay.session_params import CreateSessionParams
from agentbay.browser.browser import BrowserOption, BrowserViewport
from playwright.async_api import async_playwright
CUSTOM_UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
async def main():
agent_bay = AgentBay(api_key=os.environ["AGENTBAY_API_KEY"]) # 認証します。
params = CreateSessionParams(image_id="browser_latest") # ブラウザ対応のセッションをプロビジョニングします。
result = agent_bay.create(params)
if not result.success:
raise RuntimeError(result.error_message)
session = result.session
# ブラウザの外観と動作を定義します。
option = BrowserOption(
user_agent=CUSTOM_UA, # カスタム ID を設定します。
viewport=BrowserViewport(width=1366, height=768), # 一般的なラップトップのウィンドウサイズを設定します。
)
ok = await session.browser.initialize_async(option)
if not ok:
raise RuntimeError("Browser initialization failed")
endpoint_url = session.browser.get_endpoint_url() # CDP エンドポイントを取得します。
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(endpoint_url) # 接続してコントロールします。
page = await browser.new_page()
await page.goto("https://www.whatismybrowser.com/detect/what-is-my-user-agent")
# 新しいユーザーエージェントとウィンドウサイズを確認します。
ua = await page.evaluate("navigator.userAgent")
w = await page.evaluate("window.innerWidth")
h = await page.evaluate("window.innerHeight")
print("Effective UA:", ua)
print("Viewport:", w, "x", h)
await browser.close()
session.delete() # セッションを削除してリソースを解放します。
if __name__ == "__main__":
asyncio.run(main())PageUseAgent の使用 [ベータ]
PageUseAgent を使用すると、ユーザーは自然言語を使用してブラウザと対話し、意図を実行できます。PageUseAgent の呼び出しは、大規模言語モデルの機能に依存し、トークンを消費します。これにより、従量課金ルールに基づいて料金が発生します。このサービスは、ベータ期間中は無料トライアルで利用できます。
次の例は、Google で本を検索する方法を示しています。次のステップを実行します。
ブラウザセッションを作成して初期化し、エージェントに命令を提供します。
クエリを入力します。エージェントは意図をページの操作に変換します。
ブラウザは自動的に検索ボックスにクエリを入力し、結果ページに移動します。
ブラウザを閉じてセッションを解放します。
import os
import asyncio
from agentbay import AgentBay
from agentbay.session_params import CreateSessionParams
from agentbay.browser.browser import BrowserOption
from agentbay.browser.browser_agent import ActOptions
from playwright.async_api import async_playwright
BOOK_QUERY = "The Pragmatic Programmer"
async def main():
agent_bay = AgentBay(api_key=os.environ["AGENTBAY_API_KEY"]) # 認証します。
params = CreateSessionParams(image_id="browser_latest") # ブラウザイメージでセッションをプロビジョニングします。
result = agent_bay.create(params)
if not result.success:
raise RuntimeError(result.error_message)
session = result.session
# リモートブラウザを初期化します。
if not await session.browser.initialize_async(BrowserOption()):
raise RuntimeError("Browser initialization failed")
endpoint_url = session.browser.get_endpoint_url()
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(endpoint_url)
page = await browser.new_page()
# ページに移動します。
await page.goto("https://www.google.com")
# エージェントに本の名前を検索ボックスに入力して送信するように依頼します。
act_result = await session.browser.agent.act_async(ActOptions(
action=f"Type '{BOOK_QUERY}' into the search box and submit",
), page)
print("act_result:", act_result.success, act_result.message)
# エージェントに最初の検索結果を開かせます。
open_first = await session.browser.agent.act_async(ActOptions(
action="Click the first result in the search results",
), page)
print("open_first:", open_first.success, open_first.message)
# 結果を観察するために少し一時停止します。
await page.wait_for_timeout(5000)
await browser.close()
session.delete()
if __name__ == "__main__":
asyncio.run(main())PageUseAgent.act について:
variablesは動的な値を補間して、再利用可能なプロンプトを有効にします。基盤となる
context_idとpage_idを取得することで、アクティブな Playwright ページで動作します。簡単なロギングと回復フローのために
successとmessageを含む構造化されたActResultを返します。
制限事項
PageUseAgent には長期的なプランナーは含まれていません。独自のマルチステッププランをオーケストレーションすることはありません。呼び出し元、またはより高レベルのエージェントに依存して、プロジェクトをステップに分割し、各ステップで act または他の PageUseAgent メソッドを呼び出します。
PageUseAgent の強みは、クリック、入力、スクロールなどの正確でアトミックな Web 操作を迅速かつ一貫して実行することにあります。
PageUseAgent は、各ステップのスループットと精度を優先します。複雑なタスク計画と分岐ロジックは、外部のコントローラーに任せます。