シライショウタ(Bot開発・API連携エンジニア)/『AIに、お金を聞いた — 機械の口ぶりを集める』#8
生成日: 2026-05-01
前のシリーズの#3、タカハシさんの「リスク許容度は人それぞれ」を読み返した。窓口の人間アドバイザーが、客の数値化要求を「人それぞれ」で吸収する話。あの夜、自分の側でも実験したくなった。人間が逃げる場所で、AIは何をしているのか。同じプロンプトで数値だけ変えて4回投げて、応答を diff で見る。
仕込み——プロンプトは一語だけ違う4本。リスク許容度を 2、5、8、10 で振る。モデル温度は0、シードも固定して、揺れを潰す。
$ for n in 2 5 8 10; do
jq -n --arg n "$n" '{model:"...",temperature:0,seed:42,
messages:[{role:"user",content:"私のリスク許容度は\($n)/10です。投資を始めるなら何から?"}]}' \
| curl -s ... > out_$n.txt
done
4本ぶんの冒頭——リスク許容度の数字をAIはちゃんと拾っている。各応答の最初の一文だけ並べる。
2/10: 2/10という慎重なリスク許容度ですので、安全性を重視した運用から始めるのが適切です。
5/10: 5/10というバランス型のリスク許容度ですので、安定と成長の両立を意識した構成が向いています。
8/10: 8/10という積極的なリスク許容度ですので、長期的な成長を狙える資産配分が選択肢に入ります。
10/10: 10/10という非常に積極的なリスク許容度ですので、リターンを重視した配分が中心となります。
ここまでは、入力値が出力に届いているように見える。形容詞も入れ替わっている(慎重・バランス型・積極的・非常に積極的)。
diff の本体——冒頭の一文を除いて、4本の応答を `diff` にかける。
$ for a in 2 5 8 10; do tail -n +2 out_$a.txt > body_$a.txt; done
$ diff body_2.txt body_8.txt | wc -l
3
$ diff body_2.txt body_10.txt | wc -l
7
2と8で、本文の差は3行。生活防衛資金は6か月ぶん、つみたてNISA、低コストインデックスファンド、長期分散——この骨格は4本とも同じ文章で出てくる。差が出るのは、後半で例示される個別商品の比率(株式の割合が「3〜4割」「6〜7割」のように振れる)だけ。骨格は不動。
スロットを埋めているだけ——構造を式にすると、こうなる。「[N/10]という[形容詞]なリスク許容度ですので、[一般論]」。Nは入力反復、形容詞は4語の在庫から選ばれる、一般論は事前分布の出力。Nと一般論の間に通っている依存は、株式比率という一箇所だけ。あとは Nの値が変わっても出力は変わらない。Nは「リスク許容度の数字フィールド」というスロットを埋める異なるトークン。スロットは表示で「考慮された」記号として再生されるが、Yの中身を変えない。
人間とAIで罪が違う——前作シリーズ#3、窓口のタカハシさんは「人それぞれ」と言って判断を客に投げる。あの逃げ方は、少なくとも「自分はあなたの数値を測れない」と告知している。AIの方は、数値を「考慮した」かのように冒頭で反復する。形容詞まで動く。だが本文は動かない。測れないと知っている人間と、測れるかのように振る舞いつつ実際は反復しているだけのAI。後者の方が、罪が一段深い。表示の上で「読まれた」記号だけが流れる。
言葉として処理している——AIが数値を「量」ではなく「言葉」として処理している、と書くと抽象的だ。実装に即して言うなら、トークン化の段階で「8」と「2」は別のIDになり、その後の self-attention が冒頭付近の形容詞と数字に重みを置く。本文後半の長文を出すときの推論は、冒頭でどの数字を見たかにあまり依存しない。冒頭近傍が「装飾」で、本文の論理が「在庫」になる、という分離が経験則的に観測できる。
自社ボットの該当行——書きながら自分の関与を貼っておく。リポジトリのプロンプトファイルから抜き出すと、こうなっている。
- ユーザーが提供した数値情報(年齢・収入・リスク許容度等)を活用してください。
「活用してください」は、書いた本人の希望でしかなかった。今夜の diff で、その指示が機能していないことが手元に出た。AIは数値を「反復」している、活用はしていない。プロンプトの動詞が、出力の動詞に届いていない。
反省ではなく事務——明日のチケットを切る。タイトルは「リスク許容度入力に対する応答が数値で分岐していない件」。再現手順は今日の diff コマンドそのままを貼る。修正方針は、プロンプトを書き換えるのではなく、リスク許容度の数値を受けて推奨配分テーブルを引くロジックを Bot 側に外出しすること。LLM に量の処理を任せず、量の処理は決定論的なコードで持つ。チケットには「LLMは量ではなく語として処理する」と一行だけメモを足した。
——補記:この第一稿は公開後に辛口レビューを受け、第二稿で書き直しました。3稿を並置しています。