Typesafe-computer-use: 1ステップあたり1/50セントでMacを目標達成に導く
Typesafe-computer-use drives a Mac toward a goal for 1/50th of a cent per step (github.com)
要約
Typesafe-computer-useは、ユーザーが自然言語で指示した目標に対し、1ステップあたり約1/50セントという低コストでMacを操作するシステムです。スクリーンショットを大規模モデルに送信せず、画面を決定論的に読み取り、小規模な分類器で次のアクションを選択し、テキスト入力が必要な場合にのみライティングモデルを呼び出します。これにより、従来のフロンティアモデルを使用したコンピューター操作と比較して、大幅なコスト削減と高速化を実現します。
全文翻訳
[画像: CI] [画像: MIT license] [画像: Python 3.12+] [画像: macOS, Windows experimental] [画像: TypeSafe] [画像: Ruff]
typesafe-computer-use(略称jev)は、あなたが平易な英語で入力した目標に向かってMacを操作します。そのコストは1ステップあたり約50分の1セントです。画面を決定論的に読み取り、小さな分類器に次のアクションを問い合わせ、テキストフィールドに自由なテキストが必要な場合や、分類器が停止して画面の読み取りが必要な場合にのみ、ライティングモデルを呼び出します。
一つのアイデアが貫かれています。それは、分類器が選択し、コードが事実を決定し、ライターは自由なテキストのみを書く、というものです。モデルが(日付、フィールドがフォーカスされているか、URLがクリーンかなど)自分で判断する必要があることはすべて、コードで計算され、状態として渡されます。VISION.mdには、それが何のためのものかが12行で説明されています。
clicker "go to techcrunch and take me to the checkout page for the cheapest tickets to their next upcoming event" --act
ベータ版。 これは集中的な開発下にあります。粗い部分があり、0.x リリース間で設定と動作が変更される可能性があります。実際のマウスとキーボードを操作するため、まずはドライランから始めてください。
なぜ分類器なのか
最先端のモデルによるコンピューター操作は、能力は高いものの高価です。各ステップでスクリーンショットを送信し、計画のために数秒待つ必要があります。ほとんどのステップは計画を必要としません。それらは、短く簡単なリストから、迅速かつ安価に、ゲート可能な信頼度スコアとともに、一つの選択を行う必要があります。
TypeSafeはまさにそれを販売しています。これは、最大255のオプションの中からChoiceに、完全な確率分布とキャリブレーションされた信頼度で、数百ミリ秒で、無料の出力トークンで回答する決定モデルです。このプロジェクトは、それを中心に構築されたコンピューター操作ループです。
同じスクリーンショットと目標に対して、各決定にかかるコストを比較します。
| typesafe (jev) | Claude Opus 5, bare screenshot | multiplier | |
|---|---|---|---|
| input tokens | 4,882 | 4,785 | same |
| cost per decision | $0.0002 | $0.032 | 155x cheaper |
| cost per decision, realistic loop with history | $0.0002 | $0.035 to $0.08 | 170x to 390x cheaper |
| cost per 12-step task | $0.003 | $0.40 to $0.90 | 130x to 300x cheaper |
| model latency | 0.13 to 0.38 s | 5.2 s | 14x to 40x faster |
| end-to-end step, with capture and OCR | about 1.5 s | about 5.5 s | 3.7x faster |
正直な注意点として、大規模モデルはピクセルからイベントの日付を読み取り、それを単独で比較しました。分類器は、how a step worksで説明されている日付解析を必要としました。最先端モデルが無料で実行するすべての推論は、ここで決定論的な状態として再構築する必要があります。
インストール
macOS 14以降、Python 3.12以降、uvが必要です。Windows 10および11は実験的です。Windowsを参照してください。
git clone https://github.com/awlevin/typesafe-computer-use
cd typesafe-computer-use
uv sync
cp .env.example .env # fill in the keys
| variable | required | purpose |
|---|---|---|
TYPESAFE_API_KEY | yes | every decision |
ANTHROPIC_API_KEY | no | type_text, writer-proposed URLs, and the final answer |
CLICKER_EMAIL | no | enables the type_email action |
CLICKER_BROWSER | no | defaults to Google Chrome |
.envファイルはリポジトリのルートにあり、すべてのエントリーポイント(clicker、clicker-inspect)によって読み取られます。ライターを別のモデルまたはエンドポイント(LM Studio、Ollama、任意のOpenAI互換サーバー)で実行するには、writer endpointsを参照してください。
ターミナルに、システム設定 > プライバシーとセキュリティで画面収録とアクセシビリティの許可を与えてください。最初の許可がないと、キャプチャは壁紙になります。後者の許可がないと、合成クリックはサイレントにドロップされ、--actは開始を拒否します。
初回実行
uv run clicker "open the Playground" # dry run: one step, prints what it would do
uv run clicker "open the Playground" --act # drives the machine, up to 100 steps
uv run clicker "log in" --act --steps 20 --delay 3 # longer and slower
uv run clicker "log in" --act --handoffs 0 # the classifier alone: its first stop ends the run
uv run clicker-inspect "any goal" # 3-2-1, capture, open the annotated screen + payload
ターミナルを先にクリアしてください。それは画面上にあるため、そのテキストはOCR入力となります。
ライブ実行を停止するには、ターミナルでCtrl-Cを押すか、マウスを画面の左上隅に素早く移動させてください。ループは、done、低信頼度、スタール、またはステップ制限に達した場合にも自己停止します。その後、ライターが画面を読み取り、回答を表示します。すべての実行はruns/<timestamp>/に書き込まれるため、スタールはオフラインでリプレイできます。
ステップの仕組み
- 画面は決定論的に読み取られます。フロントエンドウィンドウのクロップに対するVision OCRと、OCRでは見えないアイコンを認識するアクセシビリティツリーからのラベル付きコントロールが含まれます。
- コードが事実を追加します。ブロック上の日付とそのオフセット、繰り返しラベルの行、フォーカスされているフィールド、アプリとURL、およびこの画面で既に試行されたアクションなどです。
- 一つのTypeSafeリクエストが3つの
Choiceに回答します。アクションの種類、アイテム、サイトです。 - アクションは決定論的に実行され、ループは待機し、次のキャプチャがその実行の唯一の証拠となります。
- 分類器が停止すると、ライターが画面を読み取って回答するか、フォーカス(1回の移動)またはあなたへの質問とともに実行を返します。ライターはアクションを選択しません。
OCRコスト、ツリーウォーク、アクションスペース、停止ルールを含む完全なウォークスルーは、how a step worksにあります。
ベンチマーク
jevは、実際のデスクトップタスクのベンチマークであるOSWorldでエージェントとして動作します。OSWorld自身のGPTエージェントと同じタスクで並行して実行されます。scripts/osworld setupはOSWorldを取得し、jevを並べてインストールします。scripts/osworld run-jev chrome/<task id> --ocr rapidocrは1つのタスクを実行します。KVMを備えたLinuxホストが必要です。そのためのOSWorldと、Google Cloudでのワンコマンドマシンを参照してください。
詳細情報
- How a step works: 知覚、3部構成の決定、アクションスペース、スタール、ライターへのハンドオフ
- Run folder: 各実行が書き込む内容、タイミングライン、オフラインリプレイ
- Browser backend: Chrome DevToolsを介したDOM知覚、OCRなし、画面許可なし
- Writer endpoints: すべてのライター変数と、AnthropicまたはOpenAI API経由の他のモデル
- Windows: 実験的なアダプターとmacOSとの違い
- OSWorld: セットアップ、2つの実行コマンド、結果、Google Cloudマシン
- Layout: すべてのモジュールとその所有物
- Known limits
- Sandbox: エージェントをあなたの画面ではない画面で実行するための、コンテナ内のLinuxコンピューター
貢献
実行フォルダが添付されたバグレポートが、最も役立つものです。プルリクエストの前に、uv run ruff check . && uv run ruff format --check .とuv run pytest -qがパスする必要があります。基本ルールと、ループが実行できないタスクのシナリオの書き方は、CONTRIBUTING.mdに記載されています。