勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

「LLMのプロンプトエンジニアリング」が異星人の研究書のようで面白かった

読むのがホネな技術書やビジネス書を取り上げて2週間の読書期限を課して読んでアウトプットする仮想読書会「デッドライン読書会」の第79回。同僚と読書期限を約束することによって積読が確実に減るという仕組み。過去記事はこちら

さて、今回読む本は「LLMのプロンプトエンジニアリング ―GitHub Copilotを生んだ開発者が教える生成AIアプリケーション開発」だ。発売後にSNSでは話題になっていて評判の本という印象だった。

なおわたしは生成AIを日常的に利用しているが、実際にLLM関連の開発まではやっていないという立場、前提知識で読んでいる(仕組みと基本的なプロンプトエンジニアリングは理解している状態だった)

全般的な感想

いろいろ役に立つことは確かだが、それ以前に(SFファン的に)面白い本だった・・・
というのが正直な感想。SF小説のジャンルの一つに「異常論文」というものがあるのだが、それを読んでいるようなおかしみもあって良い。

さて、本書はMicrosoftでLLMを活用した実用的な生産性向上アプリケーション(Github Copilot)を開発した著者による、LLM組込みアプリケーション開発の指南書である。LLMの特性を理解するための基本理論は一応示されるが、どう使い倒すかが主軸になっているのが大きな特徴だ。

そして、LLMを使い倒すことを追求した結果(これが冒頭の感想につながるのであるが)、もはやLLMを生命体のように扱っているような内容になっているのが面白かった。例えば

  • 有効に活用するためには、LLMに共感する必要がある
  • LLMの思考を助けるために、適切な補助を行うべき

といったことが(真面目に)書かれていて、そこからSFファンとしては臭いを(勝手に)嗅ぎ取ってしまうのだった。

コピペと小手先のプロンプティングから抜け出せそう

冒頭に書いたとおり、わたしはLLM組込みアプリケーションを開発しているわけではない。そういう意味では本書の想定読者でなく、本書に書かれたテクニックをストレートに活用するシーンもあまりないだろう。しかしそれでも、LLMアプリケーションをうまく使い倒すという観点で、得るものは大きかった。

  • テキストを模倣する装置としての(チューニング前の)LLMの特性は、かなり興味深い (「2章 LLMを理解する」)。トレーニングデータの特性の話なども面白い
  • LLMをAIアシスタントとして機能させるためにチューニングしている(よく知らなかった)ことと、その結果どのような特性を持つようになるか(「3章 チャット形式への移行」)
  • そしてLLMを用いたアプリケーションを構築するとはどういうことなのか(「4章 LLMアプリケーションの設計」)

これまではプロンプティングというと「いいテンプレを見つけて、目的にあわせてちょっと直す」「小手先のテクニックで結果を改善させる」「うまくいかなかったら、プロンプト自体もAIに考えさせる」ようなアプローチをしてきたのだが、この第Ⅰ部を読んだ結果、ある程度 原理と理屈がわかるようになったので、自分でより良いものを考えられるような気がしたのだ。

この本の内容がいつまで有効かという不安はある

とはいえ、著者も書いているが技術進歩の加速は続いている。

読者の皆さん、シートベルトをお締めください!今の変化のスピードが速いと感じているなら、これからはさらに加速することを覚悟してください。

そういう点では本書の旬は短いかもしれない。興味を持ったらすぐに読んでしまった方が良さそうではある。