(承前) ……。 他にこの本には時代的制約があったのかな…とも思った。私の…
jrf> (承前)
……。
他にこの本には時代的制約があったのかな…とも思った。私の MemoryBanditWorkflow では豊富なツールを用意して、特殊なツールを使うのを検知して状態遷移させる。subwork_done か subwork_not_done かのどちらかをサブワークの最後に呼ぶようにさせてそれで条件分岐をさせたりもしている。全体チェックのときもそういう感じなので、ステートを多く分ける必要がない。
また、Structured Output をまるで知らないかのように、それが必要なときは私は、ツールに Structured な引数を渡して呼び出すことをさせている。それで状態遷移が必要なら、そのツールを呼んだことを app.stream から検知してそこで止めて状態遷移みたいなことをする。
そこからすると LangGraph のステートで一々止まっているのはかなり冗長に感じた。ツール実行がいろいろ難しすぎる。その辺、かつては、ツールの登録数が制限されていたり、ツールの利用が安定的でなかったころのなごりが、今回の本にはかなりあるように読んだ。
……。
サブタスクに分けるのは、並列で実行させるには必要なことだが、LLM にそれをやらせるのは安定的でないように思った。
私も RAG エージェントでは、1章づつ処理させるよう指示するようにした。それは MemoryBanditWorkflow 的 Brain が、記憶処理をループのはじめに行うようにしたため、粒度を小さくしたほうが、Brain 的処理が多くなると考えたからである。
より汎用には、小さなサブワークが完了したと AI が判断したら subwork_done を呼ぶように指示して、そこでループさせ、Brain 的処理を挟み、最後は mainwork_done を呼ばせて終了する…だけのプログラムを書けばいいのかな…と思うが、それで、いろいろなタスクが動くのかは自信がない。
……。
このように、私がやったことを振り返るのによかった他、この本には、どういうライブラリが使えるかでも参考になった。例えば、Elasticsearch のオープン版を docker で使ったりというのは、Colab での制限もある中、試してなかったことで、それが一般には割と手軽にできそうだとわかっただけでも収穫であった。
一方、エージェントの評価という最後の章のほうの情報は期待していたものとは違った。評価によって、エージェントのファインチューニングや学習などをどう行うかに関心があったのだが、そういうものとは違い、あくまで人間による評価の話題が中心だった。
とはいえ、不満と言えばそれぐらいで、この本は買ってよかったと思う。