コンピュータ使用

コンピュータ使用ツールを使用すると、ブラウザ、モバイル、パソコンの制御エージェントを構築して、タスクを操作して自動化できます。モデルはスクリーンショットを使用して、コンピュータ画面を「見て」、マウスのクリックやキーボード入力などの特定の UI アクションを生成して「操作」できます。関数呼び出しと同様に、クライアントサイドの実行環境を実装して、コンピュータ使用アクションを受信して実行する必要があります。

Gemini 3.5 Flash は、パソコンでの使用におすすめのモデルです。次の新機能が導入されています。

  • マルチ環境のサポート: ブラウザ、モバイル、パソコン環境用のエージェントを構築します。
  • インテントを使用した合理化されたアクション: アクションには、各ステップの背後にあるモデルの推論を説明する intent フィールドが含まれています。
  • 構成可能な安全性ポリシー: 組み込みのポリシー カテゴリとオーバーライドを使用して、安全性動作を微調整します。
  • プロンプト インジェクションの検出: スクリーンショット スキャンを有効にして、隠れた敵対的指示を検出します。

コンピュータ使用モデルを使用すると、次のことができるエージェントを構築できます。

  • ウェブサイトでのデータ入力やフォームへの記入など、繰り返し発生する作業を自動化します。
  • ウェブ アプリケーションとユーザーフローの自動テストを実行する
  • さまざまなウェブサイトで調査を行う(e コマース サイトから商品の情報、価格、レビューを収集して購入の判断に役立てるなど)

ブラウザ環境で computer_use ツールを有効にして、クライアントを初期化し、モデルにプロンプトを送信する最小限の例を次に示します。

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.6-flash",
    input="Search for 'Gemini API' on Google.",
    tools=[{"type": "computer_use", "environment": "browser"}]
)

print(interaction)

JavaScript

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI();

const interaction = await ai.interactions.create({
  model: 'gemini-3.6-flash',
  input: "Search for 'Gemini API' on Google.",
  tools: [{ type: "computer_use", environment: "browser" }]
});

console.log(interaction);


コンピュータ使用の仕組み

コンピュータ使用モデルを使用してエージェントを構築するには、アプリケーションと API の間に継続的なループを設定する必要があります。各ステップでコードが実行する処理は次のとおりです。

  1. モデルにリクエストを送信する
    • アプリケーションは、コンピュータ使用ツール、構成設定(ターゲット環境など)、ユーザーのプロンプト、現在の画面のスクリーンショットを含む API リクエストを送信します。
  2. モデル レスポンスを受信する
    • モデルは画面とプロンプトを分析し、UI アクション(クリック、スクロール、キーストロークなど)を表す function_call を含むレスポンスを返します。
    • Gemini 3.5 Flash の場合、レスポンスには、モデルがそのアクションを選択した理由を説明する推論 intent も含まれます。
    • レスポンスには、アクションを通常/許可、require_confirmation(ユーザーの承認が必要)、ブロックに分類する内部安全システムからの safety_decision が含まれる場合もあります。
  3. 受信したアクションを実行する
    • アクションが許可されている場合(またはユーザーが確認した場合)、クライアントサイドのコードは function_call を解析し、正規化された座標をビューポートに合わせてスケーリングし、自動化ツール(Playwright など)を使用してターゲット環境でアクションを実行します。アクションがブロックされた場合、クライアントは実行を停止するか、中断を処理する必要があります。
  4. 新しい環境の状態をキャプチャする
    • アクションの実行が完了すると、アプリケーションは新しいスクリーンショットをキャプチャし、function_result でモデルに送り返して次のステップをリクエストします。

このプロセスはステップ 2 から繰り返され、タスクが完了または終了するまで、モデルから次のアクションが継続的に求められます。

コンピュータ使用の概要

コンピュータの使用を実装する方法

コンピュータの使用ツールを使用して構築する前に、次の設定を行う必要があります。

  • 安全な実行環境: サンドボックス化された VM またはコンテナでエージェントを実行して、ホストシステムから隔離し、潜在的な影響を制限します。リファレンス実装には、出発点として使用できる Docker ベースのサンドボックスが含まれています。
  • クライアントサイドのアクション ハンドラ: 座標の実行、テキストの入力、スクリーンショットの撮影を行うクライアントサイドのロジックを実装します。

次の例では、実行環境としてウェブブラウザを使用し、クライアントサイド ハンドラとして Playwright を使用しています。

0: Playwright を設定する

まず、必要なパッケージをインストールします。

pip install google-genai playwright
playwright install chromium

次に、実行に使用する Playwright ブラウザ インスタンスを初期化します。

from playwright.sync_api import sync_playwright

# 1. Configure screen dimensions for the target environment
SCREEN_WIDTH = 1440
SCREEN_HEIGHT = 900

# 2. Start the Playwright browser
# In production, utilize a sandboxed environment.
playwright = sync_playwright().start()
# Set headless=False to see the actions performed on your screen
browser = playwright.chromium.launch(headless=False)

# 3. Create a context and page with the specified dimensions
context = browser.new_context(
    viewport={"width": SCREEN_WIDTH, "height": SCREEN_HEIGHT}
)
page = context.new_page()

# 4. Navigate to an initial page to start the task
page.goto("https://www.google.com")

# The 'page', 'SCREEN_WIDTH', and 'SCREEN_HEIGHT' variables
# will be used in the steps below.

1. モデルにリクエストを送信する

クライアント ライブラリを初期化し、コンピュータ使用ツールを構成します。リクエストを発行する際に表示サイズを指定する必要はありません。モデルは、画面の高さと幅に合わせてスケーリングされたピクセル座標を予測します。

Python

google-genai Python SDK(バージョン 2.7.0 以降)を使用して、ブラウザ環境をターゲットとするリクエストを構成します。

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model='gemini-3.6-flash',
    input="Find a flight from SF to Hawaii on Jun 30th, coming back on Jul 6th",
    tools=[
        {
            "type": "computer_use",
            "environment": "browser",
            "enable_prompt_injection_detection": True
        }
    ]
)

print(interaction)

JavaScript

@google/genai Node.js SDK を使用して、ブラウザ環境をターゲットとするリクエストを構成します。

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI();

const interaction = await ai.interactions.create({
  model: 'gemini-3.6-flash',
  input: "Find a flight from SF to Hawaii on Jun 30th, coming back on Jul 6th",
  tools: [
    {
      type: "computer_use",
      environment: "browser",
      enable_prompt_injection_detection: true
    }
  ]
});

console.log(interaction);

REST

curl を使用してリクエストを送信します。

curl -X POST \
  "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.6-flash",
    "input": "Find me a flight from SF to Hawaii on Jun 30th, coming back on Jul 6th. Start by navigating directly to flights.google.com",
    "tools": [
      {
        "type": "computer_use",
        "environment": "browser",
        "enable_prompt_injection_detection": true
      }
    ]
  }'

Gemini 2.5(以前のバージョン)

Python

from google import genai

client = genai.Client()

# Specify predefined functions to exclude (optional)
excluded_functions = ["drag_and_drop"]

interaction =