Qwen 3.7 Plusを使ったPC操作エージェントの作り方

Qwen 3.7 Plus を用いて、動作するコンピュータ操作/GUIエージェントを構築する:知覚-判断-行動ループ、厳格なJSONアクションプロンプト、実行可能なPlaywrightの例、さらにコスト、信頼性、安全性のガードレール。

Ashley Innocent

Ashley Innocent

3 6月 2026

Qwen 3.7 Plusを使ったPC操作エージェントの作り方

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

Qwen 3.7 Plusは、スクリーンショットを見てクリックする正確なピクセル座標を返すベンチマークであるScreenSpot Proで79.0点を獲得しました。この単一のスキルが、チャットモデルをコンピューター使用エージェント(画面を見て、何をすべきかを決定し、実行するソフトウェア)に変えます。このガイドでは、Pythonでそのエージェントを最初から最後まで構築します。

エージェントループ、モデルから信頼性の高いアクションを引き出すプロンプト、Playwrightを使用した実行可能なブラウザの例、そして実世界で利用する前に必要なコストと安全性のガードレールについて説明します。モデルの背景を先に知りたい場合は、Qwen 3.7 Plusの概要をご覧ください。生の要求形式については、Qwen 3.7 Plus APIガイドでマルチモーダルペイロードを扱っています。進行中にApidogでエージェントの呼び出しをテストします。

要点

コンピューター使用エージェントはループを実行します。画面をスクリーンショットし、Qwen 3.7 Plusに目標とともに送信し、click (x, y)のような構造化されたアクションを受け取り、Playwrightなどのドライバーでそのアクションを実行し、目標が達成されるまで繰り返します。PlusはそのGUIの基礎と低いマルチモーダル価格のため、非常に適しています。難しいのはモデルではなく、ループの制限、座標のスケーリング、トークンコストの制御、誤ったクリックが損傷を与えないようにアクションをサンドボックス化することです。

コンピューター使用エージェントが実際にすること

誇張を省くと、以下の4つのステップの繰り返しです。

  1. 認識: 現在の画面またはページのスクリーンショットをキャプチャします。
  2. 決定: スクリーンショットと目標をモデルに送信し、次のアクションを取得します。
  3. 実行: そのアクション(クリック、入力、スクロール)を自動化ドライバーを介して実行します。
  4. 確認: 新しいスクリーンショットを撮り、目標が達成されたかどうかを判断します。

モデルは「決定」ステップです。その他のすべては、あなたが制御する配管です。

0:00
/1:26

Qwen 3.7 Plusが適している理由

理由は3つあります。そのGUIの基礎は最先端であり、曖昧な説明ではなく使用可能な座標を返します。GUIとCLIのハイブリッドなワークフローを処理できるため、同じエージェントがボタンをクリックしたり、シェルコマンドを実行したりできます。そして、入力トークン100万あたり0.40ドルと、エージェントループが必要とする多くの視覚呼び出しを実行するのに十分なほど安価です。テキストのみの主力モデルとの比較については、Qwen 3.7 Plus vs Maxの比較をご覧ください。

決定ステップ:クリーンなアクションを取得する

秘訣は、モデルを小さなアクションボキャブラリに制約し、JSON出力を強制することです。曖昧な散文は実行が困難ですが、厳密なスキーマはそうではありません。

import os, json, base64
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DASHSCOPE_API_KEY"],
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)

SYSTEM = """あなたはGUIエージェントです。スクリーンショットと目標を見ます。
一つのJSONアクションのみで返答してください:
{"action": "click", "x": <int>, "y": <int>}
{"action": "type", "text": "<string>"}
{"action": "scroll", "dy": <int>}
{"action": "done", "reason": "<string>"}
座標は与えられたスクリーンショットのピクセルです。"""

def next_action(goal, png_bytes):
    b64 = base64.b64encode(png_bytes).decode()
    resp = client.chat.completions.create(
        model="qwen3.7-plus",
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": [
                {"type": "text", "text": f"Goal: {goal}"},
                {"type": "image_url",
                 "image_url": {"url": f"data:image/png;base64,{b64}"}},
            ]},
        ],
    )
    return json.loads(resp.choices[0].message.content)

識別子は変更される可能性があるため、デプロイする前にModel Studioのドキュメントで正確なモデルIDを確認してください。

Playwrightによる完全なループ

