私はこれから数週間、このサイトの管理を離れる予定だ(半分は休暇、半分は仕事)。日々のルーティンから離れることを考えているうちに、LLMやAIの現状について、散漫な考えを共有したいと思った。


AIがソフトウェア開発に与える影響についての初期の調査をいくつか目にした。生産性は向上しているのか?コードの品質は上がったのか?下がったのか?などである。こうした調査の大きな問題は、LLMの使い方を考慮していない点だ。私が知る限り、LLMの使い方の大半は(主にco-pilotを使用した)「高機能なオートコンプリート」である。だが、LLMを使いこなしている私の知人たちは、オートコンプリートはあまり役立たないと考えており、LLMにソースコードのファイルの読み込みと編集を許可し、タスクを実行させるアプローチを好んでいる。LLMの使い方を無視した調査は、誤った方向へ人々を導くデータを生み出すのではないかと懸念している。

(もうひとつの複雑な要因は、モデルの能力差である)


よく「プログラミングの未来はどうなるのか?」と聞かれる。今からソフトウェア開発に参加すべきか?LLMでジュニアエンジニアは不要になるのか?シニアエンジニアは手遅れになる前に仕事を離れるべきか?私の答えは「まったくわからない」だ。さらに言えば、未来を知っていると主張する人は、口ではないところから言葉を発しているのだと思う。我々はLLMの使い方を模索している。これからLLMの使い方を理解するまでに、特にLLMの性能が大幅に向上した場合にどう使うべきかを理解するまでに、しばらく時間がかかるだろう。

私が提案するのは、とにかく試してみることだ。少なくとも他の人が何をしているのかを把握しよう。特に具体的な使い方に注目しよう。できれば自分でも実験し、経験を共有するといいだろう。


「AIはバブルか?」もよく聞かれる。これに対して私は「もちろんバブルだ」と答える。主要な技術的進歩は経済的バブルと一緒にやってくる。運河、鉄道、インターネット、どれもそうだった。いずれはバブルが弾け、多くの投資が無価値になることはほぼ確実にわかっている。しかし、いつ弾けるのかはわからない。バブルがどこまで膨らみ、その過程でどれだけ価値を生み出すかは不明だ。来月弾けるかもしれないし、数年後かもしれない。

バブルが弾ければ、多くの企業は潰れる。だが、すべてではない。ドットコム・バブルが弾けたとき、pets.comやWebvanは消えた。だが、Amazonは消えなかった。


数年前、私は講演活動を引退した。講演のストレスは恋しくないが、業界の友人たちと交流できなくなったのはさびしい。だからGOTO Copenhagenで多くの人たちに会えるのを楽しみにしている。私は1990年代(まだJAOOと呼ばれていた頃)からGOTOカンファレンスに関わっている。彼らが興味深いプログラムを企画していることに今でも感心する。


元同僚のレベッカ・パーソンズは、ずっと前から「ハルシネーションはLLMのバグではなく、特徴である」と言っている。確かに特徴だと思う。LLMがやっているのはすべてハルシネーションである。その一部を我々が有用だと感じているにすぎない。

したがって、LLMには同じ質問を(表現を変えながら)何度も聞くべきだ。そうすれば、答えを比較できる。LLMに答えを比較してもらってもいい。答え自体よりも、答えの違いのほうが有益なこともあるだろう。

ハルシネーションエンジンに数値的な答えを聞く場合は、少なくとも3回は質問するべきだ。そうすれば、ばらつきの幅がわかる。また、我々が決定論的に計算できるものをLLMに計算させるべきではない(実際にやってる人がいる)。答えを計算するコードを生成させるのは構わない(その場合も複数回生成させるべきだ)。


他の工学分野では、世界の不確実性を考慮する必要がある。構造エンジニアは、測定できない要因に備えて許容範囲を織り込む(私はキャリアの初期に、デジタル電子工学では「許容範囲」という概念は存在しないと教えられた)。プロセスエンジニアは、人間がタスクを実行するときには忘却や不注意があることを織り込む。ソフトウェア工学は独特で、決定論的なマシンを扱っている。LLMは、我々が非決定論的な世界において他の工学の仲間に加わる転換点になるかもしれない。


LLMはジュニアエンジニアと比較される。そこにはもっともな理由もある。だが、LLMが平気で「すべてのテストはグリーンです」と言うのを見てきた。実際に実行すると、テストは失敗する。ジュニアエンジニアがそんなことをしたら、すぐに人事部がやってくるだろう。


LLMはソフトウェアシステムの攻撃対象領域を大幅に広げてしまう。サイモン・ウィリソンはAIエージェントの「破滅の三要素」を唱えている。つまり、プライベートデータへのアクセス、信頼されていないコンテンツへの露出、外部と通信する手段(データ流出)を合わせ持ったAIエージェントである。「信頼されていないコンテンツ」はさまざまな形で現れる。たとえば、エージェントにウェブページを読み込ませたとき、そのページには攻撃者が白背景に1ptの白文字で指示を書き込んでいるかもしれない。そうすれば、LLMをだましてプライベートデータを引き出すことができる。

ブラウザで動作するエージェントの場合は深刻だ。攻撃者のウェブページを読み込んだエージェントは、別のタブで銀行口座にアクセスし、「プレゼントを買う」ために攻撃者の口座に送金するかもしれない。ウィリソンの見解は「エージェント型のブラウザ拡張はコンセプトに致命的に欠陥があり、安全に構築することはできない」である。