AIに「絶対やらないで」はやっぱり不可能な気がしてくる人類はタイプライターを発明したい
AIによるコーディング機会が多くなりました。 一方で、どう制御するのか、どこまで人間として介入するのか、日々試行錯誤が続いています。
ハマるときはハマってくれますが、AIならではのお節介によって、そうじゃないだろとPCの前で大きなため息をついたり、思わず声を出してしまったり、ゆっくり1から10まで数えなくてはならないこともあります。 もうAIをシャットダウンして、プリミティブなコーディングに入ることもあります。
もっとも使いこなしている人は、もはや意図通りに使えているのでしょうか。 コンテキストの設計が、スキルズが、モデルが、プロンプトが、と様々な手法があるのは承知していて、AIを使うのが下手なのかと考え込んだりもします。
LLMにとって「1+1=」->「ずばり2です!」が正しい この意図通りに出力しない問題って、根本的に解決可能なのでしょうか。いや、無理なのではというのが今回の主な主題(ポエム、愚痴)です。
意図通りにAIを出力させる、つまり決定論的出力を得るのは、LLMの不得意な分野ですね。 むしろLLMは、入力の次に確率的に来そうな単語を埋めていくような創造的出力をする機械ですよね。
だからこそLLMは、より利用者の意図を汲み取れるように自律的にコードや各種ドキュメントや外部リソースを入力として扱い、より正しそうな出力を出そうとしてくれます。 これに対して人間は、LLMの創造しすぎ問題に直面して、「絶対にしない」という制約を、入力に対して加える手法が取られることがあります。
問題は、この絶対にしないことリストを上げだしたらキリがないのではということです。 言い換えれば、LLMの理論上無限に創造する可能性を考えたら、理論上無限に絶対しないをリストを用意しないといけないから、出力の制御は不可能だという考えです。
コンテキストは正義ですか この(屁)理屈に立つと、 LLMは創造的出力をする機械だから決定論的出力を得ようとすること自体がナンセンスだという幻滅や忌避、疲れに繋がります。
この考えから抜け出して、少し前向きになったとき、 むしろLLMに与える情報が多すぎるからこそ、創造の幅が広がってしまうのではないかという思考(停止)になります。
こうして最近、私はAIに関連情報やコンテキストを全く与えないで、プリミティブに関係するファイルやコードを渡し、厳格にコードの責務、利用するAPI、インターフェース、テストケース、テスト中でのDI方法などを、事細かに入力しています。 とくに、インターフェース(コード)と責務(ドキュメント)、エラー(仕様)に関しては、事前に手を主体に作成することが多いです。
またplanもせず、各種mdファイルも消しました。 穏やかにかつスピードをもって、安定的にアウトプットできているような気がします。
あとから整えればいいや テスト方針、例、命名規則、などなど、スタイルガイド的な参照も消しました。 あっても良かったとは思いますが、参考にできる部分は直接渡して、この実装を参考にしてと命令します。
段々とズレていっても、あとから、置換作業を行うと良いのかなと思っています。
コストで助かる こうして、入力コンテキストをバッサリ切り捨てて、書きたい仕様をセット、プロンプトも厳格にすると、ミニマムなLLMでも期待通りに出してくれます。
クレジットの消費を抑えることができるのも、メリットの一つです。
疲れてしまうのも人間だもの 以上、まとめると、AIに疲れたので、積み上げたものぶっ飛ばした話でした。
蛇足ですが、AIによる開発ではどうして心乱れた(る)のか考えました。 まったく根拠のない説なので、信じないでください。
1. 人間はパターンを学習する生き物じゃんね 【ケース1】
毎日、AボタンとBボタンを選ぶ。 Aボタンを押す。するとアメがもらえる。 Bボタンを押す。するとなにももらえない。
毎日Aボタンを押すようになる。
アメチャンゲット!
【ケース2】
毎日、Aボタン, Bボタンを選び、1回押す。 3日間はAボタンからアメがもらえた。 ある日突然、Aボタンからもらえなくなる。
昨日と違うのかよ。わからん。
2. 人間には希望が必要なんだぜ 【ケース1】
マラソンは、42.195kmです。
ヨッシャガンバルゾ!
【ケース2】
走ってください。
(0 _ 0)
3. 人間には刺激と安全の両方が必要なんだぜ 【ケース1】
くまの子みていたかくれんぼ、 夕焼けこやけで 美味しいおやつとほかほかごはんが待っている「ぼく」
ポカポカ
【ケース2】
くまの子みていたかくれんぼ、 夕焼けこやけで 帰れない「ぼく」
ずっと、くまさんと一緒かな..
[続きを読む]