Playwrightは実際のブラウザを駆動するため、エージェントは実際のページで動作します。一つの詳細が多くの苦痛を軽減してくれます。スクリーンショットの解像度をビューポートと一致させることで、モデルが返す座標が1対1で対応し、スケーリング計算をスキップできます。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page(viewport={"width": 1280, "height": 800})
    page.goto("https://example.com")

    goal = "価格ページを開き、最も安いプランを見つける"

    for step in range(15):                 # ステップ数の上限
        shot = page.screenshot()           # 1280x800 PNG、ビューポートと一致
        action = next_action(goal, shot)
        print(step, action)

        if action["action"] == "done":
            break
        if action["action"] == "click":
            page.mouse.click(action["x"], action["y"])
        elif action["action"] == "type":
            page.keyboard.type(action["text"])
        elif action["action"] == "scroll":
            page.mouse.wheel(0, action["dy"])

        page.wait_for_timeout(800)         # UIが安定するのを待つ

    browser.close()

これが実際の(動作する)エージェントです。それは目標に向かって、一度に一つの具体的なアクションでサイトをナビゲートします。Playwrightをデスクトップドライバーに置き換え、代わりにOSウィンドウをスクリーンショットすれば、デスクトップアプリでも同じパターンが機能します。

コストと信頼性

スクリーンショットがコストのかかる部分です。それぞれがトークンに変換され、幅1280の画像は数千トークンに達するため、15ステップのループではAPIを通じてかなりの費用が発生します。これを抑えるには:

エージェントトークンコストの削減に関するガイドで詳しく説明されており、エージェントワークフローの配線に関するメモでは、これらのループが実際にどこで壊れるかをカバーしています。

エージェントが停止した場合

常に3つの障害が発生しますが、それぞれ安価な解決策があります。

安全性

コンピューター使用エージェントは実際に物をクリックします。重要なものに触れる前に:

Apidogでエージェントの呼び出しをテストする

ほとんどのエージェントの失敗は、「モデルは有効なアクションを返したか?」という一つの疑問に遡ります。Playwrightを配線する前に、それを明確にしてください。Apidogを使用して、サンプルスクリーンショットをQwen 3.7 Plusに送信し、それが返す生のJSONを検査し、アクションスキーマが毎回クリーンに戻るまでシステムプロンプトを調整します。環境ごとにModel Studioキーを保存し、エンドポイントをモックすることで、テスト実行ごとにトークンを消費することなくループを構築できます。フルループが呼び出しを連鎖している場合、ApidogのAIエージェントデバッガーがシーケンスを表示し、どのステップで失敗したかを見つけることができます。

デザインからUIコードを生成する方法については、Qwen 3.7 Plusによるスクリーンショットからコードへの変換に関する付随ガイドをご覧ください。

エージェントの背後にあるモデル呼び出しをテストおよびデバッグするには、Apidogをダウンロードしてください。

よくある質問

コンピューター使用エージェントとは何ですか? スクリーンショットを通じて画面を認識し、モデルでアクションを決定し、自動化ドライバーを通じてそれを実行し、目標が達成されるまでループするソフトウェアです。

Qwen 3.7 Plusは私のデスクトップを制御できますか? モデルはアクションを返すだけです。ドライバーを使用してそれらを実行します。ブラウザの場合はPlaywrightと、ネイティブアプリの場合はデスクトップ自動化ライブラリと組み合わせてください。

各ステップのコストはどれくらいですか? ほとんどはスクリーンショットにかかります。1つの画面画像は、100万トークンあたり0.40ドルで数千入力トークンに達する可能性があるため、ダウンスケールとループの制限が主なコスト削減策となります。

本番環境で十分信頼できますか? 各ステップの後に検証を伴う、限定的で明確に定義されたタスクであれば可能です。重要なシステムのオープンエンドな制御には、人間を介在させ、すべてをサンドボックス化してください。

座標をスケーリングする必要がありますか? スクリーンショットの解像度がビューポートと一致している場合は必要ありません。異なる場合は、その比率で返された座標をスケーリングしてください。

結論

コンピューター使用エージェントは、一つの強力なモデルを中心とした短いループであり、Qwen 3.7 Plusはそれを実行するための基礎と価格を提供します。ループを構築し、制限を設け、サンドボックス化し、各ステップを検証してください。そして、エージェントがクリックを開始する前に「決定」ステップが確実であるように、Apidogでモデル呼び出しをテストしてください。

ボタン

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる