1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

定型処理に判断を持たせると結果が揺れる——実行役を「考えさせない」構成にした理由

1
Posted at

こんにちは。作業に戻ろうとしてPCの前に座ったのに、気づいたらブラウザのタブ整理を始めて30分経ってました。ADHD社長です。

自作AIアシスタント「Jarvis」の実装寄りのメモです。この記事の主張は1つで、定型処理の実行役には判断を持たせないほうが、結果の再現性と検証のしやすさが上がる、ということです。AIエージェントの実装で、実行まわりをどう作るかの話として書きます。

現象:同じ依頼なのに、実行結果の細部が毎回違う

何が起きていたか

全部を1つの流れで処理していた頃、同じ定型処理でも、回によって手順の細部や出力の形が少しずつ違いました。致命的ではない違いです。ただ、違いがあること自体が、検証のコストを上げます。

前回の結果と今回の結果を比べる時、「この差分は異常か、それとも判断の揺れか」を毎回考えないといけない。差分の意味を判断する作業が増えると、定型処理を自動化したはずなのに、確認の手間が戻ってきます。

原因の切り分け

記録を追ってみると、揺れの発生源はおおむね次のどれかでした。

  1. 依頼の指定が曖昧で、実行側が不足分を補っていた
  2. 実行の途中に判断分岐があり、文脈によって進み方が変わっていた
  3. 完了の定義がなく、「どこまでやれば終わりか」が回ごとに解釈されていた

つまり、問題はモデルの賢さではなく、実行に解釈の余地が残っていることでした。解釈の余地は、そのまま揺れになります。

対処:実行役から解釈の余地を減らす

対処は、実行側の作りを次のように寄せることでした。

  • 入力は「対象を一意に決める指定」だけを受け取る
  • 手順は固定し、途中の判断分岐は外に出す(判断が要るなら止めて返す)
  • 出力は決まった形にし、完了条件を満たしたかどうかを外から判定できるようにする
  • 実行の記録は、依頼と結果が対になる形で残す

ここで大事なのは、判断分岐を「なくす」のではなく「外に出す」ことです。判断自体は必要なので、考える役の側に寄せる。実行役の中で判断が起きると、それは記録にも残らず、再現もできない判断になります。外に出した判断は、依頼文の形で残る。残る判断は、あとから検証できます。

実装の感覚としては、純粋な処理と、判断を含む処理を分ける、という昔からある話に近いと思います。新しさはない。ただ、相手がAIになると「ついでに考えておいて」と頼みたくなり、この分離が崩れやすい。意識して境界を守る必要がありました。

検証:揺れが減ると、何が楽になるか

この構成にしてから楽になったのは、異常の見つけ方です。出力の形が固定されているので、前回との差分がそのまま異常の候補になります。差分を見る、という単純な確認が効くようになりました。

もう1つは、直す場所の特定です。結果がおかしい時、まず依頼の指定を見る。指定が正しければ手順を見る。手順が正しければ、判断を外に出し損ねていないかを見る。この順番で追えるようになったのは、実行から解釈を抜いた副産物です。

もちろん、代償もあります。判断が要る場面では必ず一度止まるので、滑らかに全部が流れる感じはなくなります。止まる回数自体も、最初は増えました。ただ、止まった場所と理由が記録に残るので、止まり方を直すことはできます。揺れたまま進むより、止まって残るほうが、個人開発の体力では扱いやすかった、というのが現時点の結論です。

まとめ

  • 定型処理の揺れは、実行に残った解釈の余地から生まれる
  • 判断分岐はなくさず、実行の外(考える役)へ出す
  • 出力形式と完了条件を固定すると、差分確認で異常を拾える
  • 止まることは許容し、止まった理由を記録に残す

次回は、実行役を定期的に動かす土台側の話として、Windowsのタスクスケジューラとスクリプトを組み合わせた運用の基本形を書きます。

ADHD社長

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?