今日も今日とてLLMネタ。
少し前に話題に上がってたこの記事を読んで、最初は「結局ツール用途ごとに特化したシステムプロンプトを用意しておいてそれを通せばリターン良いのは当たり前でしょ」程度にしか思っておらず、むしろreasoningにおけるコンテキストの消費を外部化して抑制することのほうが本質的によいリターンに貢献するのでは程度にしか考えていなかった。エージェントモードにおけるAPIコール数と同じくらいコンテキストサイズの肥大化にも悩まされていたので。
あと当初rulesが少ない小規模なコードベースでしか試していなかったのも誤解の元というか良くなかった。処理させるに当たり前提知識や条件が少ない場合は当然恩恵が少ない(と記事にも書いてある)わけで。
先日のエントリでmcpについておおよそ理解していたこともあり、他人のコード動かしてうわっつらだけ把握するのでなくちゃんと自分で書いてみることにしたのが昨晩。
そしていろいろ触りながら調整していくうち「roleごとにthinkプロンプトを変えることで比較的コスパよく良いリターンを得られるのでは」と思い至った。冒頭記事の think + prompt ほどではないがそれに近いリターンをお手軽に得られるのではないか、と。
で書いたコードが以下
今のところ coder と architect の2つのroleを用意している。
ちょうど直近話題になってた Boomerang Mode がそのままではどうもAPIコール数的にもコンテキスト肥大的にもイマイチでリードタイムも長めになってしまい難儀していたのだが、これならコスパよく比較的長めのセッションでもなんとか質の維持に貢献してくれるのでは、と期待している。使い込んでみないとわからないがコンテキストが少し増える以外には特にデメリットはないし。
学習データの都合か油断するとすぐ手続き脳で突っ走ってしまう関係上、強めで再現性の高い TDD role がほしいと最近思っていたので TDD 向けのthinkプロンプトとかは用意しても良いかも知れない。