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を使うべきか?ということだ。
この問いに対するOpenAIの公式な回答はこうだ。
答えや説明、ブレインストーミング、短い下書きが欲しいときはChatを使ってください。ブリーフや資料、分析、定期的なアップデート、ワークフロー、確認して活用できるファイルなど、明確な成果物としてタスクを完了させたいときはChatGPT Workを使ってください。
正直、この説明はほとんど役に立たない。なぜなら、私はこうしたタスクのすべてを何年も前から通常のChatGPT Chatでこなしてきたからだ!
より適切な問いは、WorkにはあってChatにはない機能は何か?ということだろう。
広範な検証の結果、おおむね次のことがわかった。
- Solの代わりにLunaやTerraを使えるオプション
- インターネットアクセスが可能なコード実行環境
- ヘッドレスChromeブラウザ
- セッション間で共有される永続的なファイルシステム
- ChatGPT Sitesを公開する機能
- Sol、Luna、Terraでサブエージェントのセッションを実行する機能
- スケジュールされたプロンプトの自動化(ChatGPT 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インスタンスを丸ごと起動し、ウェブサイトを読み込み、フォームに入力し、スクリーンショットを撮ることができる。

サイトでサインインが必要な場合、ブラウザはユーザーに操作を引き継ぐよう促し、パスワードや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

私のプロンプトは次のとおりだった。
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つの大きな問題があると思う。
- OpenAIがWorkを実際に何をするかではなく、何のためにあるかという観点で説明していること
- 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ファイルを作成するためのもの - imagegen は
image_genツールで画像を生成する際のヒント - pdf はPDFの読み取りとレンダリングの両方に対応
- Spreadsheets は
.xlsx、.xls、.csv、.tsvを操作するためのもの - sites:sites-building はChatGPT Sitesを作成するためのもの
- openai-docs はそれ自体に関する質問に答えるためのもの
- data-analytics:build-dashboard はデータダッシュボードを構築するためのもの
記事をランダムに読む
コメント
ログインしてコメントする