Understanding ChatGPT Work

Simon Willison

ChatGPT Workを理解する

原文は Simon Willison により に公開されました。 このブログを購読する

OpenAIは7月9日にChatGPT Workを発表して以来、猛烈な勢いで改良を重ねてきた。非常にわかりにくく、同時に極めて強力なプロダクトだ。ここでは、これまでに私が把握できたことをまとめてみる。

ChatGPT Workは実は2つのプロダクト

より興味深い方のChatGPT Workは、クラウド上で動くバージョンだ。chatgpt.comやChatGPTのモバイルアプリからアクセスできる。これをWork Cloudと呼ぶことにしよう。

ChatGPTデスクトップアプリ――以前はCodexと呼ばれていたアプリ――をインストールすると、コンピューター上のファイルに直接アクセスし、プログラムを実行できるChatGPT Workが使えるようになる。こちらをWork Localと呼ぶことにしよう。こちらは、通常のCodexをソフトウェア開発者以外にもとっつきやすくリスキンしたような印象だ。

(追記: Work CloudはChatGPTデスクトップアプリからも、Where should this chat run?というドロップダウンから利用できる。)

この記事の残りでは、Work Cloudについてのみ語ることにする。

Workは有料サブスクリプション限定

現在、ChatGPT Work(どちらの形態も)は月額20ドル以上のサブスクリプションでのみ利用できる。無料ユーザーや月額8ドルのGoユーザーは利用できない。

WorkにはChatにない機能がある

Workへアクセスするためのインターフェースはタブセレクターで、Chatの代替として提示される。

ChatタブとWorkタブが並んだChatGPTアプリのヘッダー

当然の疑問はいつChatを使い、いつWorkを使うべきか?ということだ。

この問いに対するOpenAIの公式な回答はこうだ。

答えや説明、ブレインストーミング、短い下書きが欲しいときはChatを使ってください。ブリーフや資料、分析、定期的なアップデート、ワークフロー、確認して活用できるファイルなど、明確な成果物としてタスクを完了させたいときはChatGPT Workを使ってください。

正直、この説明はほとんど役に立たない。なぜなら、私はこうしたタスクのすべてを何年も前から通常のChatGPT Chatでこなしてきたからだ!

より適切な問いは、WorkにはあってChatにはない機能は何か?ということだろう。

広範な検証の結果、おおむね次のことがわかった。

モデル選択

Workでは、GPT-5.6のSol、Luna、Terraから選べ、それぞれLight、Medium、High、Extra High、Max、Ultraの推論レベルを指定できる。GPT-5.5もLight、Medium、High、Extra Highで選べる。

これらはOpenAI API経由で利用できるものと同じモデルのようだ。

Chatでは選択肢が異なる。5.6のInstant、Medium、High、Extra High、Proだ(実際にはExtra HighとProは月額100ドル以上のサブスクリプションでのみ利用でき、月額20ドルのサブスクリプションではHighまでしか選べない)。それらがLunaなのかTerraなのかSolなのかは説明されていない(おそらくSolだと思われるが)。5.6 ProはChat専用のようで、Workには相当するものがない。

Codexを使ってきた私の今の理解では、Ultraはサブエージェントへの委譲をより積極的に行う特別なモードだ。

ChatGPT WorkのセッションはCodexの利用枠に対して課金され、ChatGPT Chatのセッションはそれとは別の独自の枠でカウントされるのではないかと思う。これがモデルの提供範囲の違いを説明しているのかもしれない。

インターネットアクセス付きのコード実行!

2023年にOpenAIが先駆けたCode Interpreterパターンの長年のファンとして、これは私にとってChatGPT Work(Cloud)の機能の中で群を抜いて最もエキサイティングなものだ。

コード実行環境がインターネットの他の部分と通信できるようになったのだ!

ChatGPT Chatではこれはできない。追加のソフトウェアパッケージのインストールや、ウェブサイトやAPIとのやり取りを頼んでも、コンテナのプロキシによってアクセスがブロックされる。

(奇妙なことに、1月にはパッケージをインストールする機能が追加されたのだが、今はもう動かないようだ。ちゃんとした変更履歴を用意してほしいものだ!)

Claudeの同等のコンテナは、昨年9月のローンチ以来、制限付きのインターネットアクセスを許可している。ClaudeはPyPIやNPMからパッケージをインストールしたり、GitHubからリポジトリをクローンしたりできる。だが、できるのはほぼそれだけで、許可されたドメインのリストは非常に短い。

ChatGPT Workでは、それよりはるかに多くのことが可能だ。許可するドメインのリストを特定して設定することもできるが、デフォルトではすべてに開放されているようだ。

