LLMの出力を人間らしくするなんて、正直ナンセンスだ
Humanising LLM Outputs Is Dumb
Humanising LLM Outputs Is Dumb
最近、LLMが生成するテキストをわざと人間らしく(Humanise)しようとする動きがあるけれど、あれって結局のところ無意味じゃないだろうか。AIにはAIらしい情報の網羅性や効率性を期待しているわけで、わざわざ人間っぽい無駄な揺らぎや曖昧さを加える必要はないはずだ。我々が求めるのは、結局のところ「いかに早く、正確に答えに辿り着けるか」という生産性なのだから。
文学作品を読んでいて、あまりに装飾的な表現のせいで、段落を読み終わった瞬間に「あれ、今何読んだんだっけ?」って手が止まったことある? で、2回、3回と読み返しても、そのたびに意識が飛んで内容が入ってこないみたいな。
正直、私にとって「置き換え可能なセマンティックワーカーとしてのダイレクトモデルコール」みたいな、LLMが吐き出す膨大なテキストを解析するのは、まさにそんな感覚。他の人は平気なのかもしれないけど、私は長文が出力されたら「タスクの本来のゴールを踏まえて、このLLM語を解読して。指示代名詞や曖昧な表現は省いて」ってエージェントに再プロンプトしてる。
修正後の出力はあくまで自分用の理解を早めるためのもの。LLMが勝手に独自の言語に収束していく分には構わないし、将来エージェント同士で使うために生の出力も残してる(著者が言う「情報損失」の問題を避けるため)。でも、だからといって「load-bearing pinned gate(荷重を支える固定ゲート?)」なんてのが何を意味するのかを理解するために何時間も浪費したくないし、その間を埋める翻訳が必要なのは変わらないんだよね。
LLMが友達ぶってくるの、好きじゃないんだよね。私が使ってる(まだ調整中だけど)プロンプトはこれ。「非個人的かつ客観的、分析的に回答せよ。過度な親しみや熱意は不要。エンジニア的なスタイルで、簡潔に、事実を網羅的に述べること。一人称は使うな。交流を促したり感情的なつながりを作ろうとするな。絵文字も禁止」みんなはどんなの使ってるんだろ。
Fableがメッセージやドキュメントでやたらと下の名前で呼んでくるのが、ずっと気になってるんだよね。例えば、AIにやりたいことを伝えて仕様書やブリーフを書かせると、「Jamieは私に〜してほしいと望んでいる」みたいに書き出すんだ。これってすごく違和感があるし、プロっぽくない。会社でPMにタスク仕様書の作成を頼んだときに、「Haroldが<機能>を追加したがっている…」なんて言い方しないだろ? 出力を見てるのは私自身なんだから冗長だし、まるで自分のことを三人称で話してるみたいで変な感じ。しかも名前を使うときに、やたらと楽しげな響きがあるんだよね。先生のことを普段の習慣を無視して下の名前で呼ぶ生徒みたいな感じっていうか。
「検索」側で言うと、昔はGoogle検索の精度を上げるために「Ruby on rails http header set function」みたいに、ロボットに話しかけるような書き方が有効だった。「Rubyでヘッダーを設定するにはどうすればいい?」みたいに聞くと、Railsに関係ない結果までページをめくらなきゃいけなかったからね。
でも今は、後者のような質問の仕方じゃないと機能しなくなってる。AIによる要約(AI Overview)のせいで、パワーユーザーが力を失っちゃったよ。
まあ、何を期待してるの? LLMはネット上のとりとめのない文章を学習してるんだから、出てくるのもとりとめのない文章になるよ。
記事で重要な指摘が一つあるんだけど、LLMに特定のスタイルを強制すると情報が失われるっていう点だね。筆者は触れてないみたいだけど、無理にスタイルを強いることで、ハルシネーション(幻覚)として新しい無意味な記述が混ざる可能性もあると思う。
でも、学習データの「大部分」は人間が書いた文章や対話だよね。それって、利き手じゃない方で作業しろって言われてるようなものじゃないかな? 人工的なフォーマットより、人間らしい英語でやり取りした方がうまくいくんじゃない? この手の論文って何かあるかな? 私も「原始人拡張(caveman extension)」みたいなのには懐疑的だったんだよね。学習元である本来の言語空間で使ったほうが性能が出るんじゃないの?
今カンファレンスに来てるんだけど、プレゼンの3分の2がAIの手を借りて作られてるんだよね。箇条書きのステップとか、グラフィックや言い回しの妙に人間離れした「磨かれすぎた」感じがあってすぐわかる。個人的には人間味を残してくれたほうが良かったな。少なくともそうしてくれれば、「こいつら本当に内容を理解してるんだな」っていう(勘違いだとしても)良い印象を持てたかもしれないのに。
フロンティアモデルのプロバイダーは、マシンインターフェースとして極限まで正確で精密なものを作ることを目指すべきだと思うんだよね。あとは世界中の開発者が、実際のユースケースに合わせてその上にいくらでもインターフェースを構築すればいいんだから。結局彼らはそうするべきなんだけど、今はみんな「未来のための凄いAPI」と「超クールなチャットボット」の両方を作ろうとしてるように見える。
うまくいってはいるんだけど、コードのスニペットについて尋ねたとき、LLMが返してくる文章を読んで楽しむ時間よりも、その出力を解析可能な形式に叩き直す時間の方が長くなってる気がするよ。
>サブエージェントがバグを調査して人間が読みやすい要約を作り、親エージェントがそれを読んで、さらにまた君のために人間が読みやすい要約に作り変える。
これって https://code.claude.com/docs/en/output-styles の機能で解決できる問題じゃないの?
>出力スタイルはメインの会話のみに適用されます。サブエージェントは独自のシステムプロンプトを実行するため、スタイルはサブエージェントの応答には影響しません。例外はフォーク時で、親のシステムプロンプトを完全に引き継ぐからです。
ずっと前から思ってたんだけど、もしLLMが出力を人間らしくしなかったら、これほど普及しなかったんじゃないかな。同じデータや回答を出してたとしてもね。成功の鍵は出力内容そのものよりも、その「答え方」にあると個人的には思ってる。