有望な解は、「食事シーンになったら、メニューを考える演出プロンプトを動作させて、その出力をインジェクションする」だと思う。食事シーン判定、メニュー生成というプロンプトを余計に実行する必要はあるけど、kv cacheを生かせば大した計算量は要らんのでそこは問題ない。
メニュー生成には、
そこで出されたのは、①ハンバーグ ②カツ丼 ③カレーライスのどれですか?
という選択肢プロンプトでもいいけど、これだと選択肢を用意しなきゃいけないので、
そこで出されたのは、カ
みたいに、ランダムな頭文字を挿入して補完させる方式だと、低コストで、ランダム性が保て、モデルの知識を最大限に活用できるのでお勧め。
なお、「そこで出されたのは、カ」というプロンプトで「レーライスだった。」という補完文が得られたら、次に「そこで出されたのは、カレーライスだった。」をそのまま出力してユーザーに表示してもいいけど、「そこで出されたのは、カ」というLLM生成ではない文章が混じるのは避けたい場合がある。
そこで、
「今日のランチメニューにはなにかな?」
そこで出されたのは、カレーライスだった。メニューをお客に説明しよう。
ウェイトレス「
というようにプロンプトをインジェクションし、ウェイトレスの台詞だけ出力する、という手法がある。
まあ、CoTなんですけどね。プロンプトを動的にインジェクションしたり巻き戻したりするところが普通のCoTとは違う。