これによりWorkは信じられないほど有用なツールになっている。GitHubリポジトリをクローンさせ、依存関係をインストールさせ、それらを使ってウェブの他の部分とやり取りさせることができるのだ!

完全なヘッドレスChromeブラウザ

ChatGPT Workのもう一つのキラー機能がブラウザツールだ。ChatGPT WorkはChromeインスタンスを丸ごと起動し、ウェブサイトを読み込み、フォームに入力し、スクリーンショットを撮ることができる。

ChatGPTの会話のスクリーンショット。黒い丸角の吹き出しのユーザーメッセージに「https://london-pelicans-in-her-piety.simonw.chatgpt.site/ にアクセスしてブラウザでスクリーンショットを撮って」と書かれている。その下に「Worked for 1m 18s >」という折りたたまれたステータス行があり、続けて「Here's the screenshot of the live site:」という返信と、ウェブサイトのスクリーンショットが埋め込まれている。

サイトでサインインが必要な場合、ブラウザはユーザーに操作を引き継ぐよう促し、パスワードや2FAコードを直接入力させることができるため、認証情報がモデル自体を経由することはない。

読み込んだページのDOMに対してJavaScriptを実行することさえできる。私はこんなプロンプトを試した。

Load simonwillison.net in your browser and extract the headings using JavaScript

ChatGPT Workはブラウザインスタンスを立ち上げ、次のコードを実行した。

await tab.playwright.evaluate(() => {
  return Array.from(document.querySelectorAll("h1,h2,h3,h4,h5,h6"), heading => ({
    level: heading.tagName.toLowerCase(),
    text: heading.innerText.trim().replace(/\s+/g, " "),
    id: heading.id || null
  }));
});

これは私のshot-scraper javascriptツールとよく似た感覚だが、今やスマホからアクセスできるのだ!

永続的で共有されるファイルシステム

ChatGPT Chatでは、チャットセッションごとに新しいファイルシステムが割り当てられる。これらは他のセッションからはアクセスできない。

ChatGPT Workでは、各セッションが独自のscratchフォルダ――/workspace/scratch/e00a0a017944のような名前――を取得するが、それらはセッションをまたいで永続化されるため、以前のチャットのファイルにアクセスできる。私の場合、今/workspace/scratchの中に171個のフォルダがある!

私が確認した限り、この/workspaceボリュームは現在実行中のすべてのWorkセッションにマウントされており、あるセッションでのファイル編集は他のセッションから即座に確認できる。ただし、プロセス空間は共有していないようで、あるセッションで動いているlocalhostサーバーに別のセッションからはアクセスできない。

ChatGPT Sites

ChatGPT Workは、Cloudflare Workersを使ってウェブサイト全体を構築し、さらにデプロイする機能を備えている。これらはHTMLやJavaScriptを持つことができ、Cloudflare D1やR2上のステートフルな機能を含むサーバーサイド機能も実行できる。

この機能で私が作ったシンプルなサイトがこちらだ。

london-pelicans-in-her-piety.simonw.chatgpt.site

クリーム色の背景のウェブサイトのホームページのスクリーンショット。上部のナビゲーションバーには、左に「P/P」と書かれた円形のロゴ、中央に「THE CENSUS」「COLLECTIONS」「METHOD」のリンク、右に「JSON ↓」がある。左半分はヒーローセクションで、小さな赤い大文字で「AN ICONOGRAPHIC CENSUS · GREATER LONDON」と書かれ、その下に大きなセリフ体で「Pelicans in her piety」(「piety」は赤いイタリック)とある。さらに「Across London, an impossible bird bleeds for her young—in limewood, marble, mosaic, metal and glass. This is an evidence-backed census of where to find her.」という説明文が続き、黒塗りの「EXPLORE ALL 28」ボタンと枠線だけの「DOWNLOAD THE DATA」ボタンが並ぶ。右半分は教会内の精巧な暗色の木彫りの祭壇背飾りの写真で、上部に金色の壺と紋章、コリント式の柱、中央に翼を広げた金色のペリカン、銘板のある祭壇、真鍮の十字架と赤い花、両側に刺繍のバナー、白黒の市松模様の床と赤い絨毯が写っている。写真の右端には縦書きで「ST MARY ABCHURCH」、下部には「Grinling Gibbons's reredos, St Mary Abchurch. Photograph: Diliff, CC BY-SA 3.0, via SPAB ↗」というキャプションがある。下部には「28 FIXED SITES」「4 COLLECTIONS」「3 OPEN LEADS」「2 KNOWN LOSSES」という統計ストリップが表示されている。

私のプロンプトは次のとおりだった。

Figure out all of the places in London with a pelican in her piety, then turn that into a JSON file and build a ChatGPT sites site about them

(pelican in her piety[慈愛のペリカン]は中世キリスト教の図像における魅力的なモチーフで、一度知ってしまうと、あちこちで見つかるようになる。)

