近年、LLMの使い方は大きく2つに分かれてきています。
1つは
Claude CodeのようにAIにコードを書かせて実行する方法
もう1つは
プロンプトによって直接答えを出させる方法
どちらも非常に強力で、実務でも急速に広がっています。
しかし、ここで1つ重要な問いがあります。
👉 そのシステムの「判断」はどこに存在しているのか?
プロンプト型AI — 判断しているように見えるが存在しない
例えば、次のようなプロンプトを考えてみます。
この取引は不正ですか?Yes or Noで答えてください
しかしこのとき、
-
判断基準はどこにも明示されていない
-
なぜその判断になったのか分からない
-
同じ入力でも結果が変わる
つまり
👉 判断は存在しているように見えるが、構造として存在していない
状態です。
Claude Code — 判断が固定されたように見えるが実は同じ問題
では、Claude Codeのようなコード生成AIはどうでしょうか。
例えば、
「不正検知のロジックを書いて」
と依頼すると、次のようなコードが生成されます。
if score > 0.8: freeze_account()
しかし実際には
-
なぜ0.8なのか分からない
-
誰が決めたのか分からない
-
どの条件で変更されるのか分からない
つまりこれは
👉 判断ではなく、判断のように見えるテキストの固定化
です。
共通する問題 — 判断の所在がない
プロンプトとコード生成は、一見異なるアプローチですが、
本質的には同じ問題を抱えています。
| 方法 | 状態 |
|---|---|
| プロンプト | 判断が暗黙的 |
| コード生成 | 判断が偶然固定される |
どちらも
👉 判断の責任・根拠・変更履歴が存在しない
解決策は「ツール」ではなく「設計構想」
ここで重要なのは、
👉 Claude Codeを使うか、プロンプトを工夫するかではない
という点です。
必要なのは
👉 判断をどのように存在させるかという設計構想(メタ構造)
です。
判断を外に出すというアーキテクチャ
判断はLLMの中に置くものではなく、
外部に明示的な構造として持つ必要があります。
その基本構造は次のようになります。
Ontology → 意味の定義 DSL → 判断条件の定義 Behavior Tree → 実行構造
IF fraud_probability > 0.8 THEN freeze_account ELSE allow_transaction
-
判断基準が明示される
-
変更が可能になる
-
バージョン管理できる
-
監査できる
LLMの正しい役割
では、LLMは何をするのか?
答えは明確です。
👉 LLMは判断する存在ではない
👉 判断を支援する存在である
具体的には:
-
Signal(スコア・要約)の生成
-
Ontologyの提案
-
DSLの生成支援
-
判断理由の説明
つまり
LLM = 判断エンジン ではなく LLM = 判断構造の補助エンジン
プロンプトとClaude Codeの正しい位置づけ
ここで初めて、プロンプトとClaude Codeの役割を整理することができます。
まず、それぞれの本質的な役割は次の通りです。
プロンプト
👉 判断構造を「考える」ためのツール
-
判断基準の言語化
-
構造の整理
-
代替案の比較
Claude Code
👉 判断構造を「実装する」ためのツール
-
DSLパーサの生成
-
Behavior Tree実行器の構築
-
Decision Traceの保存
-
APIやUIの生成
プロンプト × Claude Code — 組み合わせて初めて成立する
ここで重要なのは、
👉 この2つは対立するものではなく、組み合わせることで初めて意味を持つ
という点です。
なぜなら、それぞれ単体では明確な限界があるからです。
なぜ単体では不十分なのか
プロンプトだけの場合
プロンプトを使えば、
-
判断基準は整理できる
-
構造の説明もできる
しかし、
-
実行系にならない
-
システムに固定されない
-
ログとして残りにくい
👉 設計はできるが、動かない
Claude Codeだけの場合
Claude Codeを使えば、
-
実装はできる
-
システムとして動く
しかし、
-
判断基準が暗黙になる
-
コードに埋め込まれる
-
なぜその判断になったか分からない
👉 動くが、なぜ動いているか分からない
組み合わせると何が起きるか
この2つを組み合わせることで、
👉 設計と実装が分離されたまま接続される
ようになります。
これは非常に重要な構造です。
実際の流れ
Step 1:プロンプトで判断構造を設計する
-
不正検知の判断基準を整理
-
リスクレベルのOntologyを定義
-
DSLとして条件を表現
-
Behavior Treeの分岐を設計
ここでのポイントは、
👉 判断をコードにする前に、言語として外に出すこと
です。
Step 2:Claude Codeで構造を実装する
-
DSLパーサを生成
-
Behavior Treeランナーを生成
-
Decision Traceの保存処理を実装
-
APIとして外部公開
ここで重要なのは、
👉 すでに定義された判断構造を壊さずに実装すること
です。
この分離がもたらすもの
この構成により、システムは次の性質を持ちます。
1. 判断がコードから独立する
-
DSLとして外部管理される
-
変更が容易になる
2. LLMの役割が明確になる
-
設計支援に集中できる
-
実行責任を持たない
3. システムが説明可能になる
-
判断理由が追跡できる
-
Decision Traceとして保存される
最も重要なポイント
ここで最も重要なのは、
👉 プロンプト → Claude Code の順番で使うこと
です。
この順番を守らない場合、
-
Claude Codeが暗黙のロジックを生成する
-
後から説明を付けるだけになる
結果として、
👉 判断が再びブラックボックスに戻る
しかし、この構成にも落とし穴がある
ここが非常に重要です。
👉 設計構想がない状態で使うと、プロンプトもClaude Codeも判断を埋め込んでしまう
プロンプトの場合
→ 会話の中に判断が消える
-
その場では説明できる
-
しかし構造として残らない
-
次の実行では再現されない
Claude Codeの場合
→ コードの中に判断が固定される
-
一見すると明示的に見える
-
しかし根拠や変更履歴が分からない
-
暗黙の前提が埋め込まれる
つまりどちらも最終的には、
👉 判断を再びブラックボックスに戻してしまう
本当に重要なもの
ここで結論です。
重要なのは、
-
プロンプトでもない
-
Claude Codeでもない
👉 判断を外部に存在させる設計構想(メタアーキテクチャ)
です。
なぜこれが重要なのか
この違いは、単なる技術選択の話ではありません。
これは
👉 AIに責任を持たせられるかどうか
という問題です。
判断が構造として存在しない場合
-
再現できない
-
改善できない
-
監査できない
-
責任が取れない
つまり、
👉 AIは使えても、システムとしては成立しない
結論
-
プロンプトは判断を「語る」ことができる
-
Claude Codeは判断を「実装する」ことができる
しかし
👉 どちらも判断そのものにはなれない
最後に
これからのAIシステムは、
「モデル中心」ではなく
👉 判断構造中心
へと移行していきます。
そしてLLMはその中で、
👉 判断を担う存在ではなく、判断構造を支える部品
として使われるようになります。
👉 重要なのはツールではなく、判断をどこに存在させるかという設計構想である。
AI/IT技術全般およびそれらを使ったビジネス立案に関してアドバイスいたします。お困りごとがあればご連絡ください

コメント