Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

Amazon Nova Act APIとSDKの使い方

中村 拓也

中村 拓也

Updated on 4月 3, 2025

Amazon Nova Actは、Amazon人工一般知能(AGI)によってリリースされた研究プレビューで、開発者がウェブブラウザ内でアクションを実行できるエージェントを構築できるようにします。この技術は自然言語の指示をPythonスクリプトとPlaywright自動化と組み合わせて、ウェブサイトをナビゲートし、ボタンをクリックし、フォームを記入し、データを動的に抽出します。

従来の壊れやすいスクリプトやウェブサイト特有のコードに依存するウェブ自動化ツールとは異なり、Nova ActはAIを使用してウェブサイトとより適応的に対話し、ウェブインターフェースの変更に対処するのを助け、継続的なメンテナンスを必要としません。

💡
API開発ワークフローを効率化したいですか?Apidogは、API設計、デバッグ、テスト、および文書化のための包括的なツール群を提供する究極のPostman代替品として際立っています—すべて1つの統合プラットフォーム内で。 
ボタン

その直感的なインターフェース、コラボレーション機能、強力な自動化機能により、Apidogは開発時間を大幅に短縮し、APIの品質を向上させます。

\
ボタン

前提条件

Amazon Nova Actを開始する前に、必要なものは:

  • オペレーティングシステム: MacOSまたはUbuntu(Windowsは現在サポートされていません)
  • Python: バージョン3.10以上
  • Amazonアカウント: APIキーを生成するため
  • 所在地要件: Amazon Nova Actは現在、米国の研究プレビューとしてのみ利用可能です

Amazon Nova Act APIキーの取得

Amazon Nova Actを使用するには:

  1. nova.amazon.com/actに移動し、Amazonアカウントでサインインします。
  2. ナビゲーションペインのLabsセクションで「Act」を選択します。
  3. APIキーを生成します。
  4. アクセスがすぐに得られない場合、待機リストに置かれ、アクセスが許可された際に電子メールで通知されることがあります。

インストール

APIキーを取得したら:

# SDKをインストール
pip install nova-act

# 環境変数としてAPIキーを設定
export NOVA_ACT_API_KEY="your_api_key"

注意: Nova Actを初めて実行するとき、Playwrightモジュールをインストールするために1〜2分かかることがあります。次回以降はより速く開始します。

基本的な使用法

次に、ドキュメントから直接のシンプルな例を始めましょう:

from nova_act import NovaAct

with NovaAct(starting_page="https://www.amazon.com") as nova:
    nova.act("コーヒーメーカーを検索する")
    nova.act("最初の結果を選択する")
    nova.act("「カートに追加」を見るまで上下にスクロールし、「カートに追加」をクリックする")

このスクリプトは以下を実行します:

  1. Chromeを開いてAmazonに移動します。
  2. コーヒーメーカーを検索します。
  3. 最初の結果を選択します。
  4. 「カートに追加」ボタンを見つけてクリックします。

インタラクティブモード

Nova Actを使って実験的にインタラクティブに利用することができます:

# Pythonシェルを起動
$ python
>>> from nova_act import NovaAct
>>> nova = NovaAct(starting_page="https://www.amazon.com")
>>> nova.start()
>>> nova.act("コーヒーメーカーを検索する")

最初のアクションが完了した後、次のステップに進みます:

>>> nova.act("最初の結果を選択する")

ドキュメントによれば、Nova Actは現在iPythonをサポートしていませんので、標準のPythonシェルを使用してください。

効果的なプロンプト戦略

公式ドキュメントは、信頼性のためにタスクを小さなステップに分けることを強調しています:

1. 特定かつ明確であること

しないでください

nova.act("注文履歴から最新のIndia Palaceの注文を見つけて再注文する")

すること

nova.act("ハンバーガーメニューアイコンをクリックし、注文履歴に移動し、最新のIndia Palaceの注文を見つけて再注文する")

2. 複雑なタスクを小さなステップに分ける

しないでください

