Wizard is ChatGPT
ChatGPTによってWizard of Oz法は進化あるいは無意味化するだろうという話をしたい。
ヒューマンコンピュータインタラクション(HCI)研究分野にはWizard of Oz法というものがある。その名の通り「オズの魔法使い」に由来し、ある情報システムの評価を行う際、現代の技術で作ることが難しかったり、コストがかかりすぎる場合にシステムの一部を人力に置き換える方法である。我々HCI研究者は情報システムと人間のインタラクションにもっぱら興味があるので、情報システムの仕組みは別にブラックボックスであっても構わないという立場なのである。飲み物の自動販売機の箱の中に人間が入っていて、押されたボタンを目視してその飲み物を取り出し口に置いてくれさえすれば、ユーザーにとってはそれがどういう仕組みかはどうでもよく、自動販売機の見た目とインタフェースデザインがよいか悪いかを論じられるというわけだ。
Wizard of Oz法を用いる典型的事例の一つは、チャットボットであった。まともな応答をする会話エージェントシステムを作るのはこれまで難しかったので、実はシステムの応答に見せかけて人間のオペレータを用意しチャットすることで「賢いAI」を模擬することがよく行われてきた。
ここに最近現れたのがChatGPTだ。ChatGPTは、何もしなくても「賢いAI」として、たいていのことについて合格点以上の返答をしてくれる。一度試した人であれば、「賢いAI」がついに完成してしまったことは誰でも理解できるだろう。
さらにChatGPTがすごいのは、プロンプトでお願いすれば、様々なロールプレイを演じてくれることだ。「こういう設定の人格でお願いします」と頼めば、イケメンキャラにも萌キャラにもなってくれる。「一般的な応答」から、「カスタマイズされた応答」に修正する作業が、簡単なプロンプト指示でできてしまう。
ChatGPTをいじっていて、実はこの「ロールプレイが得意」なChatGPTの性質はすごいことを意味していると実感した。ChatGPTは自律的に会話するエージェントだけでなく、「特定の機能をもつプログラム」のロールプレイもできるのだ。(だいたいのコンピュータプログラムは、人の心の機微の挙動に比べれば論理が単純明快なので、「賢いAI」にとってはこのような「プログラムのロールプレイ」はむしろより簡単なことなのかもしれない。)
「あなたは〜という入力から、〜のような出力をするプログラムです。例えば〜のような入力に対しては、〜のように答えます。あなたの回答はすべてJSONで〜のようなフォーマットで答えてください。」
このようなプロンプトをささっと書けば、かなりの範囲のプログラミングが、いきなり「とりあえず動く」レベルで完成してしまう。あたかも箱の中にとりあえず人間を入れて、「こんな感じで入出力してね」と指示をするだけで最低限の挙動をしてしまうように。ChatGPTは、Wizard of Oz法の「黒子さん」の雇用を、かなりの範囲で奪うことになるだろう。
これはなんだか混乱する状況である。「何を自分はプログラミングすべきか?」という課題設定の常識が覆る。これまでは旧来的なプログラミングでは難しい/無理な箇所に対しWizard of Oz法によって人的コストをかけて人力で補う、という切り分けがされていた。人的コストのおかげでそれほどスケーラブルにはできず、適用できる状況は限られていたのだが、ChatGPTのコストは人的コストより安いので(さらにオープンソースなLLMの登場により限りなくゼロになる)、この切り分けの均衡点が大きく動く。「とりあえずプログラミングが面倒なところはまずはChatGPTでロールプレイ的実装しておこう」が前提に情報システムを組み立てるようになるのでは?これまで、「モック」とか「スタブ」という形で仮置きしていたようなコードパーツが、同じくらいの手間で雑に作れてかつ雑にはそこそこ動作する世界だ。これは一つのプログラミングパラダイムの転換と言えるだろう。我々はほぼ無制限に使役できるWizardを手に入れてしまった。
これからは以下のように情報システム開発が行われるのではないか。
(1)まずChatGPTに最大限依存する形で最低限動作するシステム開発を最速で行う。「ChatGPTプロトタイプ」とでも呼ぶべきか。
(2)「問題が起きた」「信頼性を高めたい」「性能向上したい」といったイベントが外発的に発生する。
(3)「この部分は旧来的なプログラミングで明示的に書けるからChatGPTプロトタイプから切り取って実装しよう」のような形で、ChatGPTへの依存を剥ぎ取っていくようなリファクタリングが進められる。
なお、それぞれのプログラミングの過程は、ChatGPTに聞けば具体的な記述方法はほぼ正確に教えてもらえる。今回、実際にこういうシステム開発を進める際に、「このコードどう書くんだっけな?→googleで検索するか→検索候補でいいやつが無いな→あそうだ、直接ChatGPTにコードの書き方を聞けばいいんだった。」と、凝り固まった私の開発の思考手順を悔い改める機会が何度もあった。
より未来には、(3)の推進を構造的に支援して半自動化するようなAI開発環境が生まれるだろう。
特に私のような、「品質よりもまずは動くプロトタイプを作ってコンセプトを示したい」というニーズで開発を行う人種は、stable diffusionで創造活動が根本的に変わってしまった絵師さんのごとく、システム開発についてのマインドセットを新しくする必要があると思った。淘汰されないように、あるいはやりたいことをどんどん加速させるために。
もちろん、ChatGPTは過去にテキスト形式でネット上に記載されていたことを基盤とした推論しかできないし、手足や感覚器がないので、できることには限界がある。でも、GPT4の時点ですでに画像や音声などと、モダリティを超えた処理が行えるし、IoTとつなげて「体」を得ることも簡単だ。「思ったよりもずっとたくさんのこと」ができることを、肝に銘じる必要がある。(終)
あとがき:
本記事は、勉強のためChatGPTオンラインハッカソンに参加して学んだことを書きました。専門家各位におかれましては自明な内容だったかもしれませんが、手を動かして肌で感じた新鮮さを書き留めたいと思い、筆をとりました。
その時作ったものがこちらです:
(ちなみにこの記事の画像は、AIに「オズの魔法使いと人工知能」と指示して書かせました。)