見出し画像

Rubber Duck DebuggingとしてのLLMプロンプティング

0. 便利なLLM

かれこれ3年ぐらいChatGPTというかLLMサービス全般を使ってきて、なにがそう便利なんだろうかと考えてきた。もちろんコード生成とか修正、要約と便利なことはたくさんあるんだけど(そもそもアイデアが湧きまくる人間なのでアイデア出しに役立ったことはあまりない)、それ以上に思考が整理されるような感覚に強い有用性を感じていた。

ただ、それはChatGPTがごちゃついた思考を整理してくれているという感じでは決してなく、どうもプロンプトを書いているときにそういう感覚があった。

1. プロンプト作成という説明過程

LLM活用にあたってよく言われることとして、LLMを使いこなせる人は指示が上手いっていうのがある(あるいは、いい上司になるだとか、仕事ができるやつだとか、そのバリエーションはいくらでもあるが全くもってどうでもいい)。
もちろん、細かく書けば書くほど詳細で厳密な指示にはなるわけだけど、それはそれでプロンプト作成に時間を取られて生産性が落ちてしまう。かといって適当に指示をすると、全く想定していなかった例外や論理の穴を突いて全然違うことをし始めることもある。つまり、作業者が期待する出力をLLMが返せる程度の、高すぎず低すぎない品質の説明文を作ることがプロンプティングの過程には求められている。

そして、特にコードを書いたり、あるいは論文の途中を読んで批判させたりする際には、その前提条件として、自分がどんなものを目指しているのか、そしてそのためにどんな役割をコードや論文に託しているのか、それに対してLLMにどんな情報を返してほしいのか、そういったことをある程度整理して渡す必要がある。

そう、これはRubber Duck Debuggingなのである。

2. Rubber Duck Debuggingとは


アヒル 人形 MacBook プログラミング

そもそもラバーダック・デバッギングは、いわゆる「他者に説明する過程で自分の思考が深まる」というプロセスを利用して、無生物(ここではアヒルの人形)に対して自身の書いたコードを説明することで、想定外のバグや例外を発見することができるという有名な一手法である。僕は厳密にはいわゆる”IT Guy”ではないのでそう頻繁にするわけではないけど、やはり自分の研究や分析モデルの構築にあたり、ある程度定期的にやっているのは事実である。

2020年代のラバーダックデバッギングにおいては、同じ無生物でも人工知能(というか確率的文章生成モデル)を相手に壁打ちをし、その過程で思考が整理されていくのである。
あの頃なら1ドルのrubber duck 1匹でよかったのに随分とカネがかかるようになったな(私はAPIの使いすぎで毎日平均で$5は課金されている)。

今のChatGPTでは何の説明もなくコードを投げてもある程度は理解してくれてしまうというのが良くも悪くもすごいところで、だからこそ読めないコードの説明をしてくれるというのもあるんだけど、まあそれが正しいという保証もないので、やはり前提条件の共有は必要なんじゃないかという気がする。

これがSociety 5.0(笑)的な感じで、こちらの意図をかなり早く汲み取ってくれるようになると、おそらくそういった説明は必要なくなってしまうわけなんだけど、それってちゃんと十分な思考をした上で作業できるのかな。あと、どっかで追い越されるんじゃないかっていう不安もたぶんあるんだろうなあ。

まあそんな感じで、まだまだ活用はします。
来週は量子化されたローカルLLMによるアノテーションモデルの分析手法の提案で学会発表@電子情報通信学会 第21回テキストアナリティクス・シンポジウムです。台風が過ぎ去ることを祈りつつ。


この記事が気に入ったらサポートをしてみませんか?