nova.act("100ドル未満で最高評価のホテルを予約する")

すること

nova.act(f"'{startdate}'と'{enddate}'の間にヒューストンのホテルを検索する")
nova.act("平均顧客レビューでソートする")
nova.act("100ドル以下の最初のホテルを予約する")
nova.act(f"{blob}に従って、自分の名前、住所、生年月日を記入する")

ウェブページからデータを抽出する

Nova Actは、Pydanticモデルを使用して構造化データの抽出をサポートしています:

from pydantic import BaseModel
from nova_act import NovaAct, BOOL_SCHEMA

class Book(BaseModel):
    title: str
    author: str

class BookList(BaseModel):
    books: list[Book]

def get_books(year: int) -> BookList | None:
    """その年のNYTのトップ本を取得し、BookListとして返します。"""
    with NovaAct(starting_page=f"https://en.wikipedia.org/wiki/List_of_The_New_York_Times_number-one_books_of_{year}#Fiction") as nova:
        result = nova.act(
            "フィクションリストの本を返す",
            schema=BookList.model_json_schema()
        )
        
        if not result.matches_schema:
            # Actの応答がスキーマに一致しませんでした
            return None
            
        # JSONをpydanticモデルに解析
        book_list = BookList.model_validate(result.parsed_response)
        return book_list

シンプルなブール応答の場合は、組み込みのBOOL_SCHEMAを使用します:

result = nova.act("ログインしていますか?", schema=BOOL_SCHEMA)
if result.matches_schema:
    if result.parsed_response:
        print("ログインしています")
    else:
        print("ログインしていません")

複数のブラウザセッションによる並列処理

GitHubのドキュメントは、Nova Actが複数のブラウザセッションによる並列処理をサポートしていることを確認しています:

from concurrent.futures import ThreadPoolExecutor, as_completed
from nova_act import NovaAct, ActError

# ここに結果を蓄積する
all_books = []

# 最大同時ブラウザセッションを設定
with ThreadPoolExecutor(max_workers=10) as executor:
    # 複数年の本を並列に取得
    future_to_books = {
        executor.submit(get_books, year): year
        for year in range(2010, 2025)
    }
    
    # 結果を収集する
    for future in as_completed(future_to_books.keys()):
        try:
            year = future_to_books[future]
            book_list = future.result()
            if book_list is not None:
                all_books.extend(book_list.books)
        except ActError as exc:
            print(f"エラーのため{year}をスキップしています: {exc}")

認証とブラウザの状態

認証が必要なウェブサイトの場合、Nova Actは既存のChromeプロファイルを使用するオプションを提供します:

import os
from nova_act import NovaAct

user_data_dir = "path/to/my/chrome_profile"
os.makedirs(user_data_dir, exist_ok=True)

with NovaAct(
    starting_page="https://amazon.com/", 
    user_data_dir=user_data_dir,
    clone_user_data_dir=False
) as nova:
    input("ログインしたらEnterキーを押してください...")

この目的のために組み込みのヘルパースクリプトもあります:

python -m nova_act.samples.setup_chrome_user_data_dir

機密情報の取り扱い

ドキュメントでは機密データの扱いについて特に警告しています:

# 正しくサインイン
nova.act("ユーザー名janedoeを入力し、パスワードフィールドをクリックする")

# 機密データにはPlaywrightを直接使用する
nova.page.keyboard.type(getpass())  # getpass()はパスワードを安全に収集します

# 資格情報が入力されたら続けます
nova.act("サインインする")

セキュリティ警告: ドキュメントでは、実行中に撮影されたスクリーンショットには、表示されている機密情報がキャプチャされることに注意してください。

追加の機能

キャプチャとの連携

result = nova.act("画面にキャプチャはありますか?", schema=BOOL_SCHEMA)
if result.matches_schema and result.parsed_response:
    input("キャプチャを解決したらリターンを押してください")

ファイルのダウンロード

with nova.page.expect_download() as download_info:
    nova.act("ダウンロードボタンをクリックする")
    