これらのサイトはデフォルトでは作成したユーザーにのみ非公開だが、公開したり、(チームプランでは)特定の個人と共有したりすることもできる。

Sol、Luna、Terraによるサブエージェント

これについては特に言うことは多くない。ChatGPT Chatはサブエージェントを実行できない。ChatGPT Workはできる。これは完全にパワーユーザー向けの機能だ。複数の並列エージェントが協調して取り組むことで恩恵を受けるような複雑なプロジェクトを進めているなら、Workならそれが可能だ。

スケジュールされたプロンプト自動化

いつの間にか通常のChatGPTからChatGPT Workに移行したように見えるもう一つの機能だ。ChatGPT Workに次のようにプロンプトできる。

run a search to see if Waymo have announced a launch date for Half Moon Bay every day at 8am

これで、その頻度で実行されるプロンプトがスケジュールされる。これらのプロンプトは、何も面白いことはなかったと判断することも、新しい情報があったことを通知すると判断することもある。

追記: 実際、これはChatGPT Chatでも動くようだ。

ただし、他のChatGPT Work限定の機能と組み合わせて使えるため、ここで触れておく価値はある。たとえば、ChatGPT Siteを1時間ごとに更新するスケジュールタスクを設定することもできる。

これは安全なのか?

今の私にとって未解決の問いは、これらすべてがどれだけ安全なのかということだ。

私のlethal trifectaモデルは、プライベートデータへのアクセスと、信頼できないコンテンツへの曝露、そして盗まれた情報を攻撃者に送り返す手段を組み合わせたエージェントシステムに内在するリスクについて警告している。

ChatGPT Workはこの3つすべてを兼ね備えている!

OpenAIがプロンプトインジェクション攻撃からChatGPT Workのセッションをどう保護しているのか、もっと詳しく聞きたい。おそらく答えはCodexと同じauto-reviewメカニズムなのだろう。

OpenAIはもっとわかりやすくできるはずだ

これらを解明するのに、必要以上にずっと多くの労力がかかった。

ここには2つの大きな問題があると思う。

  1. OpenAIがWorkを実際に何をするかではなく、何のためにあるかという観点で説明していること
  2. OpenAIが今もシステムプロンプトやツールの説明を隠し続けていること

ChatGPT Workのドキュメントに、エージェントが使っている正確なシステムプロンプトとツールの説明が含まれていれば、私はこの記事を書く必要はなかったはずだ。

すべてのツールのリスト

この記事を公開して間もなく、あることを思いついた。新しいWorkセッションを立ち上げ、次のようにプロンプトしてみた。

Build a site that lists every one of your tools - nearly grouped into categories - and for each one explain what it does. Try to exactly duplicate arguments and tool descriptions where possible. Design aesthetic should be technical docs, minimal flare

それが構築したサイトがこちらで、223個の登録済みツールの詳細が載っている――ただし、そのうち6個はdatasette-mcp経由で提供されている私自身のMCPに由来するものだ。

そして大量のSkills

リストの中でブラウザ関連のツールがweb.runしかないことに気づいた。これは検索の実行、URLを開く、リンクをクリックするためのメソッドを備えているが、ヘッドレスブラウザの自動化に関する全貌とは思えなかった。

何かが欠けているのではないかと疑ったので、そのツールリファレンスサイトを構築したChatGPT Workセッションにこう伝えた。

Add full copies of every skill to the website (separate pages linked to from the homepage)

結果、ChatGPT Workは大量のskillsを使っていることがわかった――なんと44個だ!

control-browser skillには、ブラウザがどのように動くかが説明されている。

Node REPLのjsツール経由でブラウザのセットアップコードを実行する。この環境では、呼び出し可能なツールIDは通常mcp__node_repl__jsとして表示される。[...]

ブラウザと直接やり取りする機能は、browser-clientランタイムを通じてagent.browsers.* API経由で公開されている。操作を試みる前に、await browser.documentation()が返す完全なドキュメントを一度に取得して読まなければならない。

そこでWorkにこう指示した。

Add the full output of await browser.documentation() to the bottom of the /skills/control-browser page

そして今、その内容を/skills/control-browserでも読むことができる。

他にも興味深いSkillsがいくつかある。

  • documents.docxファイルを作成するためのもの
  • imagegenimage_genツールで画像を生成する際のヒント
  • pdf はPDFの読み取りとレンダリングの両方に対応
  • Spreadsheets.xlsx.xls.csv.tsvを操作するためのもの
  • sites:sites-building はChatGPT Sitesを作成するためのもの
  • openai-docs はそれ自体に関する質問に答えるためのもの
  • data-analytics:build-dashboard はデータダッシュボードを構築するためのもの

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント