翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コンピュータ使用エージェントを構築および評価するためのベストプラクティス
コンピュータ使用のエージェントはループで動作し、画面を見たり、動作したり、もう一度見たりします。以下のプラクティスは、タスクを確実に、より少ないステップで、低コストで完了するエージェントを構築するのに役立ちます。ワークフローとモデルファミリーに適用されます。結果はワークフロー、モデル、プロンプト、環境によって異なるため、各変更を独自のタスクで測定します。
アクションループを設計する
エージェントの労力のほとんどは、ウィンドウ間を移動するのではなく、画面の読み取りと入力に費やされます。ナビゲーションを調整する前に、読み取りエラーとステップ数を減らします。
-
ピクセルではなくエージェントテキストを渡します。スクリーンショットから名前、E メールアドレス、アカウント番号などの正確な値を読み取ることは、一般的なエラーの原因です。データにテキストコピーがある場合は、ツールを通じてデータを提供します。テーブルまたは列の値の場合、テキストレイヤーは列を混在させることができるため、エージェントにイメージを表示させることもできます。
-
スクリーンショットの前に指示を置きます。エージェントが何かを見つけてクリックする必要がある場合は、リクエストのイメージの前に指示を配置して、エージェントが探すものを認識できるようにします。
-
既知のレイアウトから開始します。エージェントが作業する前に、キーボードショートカットを使用して各アプリケーションを最大化します。一貫したレイアウトにより、繰り返しフローをより予測しやすくし、スクロールを減らします。
-
キーボードを優先します。キーボードショートカットを使用して、スクロール、ウィンドウの最大化、メニューのオープンを行います。特に、小さいコントロールやhard-to-hitコントロールの場合はなおさらです。ショートカットは、画面上でコントロールを見つけることに依存しません。
-
各アクションを確認します。ビジー状態のアプリケーションは、キーストロークを無視できます。各アクションの後で少し待ってから、最近のスクリーンショットをいくつか表示し、効果のないアクションをエージェントに繰り返しさせます。
-
Tab は、安全な場所にのみ使用してください。Tab キーは、プレーンテキストフィールドでうまく機能します。自動入力、ドロップダウン、日付ピッカーを含むフィールドなど、フィールドがフォーカスを失ったときにアプリケーションが反応するフィールドをクリックします。
-
切り替えます。再起動しないでください。実行中のアプリケーション間を移動するには、タスクバーまたはアプリケーションスイッチャーを使用します。アプリケーションを再起動すると、ステップが追加されます。
-
現在の画面でコントロールを見つけます。前の画面からコピーされた座標は、ウィンドウが移動すると古くなります。固定座標は、最大化された固定レイアウトでのみ使用します。
-
何も変更しないアクションを検出します。行の 2 つのアクションで画面が変更されない場合は、エージェントの変更アプローチを使用します。繰り返しスクロールを制限して、実行がステップ予算を 1 つのアクションに費やさないようにします。
-
バッチアクションには注意が必要です。バッチは、最後のアクション後にのみエージェントを表示するため、エージェントが読み取る必要がある 1 つの画面でバッチを終了します。バッチ処理により、ワークフロー全体に依存する前に時間を節約できるかどうかを測定します。一部のモデルはイメージを含むエラー結果を拒否するため、バッチエラーはテキストとしてのみ返します。
モデルファミリーに適応する
モデルファミリーはデスクトップの動作が異なります。エージェントループを 1 回構築し、スキルと各ファミリーの設定を調整します。通常、あるファミリーに合わせて調整されたスキルは、別のファミリーと連携する前に修正が必要です。
-
変更のたびに新しいスクリーンショットを送信します。一部のモデルは、問題を示すことなく古いスクリーンショットに基づいて動作し続けます。画面を変更するすべてのアクションの後に、新しいスクリーンショットをアタッチします。
-
座標を明示的に処理します。一部のモデルはピクセル座標を報告し、他のモデルは正規化されたグリッド上の座標を報告し、ピクセルに変換する必要があります。プロンプトで画面サイズと有効な座標範囲を記述し、各クリックが画面内にあることを確認します。
-
モデルのスクリーンショットのサイズ。スクリーンショットの解像度をモデルのイメージ制限に一致させます。スクリーンショットをダウンスケールする場合は、クリックする前にモデルの座標をスケールアップします。
-
入力する前にフィールドをクリアします。一部のモデルでは、 と入力すると、値が置き換えられるのではなく、フィールドに が追加されます。フィールドに焦点を当て、すべてを選択し、削除して 1 回入力し、値を読み返します。
-
並列ツール呼び出しを制御します。モデルがプロンプトに関係なく複数のアクションを 1 つのメッセージで送信する場合は、クライアントで並列ツール呼び出しをオフにします。バッチ処理されたアクションを順番に実行し、最初の失敗時に停止します。
-
デフォルトでは、推論の労力を低く抑えます。多くの場合、単純なタスクは手間をかけずに成功し、労力を増やすと精度を向上させることなくコストがかかります。分岐タスクまたは複数ステップタスクの労力を増やします。
-
プロンプトの長さをモデルに一致させます。より強力なモデルは、短い目標から機能します。モデルが必要とする場合にのみルールを追加し、モデルの改善に応じてプロンプトを短縮します。
-
ターンの間に推論を維持します。フレームワークまたは互換性 API を使用して推論モデルを呼び出す場合は、モデルの推論が 1 ターンから次のターンに伝達されていることを確認します。ドロップするループは停止する可能性があります。
-
完了したタスクあたりのコストを比較します。モデルはステップあたりのトークン数が異なるため、トークンあたりの料金だけではコストは予測されません。使用する予定のツールサーフェスとモデルを比較します。
スキルとプロンプトの記述
このスキルは、ワークフローのためにエージェントに与える指示であり、精度とコストに大きな影響を与えます。設計が不十分な汎用プロンプトは、プロンプトがないよりも動作が悪くなる可能性があります。
-
いくつかの作業ルールを含めます。例: 読んだ内容を記憶し、先に進む前に検証し、2 回失敗した後にアプローチを変更し、アプリケーションが応答するのを待ちます。
-
手順ではなく事実を伝えます。現在のモデルではstep-by-stepガイダンスが少なくて済みます。スキルは短くし、ファイルパス、フィールド形式、アプリケーションクォークなど、エージェントが検出できない事実を含めます。
-
高値フィールドを定義します。識別子やアカウント番号などのフィールドの正確な形式を記述し、入力する前にエージェントに各値をその形式と照合させます。
-
検証が必要で対象を絞った状態にします。エージェントは完全な信頼度で間違った値を入力する可能性があるため、検証をエージェントの判断に委ねないでください。入力直後に各値を 1 回チェックし、保存する前にいくつかの高値フィールドを読み戻します。すべてのフィールドを完全に再チェックすると、精度を向上させることなくステップが追加されます。
-
エラーを修正します。値が間違っている場合は、フォーム全体をクリアして再入力するのではなく、エージェントにそのフィールドを修正してもらいます。
-
サブエージェントにきれいに引き渡します。サブエージェントに完全な指示を与え、作業を確認するのではなく、最後にレポートを要求します。
-
独自の実行からスキルを向上させます。各実行のスクリーンショット、アクション、推論を確認し、一度に 1 つのルールを変更し、すべての実行が成功した場合にのみ変更を保持します。ワークフローをマイルストーンに分割して、失敗した実行が停止する場所を確認できます。
コンテキストとコストを管理する
コストは、主にモデルが保持するコンテキストと、実行のステップ数によって異なります。各呼び出しは履歴を再送信するため、追加のステップごとに最後のステップよりもコストがかかります。コストを削減する最も効果的な方法は、最小限のステップでタスクを完了するモデルとスキルを選択することです。
-
タスク間のコンテキストをリセットします。クリーンコンテキストと既知の画面状態から各独立したタスクを開始します。
-
最新のスクリーンショットのみを保持します。最後の 3 つなど、最近のスクリーンショットをいくつか保存し、古いイメージを短いテキストメモに置き換えます。スクリーンショットを 1 つだけ保持すると、エージェントがスクロールバックして失われた内容を確認するため、コストが増加する可能性があります。
-
削除した内容をエージェントに伝えます。古いスクリーンショットは意図的に削除されることを説明し、値が画面に表示されている間、エージェントは各値を返信に記録します。
プロンプトキャッシュはコストを大幅に削減できますが、ペイロードを慎重に構築する場合に限ります。
-
会話の最後にのみ を追加します。キャッシュは最初からペイロードと一致するため、前のターンを編集するとキャッシュが無効になります。
-
毎回ではなく古いスクリーンショットをバッチで削除すると、キャッシュされたプレフィックスが削除間で同じままになります。
-
各ターンで会話を再構築しないでください。すべてのターンを変更するペイロードは、キャッシュを使用する場合よりもコストが高くなる可能性があります。
-
キャッシュがエンゲージすることを確認します。モデルにはキャッシュ用の最小プレフィックスサイズがあり、小さいプレフィックスはキャッシュされず、エラーが返されません。
結果の測定
-
十分なトライアルを実行します。結果は同一の実行によって異なります。1 つのバージョンが優れていると判断する前に、多くのトライアルを実行し、スプレッドを報告し、ペアテストなどの統計テストを使用します。
-
すべてのトークンタイプからコストを計算します。新しい入力、出力、キャッシュ書き込み、キャッシュ読み取りを含めます。プロバイダーはキャッシュトークンを異なる方法でレポートするため、それぞれがどのようにカウントするかを確認してください。コストとともにトークンをレポートします。
-
スコアを使用してコストを報告します。変更によってコストは増加しますが、同じ成功率を維持できます。成功率、コスト、ステップをまとめて報告し、実行の合格と不合格のコストを分けます。
-
ステップ制限は慎重に設定します。ワークフローに必要な制限を超えて制限を設定し、それに達した実行数を報告します。ステップが不足した実行には、間違った結果を生成した実行とは異なる修正が必要です。また、時間とコストの制限を設定し、キャンセルをサポートします。
-
一度に 1 つのモノを変更します。他のすべてを固定しておき、各変更の効果を確認できます。
-
原因別に障害をソートします。画面の読み取りの失敗と動作の失敗を分離します。スキルにより、エージェントの動作は向上しますが、モデルの読み取りは向上しません。改善されたルールをクレジットする前に、エージェントがルールに従っていることを確認します。
-
エージェントのレポートではなく、結果をグレード付けします。すべてのフィールドを照合し、負のコントロールを含める必要がある自動評価者を使用して、保存されたレコードと最終画面を確認します。エージェントは、タスクが完了していないときにタスクを完了として報告できます。
-
テスト設定を確認します。評価者または環境のエラーは、エージェントの障害のように見える可能性があります。失敗した実行をトレースできるように、すべてのプロンプト、スクリーンショット、アクションをログに記録します。再現できない結果を公開しないでください。
監視と安全
-
人物をループに保持します。支払い、削除、送信など、結果的またはhard-to-reverseアクションの前に確認が必要です。機密データをフォームに入力すると送信として扱われます。バッチの各アクションの前に必要な確認を確認し、画面が変更された可能性があるため、ユーザーが承認した後にターゲットを再度見つけます。
-
エージェントの質問を人物に渡します。一部のモデルは停止し、画面が本番稼働用システムを提案する場合など、自分で確認を求めます。ループが質問を表示できることを確認します。
-
エージェントが到達できる範囲を制限します。最小限のアクセス許可で、隔離された環境でエージェントを実行します。サインイン認証情報は、可能な限りエージェントの手の届かない場所に保管し、インターネットアクセスをドメインの許可リストに制限します。
-
画面上のコンテンツを信頼できないものとして扱います。ページまたはドキュメントのテキストは、アクセス許可を付与したり、タスクを変更したりすることはできません。画面の指示でエージェントをリダイレクトしないでください。
-
エージェントを開いているウェブから離します。エージェントが CAPTCHAsや信頼できないコンテンツに遭遇する可能性のあるウェブを検索するのではなく、必要な情報をスキルに配置します。
関連リソース
モデルプロバイダーは、モデルのコンピュータ使用ガイダンスを発行します。現在のドキュメントでは、サポートされている画面サイズ、座標系、ツールなど、モデル固有の詳細について説明しています。
-
Anthropic ドキュメントのコンピュータ使用ツール
-
OpenAI ドキュメントのコンピュータの使用
-
Gemini API ドキュメントのコンピュータの使用