はじめに — なぜ「仕組み」を知る必要があるのか
AIを使っていて、こんな経験はないだろうか。
- 「さっきはうまくいったのに、同じ指示で違う結果が出た」
- 「ルールを書いたのに、なぜか守ってくれないことがある」
- 「長い会話をしていたら、最初に言ったことを忘れた」
- 「昨日の会話の内容を覚えていない」
これらは「AIの性能が低い」のではなく、AIシステムのアーキテクチャ(設計構造)に起因する、原理的な振る舞いである。仕組みを知れば、これらは予測可能になり、対処できるようになる。
本稿では、LLM(大規模言語モデル)ベースのAIシステムの基盤構造を、ユーザーの視点から解説する。
本稿を読む前に — AIとの向き合い方
構造の話に入る前に、一つ重要なことを述べておく。
多くの人がAIを検索エンジンのように使っている。「〇〇とは何ですか」「〇〇のやり方を教えて」——答えを持っているAIから、正解を引き出そうとするアプローチだ。これはAIの能力の一部しか使っていない。
AIを使いこなす上で最も重要なのは対話である。答えを引き出すのではなく、十分なインプットを持って、自分の思考をAIにぶつける。AIはその思考に対して構造化、反論、補完、拡張を返す。それに対してまた自分の考えをぶつける。このサイクルの中で、最初には見えなかった構造や問題が浮かび上がってくる。
両者の違いを、同じテーマ——「AIに指示が通らない問題」——で比較してみよう。
受動的な使い方(授業モデル):
人間: 「AIシステムのアーキテクチャについて教えて」
AI: 「AIシステムは、モデル層、オーケストレーション層、
ガードレール層から構成され...(長い説明)」
人間: (読む。なるほど。次の質問へ)
人間: 「Hooksって何?」
AI: 「Hooksとは、エージェントのライフサイクルイベントに
紐づくスクリプト実行の仕組みで...(長い説明)」
人間: (読む。なるほど。次の質問へ)
人間: 「確率的制御と決定論的制御の違いは?」
AI: 「確率的制御とは...決定論的制御とは...(長い説明)」
→ AIが話し、人間が聞く。教科書を読むのと変わらない。
人間の頭の中にある疑問は解消されるが、新しい発見は生まれにくい。
能動的な使い方(対話モデル):
人間: 「Claude Codeでワークフロー(作業の流れ)を組んでいるが、
Rulesに『Phase毎にgit commitせよ』と書いても
スキップされることがある。プロンプトの書き方が悪いのか?」
AI: 「それはプロンプトの問題ではなく、アーキテクチャの問題だ。
Rulesはコンテキストにテキストとして注入されるだけなので、
モデルの確率的な処理でスキップされうる。
100%の遵守が必要なら、Hooksで決定論的に制御すべき。」
人間: 「なるほど、確率的制御の限界ということか。
だとすると、全部Hooksにすればいいのでは?」
AI: 「全部Hooksにすると、モデルの自由度が失われる。
たとえばコード設計の判断までHooksで固めると、
モデルの柔軟な問題解決能力が活かせなくなる。
重要なのは『どこを固め、どこを自由にするか』の設計。」
人間: 「それは自分の認知の問題でもある気がする。
Claude.aiで設計を考えるときとClaude Codeで
実装するときで、自分の頭の使い方が違う。
混ぜると混乱する。」
AI: 「興味深い指摘だ。ユーザー側のアテンションの分離と、
AI側の確率的/決定論的制御の分離が、
結果的に同じ構造になっている...」
→ 人間の具体的な経験から始まり、構造的な理解に到達し、
さらに予想外の洞察(人間側の認知とAI側の構造の対応)が生まれる。
これはどちらか一方だけでは辿り着けない。
二つの違いは明確だ。授業モデルでは、AIが持っている知識の範囲内で情報が提供される。対話モデルでは、人間が持っている文脈とAIの構造化能力が掛け合わさって、どちらの頭の中にも最初はなかった発見が生まれる。
実は、本稿自体がこの対話モデルで作られている。筆者がAIとの対話の中で「ステートレスとは何か」「Hooksはなぜ決定論的なのか」「Harnessとは何か」を順番に議論し、議論の過程で構造図や概念整理が生まれた。最初から「この内容を書こう」と決まっていたわけではなく、対話の中で構造が発見されていった。
なぜ後者が効果的なのかは、本稿で述べるアーキテクチャを理解すれば明確になる。先に結論だけ述べておくと、AIの出力品質は、コンテキストウィンドウに何が入っているかで決まる。「教えて」だけではコンテキストが貧弱で、汎用的な回答しか返せない。自分の思考、前提、文脈、判断根拠を十分にぶつければ、AIの応答精度は劇的に上がる。