Xのタイムラインを流し見してたら、Simon WillisonのブログにバチカンのAI回勅の話が流れてきた。「教皇がAIについて書いた?」と思って、とりあえず原文リンクを踏んだ。
これが予想外に読める文書だった。
Simonが特に引いていたsection 98がえぐかった。原文には「current AI systems are more 'cultivated' than 'built'」という表現が出てくる。設計者がすべての詳細を直接設計するのではなく、知性が『育つ』フレームワークを作っているだけ、という整理だ。
これ、XAI(Explainable AI)界隈が何年も言語化しようとしてきたことを、めちゃくちゃシンプルに書いてるじゃないか。internal representationsもcomputational processesも「at present, unknown」と断言してる。
自分はここ最近、業務でOpenAIのAPIを叩くコードを書いてる。プロンプトを少し変えるだけで出力が変わる現象に何度もハマってきた。なぜ変わるのかはわからない。ベクトル空間の何かが変化してるんだろうとは思うけど、本質的にはブラックボックスだ。それをカトリック教会が公式文書で「unknown」と書いてくれたのは、なんか妙に納得感があった。
読みながら、直近でレビューに出したPRのことを思い出した。LLMのレスポンスをそのままユーザーに返す処理を書いたとき、チームメンバーから「この出力、信用していいの?」と聞かれた件だ。
そのときは「プロンプトでバリデーション指示してるから大丈夫」と答えたんだけど、今回の回勅を読んで、それは甘かったかもと思った。section 100では「apparent objectivity of the responses」という表現が出てくる。設計者のcultural assumptionsが出力に反映されてると。
自分が書いてるコードでも、upstream側のバイアスを無条件に信頼する設計になっていないか確認したくなった。具体的にやろうとしているのはこのあたり:
これ、Pydanticとinstructor使えばかなり楽に実装できる。
もう一個刺さったのがsection 101で触れられている環境負荷の件だ。「enormous amounts of energy and water」という表現が出てくる。
正直、個人開発でAPIコスト最適化ばかり気にしてて、電力や水の消費量まで意識したことはほとんどなかった。gpt-4oとgpt-4o-miniをどっちで呼ぶかをトークン数とコストで判断してきたけど、そこにエネルギー効率の視点が入ってくる日も近いのかもしれない。
Simonはこの回勅をElevenReaderというiPhoneアプリでURLを貼り付けて音声再生したと書いていた。歩きながら聴いたと。それ、通勤で試したいと思って今日アプリを入れた。
ElevenLabsの技術を使ってるはずで、出力品質は気になるところだ。自分のLLMコードをどう変えるかより、まずドキュメントを歩きながら消化するワークフロー自体を実験してみるつもりだ。ローマ教皇の文書がエンジニアの作業フローを変えることになるとは思ってもみなかった。
これが予想外に読める文書だった。
section 98、LLMの解釈不可能性を「cultivated」と表現した
Simonが特に引いていたsection 98がえぐかった。原文には「current AI systems are more 'cultivated' than 'built'」という表現が出てくる。設計者がすべての詳細を直接設計するのではなく、知性が『育つ』フレームワークを作っているだけ、という整理だ。
これ、XAI(Explainable AI)界隈が何年も言語化しようとしてきたことを、めちゃくちゃシンプルに書いてるじゃないか。internal representationsもcomputational processesも「at present, unknown」と断言してる。
自分はここ最近、業務でOpenAIのAPIを叩くコードを書いてる。プロンプトを少し変えるだけで出力が変わる現象に何度もハマってきた。なぜ変わるのかはわからない。ベクトル空間の何かが変化してるんだろうとは思うけど、本質的にはブラックボックスだ。それをカトリック教会が公式文書で「unknown」と書いてくれたのは、なんか妙に納得感があった。
自分のコードに引きつけて考えてみた
読みながら、直近でレビューに出したPRのことを思い出した。LLMのレスポンスをそのままユーザーに返す処理を書いたとき、チームメンバーから「この出力、信用していいの?」と聞かれた件だ。
そのときは「プロンプトでバリデーション指示してるから大丈夫」と答えたんだけど、今回の回勅を読んで、それは甘かったかもと思った。section 100では「apparent objectivity of the responses」という表現が出てくる。設計者のcultural assumptionsが出力に反映されてると。
自分が書いてるコードでも、upstream側のバイアスを無条件に信頼する設計になっていないか確認したくなった。具体的にやろうとしているのはこのあたり:
- LLMのレスポンスをユーザーに渡す前にconfidence的な文脈を付けるか、少なくともログに残す
- プロンプトにsycophancy対策の一文を入れる(「disagree with the user if needed」系)
- 出力のバリデーションをLLM任せにせず、structuredなschemaで受け取る
これ、Pydanticとinstructor使えばかなり楽に実装できる。
環境コストの話、section 101
もう一個刺さったのがsection 101で触れられている環境負荷の件だ。「enormous amounts of energy and water」という表現が出てくる。
正直、個人開発でAPIコスト最適化ばかり気にしてて、電力や水の消費量まで意識したことはほとんどなかった。gpt-4oとgpt-4o-miniをどっちで呼ぶかをトークン数とコストで判断してきたけど、そこにエネルギー効率の視点が入ってくる日も近いのかもしれない。
Simonはこの回勅をElevenReaderというiPhoneアプリでURLを貼り付けて音声再生したと書いていた。歩きながら聴いたと。それ、通勤で試したいと思って今日アプリを入れた。
ElevenLabsの技術を使ってるはずで、出力品質は気になるところだ。自分のLLMコードをどう変えるかより、まずドキュメントを歩きながら消化するワークフロー自体を実験してみるつもりだ。ローマ教皇の文書がエンジニアの作業フローを変えることになるとは思ってもみなかった。