「LLM…
jrf> 「LLM のメモリ機能とバンディット機能の試験実装」を行った。迷路をゴールできなかったがツールのコンセプト実装としてはまずまず成功してると思う。 《experimental_bandit_tool_0.0.1.ipynb》 https://gist.github.com/JRF-2018/3663b76025004b1dd05c67fe81cce462 最近 LLM についてコンテクストエンジニアリングという言葉をよく聞く。実は Web でなく API から使う LLM は「ステートレス」で、会話などの記憶はデフォルトではしてくれない。会話を続けようと思ったら、メッセージをユーザー側で記録しておき、それをいちいち API に与えないといけないのだ。古い記憶を呼び戻したりするには、単純に記録するだけでなく検索基盤も必要となる。そのような基盤をひっくるめてコンテクストと一般的に呼んでおり、それをどううまく構築するかが問題となっている。 特にコンテクストのうち、記憶の基盤は単に「メモリ」と呼ばれている。PC のメモリなどとごっちゃになって、わかりにくくもあるのだが、そう呼ばれているのだからしかたがない。 前々回(experimental_memory_0.0.2.ipynb)、そのメモリ機能がどう動くか見てみると、なかなかそれを使ってくれないことが分かった。それについて悩んでいろいろ考えていたたところ、ChatGPT さんが記憶操作のバンディットマシンを作るのを提案してくれたので、前回(experimental_bandit_0.0.1.ipynb)それを実装してみた。そこからアイデアを得て、「バンディットに特定のツールを登録するツールみたいなのを用意して、どういうツールを強制して数を増やして欲しいかを AI さん自身が決められると良いのかも」と考えそういう「バンディット機能」を実装したのが今回になる。 そのアイデアの軌跡は↓にある。 [cocolog:95599211](2025年8月) 《AI (LLM) のメモリ機能について悩んで、最適化の際に記憶があればその報酬は独立的になるのでは…とか妄想していたら、それをモデル化する一例として ChatGPT さんが記憶操作のバンディットマシンを作るのを提案してくれた。 - JRF のひとこと》 http://jrf.cocolog-nifty.com/statuses/2025/08/post-c9aca1.html ところで、今回のような手法はすでにどこかにあるからこそ ChatGPT さんが提案できたのかもしれない。新規性がある話ではあまりないのかもしれないが、今回の試みが、何かの参考になれば幸いである。 ……。 前回のバンディットマシンは、read と write を強制してそれがいい具合になるよう学習するのを試みて失敗したのだが、今回は、read や write の強制を LLM さん自体がコントロールできるようにしてみた(学習はしない)。 特定のツールを予約するための bandit_schedule や特定のメモリを読むのを予約するための bandit_schedule_read をツールとして用意している。 ……。 結論。 Gemini 2.5 Flash さんは途中で迷ってゴールできなかった。Gemini 2.5 Pro さんも迷って、「壁が通り抜けられる」とか言い出した時点であきらめた。もう一度、Pro さんにお願いしたが、「不可視の壁」をなぜか発見してしまい、あきらめた。ただ、バンディット機能はちゃんと機能しているようだったので、ツールの実験としてはまずまず成功していると思う。 ゴールができなくなったのは、途中に read などが強制的にはさまって思考が中断されるからかもしれない。その点はもしかすると今後のエージェント的利用にとっては本質的問題になるかもしれない。 なお、再現性がないため、最初からの再実行はやっていないのはご容赦願いたい。コストもかかるしね (^^;。