# 永久保存
download_info.value.save_as("my_downloaded_file")

セッションの録画

nova = NovaAct(
    starting_page="https://example.com",
    logs_directory="/path/to/logs",
    record_video=True
)

実世界の例: アパート検索

dev.toの要約は、駅の近くのアパートを探す実世界の例を示しています。この例のコア構造は以下の通りです:

from concurrent.futures import ThreadPoolExecutor, as_completed
import pandas as pd
from pydantic import BaseModel
from nova_act import NovaAct

class Apartment(BaseModel):
    address: str
    price: str
    beds: str
    baths: str

class ApartmentList(BaseModel):
    apartments: list[Apartment]

class CaltrainBiking(BaseModel):
    biking_time_hours: int
    biking_time_minutes: int
    biking_distance_miles: float

# まずアパートを見つける
with NovaAct(starting_page="https://zumper.com/", headless=headless) as client:
    client.act(
        "クッキーバナーを閉じます。"
        f"{caltrain_city}、CAの近くでアパートを検索し、"
        f"{bedrooms}寝室と{baths}バスルームのフィルタをかけます。"
    )
    
    # スキーマでアパートのリストを抽出
    result = client.act(
        "現在表示されているアパートのリストを返す",
        schema=ApartmentList.model_json_schema()
    )
    
# その後、並列でバイキング距離を確認
with ThreadPoolExecutor() as executor:
    # 駅までのバイキング距離を確認するために並列タスクを投稿
    future_to_apartment = {
        executor.submit(add_biking_distance, apartment, caltrain_city, headless): apartment 
        for apartment in all_apartments
    }
    
    # 結果を処理
    for future in as_completed(future_to_apartment.keys()):
        # 結果を収集して処理する
        pass

# 結果をソートして表示
apartments_df = pd.DataFrame(apartments_with_biking)

この例は、Nova Actが以下のことができることを示しています:

  • ウェブサイトから構造化データを抽出する
  • 複数のブラウザセッションを並列に処理する
  • 異なるソースからの情報を組み合わせる

既知の制限

ドキュメントによれば、Nova Actには以下の制限があります:

  • ブラウザ専用: 非ブラウザアプリケーションとの相互作用はできません
  • 限られた信頼性: 高度なプロンプトには苦労する場合があります
  • UI制約: マウスオーバーの背後に隠れた要素との相互作用はできません
  • ブラウザモーダル: 許可リクエストのようなブラウザウィンドウモーダルとの相互作用はできません
  • 地理的制限: 現在米国のみ利用可能です
  • 研究ステータス:これは実験的プレビューであり、製品サービスではありません

NovaActコンストラクタオプション

ドキュメントには、NovaActを初期化するためのパラメータが示されています:

NovaAct(
    starting_page="https://example.com",  # 必須: 開始するURL
    headless=False,                       # ブラウザを可視的に実行するかどうか
    quiet=False,                          # ログを抑制するかどうか
    user_data_dir=None,                   # Chromeプロファイルへのパス
    nova_act_api_key=None,                # APIキー(env varを代わりに使用しても良い)
    logs_directory=None,                  # ログを保存する場所
    record_video=False,                   # セッションを記録するかどうか
    # ドキュメントに記載されたその他のオプション
)

結論

Amazon Nova Actは、AIと従来の自動化技術を組み合わせることによって、ブラウザ自動化への革新的なアプローチを表します。いくつかの制限がある研究プレビューであるにも関わらず、ウェブ自動化をより信頼性高く適応可能にするための有望な方向性を提供します。

Nova Actの最大の利点は、自然言語の指示を使用して複雑なブラウザインタラクションを分解し、Pythonコードと組み合わせて柔軟で強力な自動化ワークフローを実現する能力です。

これは米国でのみ利用可能な研究プレビューであるため、今後の変更や改善が予想されます。最新の情報については、常に公式ドキュメントを参照してください。GitHubおよびnova.amazon.com/actにて。