キャラチャットで同じプロンプトで3つ台詞だして、良いのをfunction calling的に選択させるプロンプト、効果が多少あるかな程度で、応答速度を犠牲にするまでのものかは疑問。結局は評価も同じモデルでやるから、うまく最良の選択ができてない感じ。論理エラーの検出が一番したいことなのに、それが一番苦手な感じ。ちょっと戦略を立てよう。

台詞で矛盾が起きやすいのって、台詞が複文になるときが多い印象。

つまり、
ユーザー「今日は良い天気ですね」
AI「そうですね。でも雨が降っていますよ。」

こういうの。しかし、この文章のおかしさを、この台詞を出力させたモデル自身に判定させるのは厳しい。

「そうですね。」のような、返答の最初の文はおかしくないことが多い。となると、最初の文は敢えて選択せず、出力をそのまま採用し、これに続く文を3つ出力して、それを選択させてみようかな。

選択プロンプトとしては、

ユーザーが「今日は良い天気ですね」と発言しました。これに対するAIの返答としてもっとも適したものは、どれですか?

①「そうですね。でも雨が降っていますよ。」
②「そうですね。過ごしやすい気温ですね。」
③「そうですね。良かったですね。」

のようになる。これだと変な台詞を検出しやすくなるのではないか?
台詞全体を3個出力するよりコストも安いしな。試す価値あり。

で、この手法の良いところは、最初の出力文は台詞として確定するので、出力したら即座に音声合成に送れる。そうやって合成した音声を再生している隙に、後続文の推論、選択、音声合成をやる、ということが可能になってくる。これで台詞の精度を上げつつ(上がればいいな)、応答速度も低下しない。

こういう「編集者プロンプト」で台詞選択をするのもいいが、いっそCoTでもいいかもなぁ。

台詞の最初の文は通常通り、台詞として、小説文の補完文として得る。それに続く台詞は小説の登場人物によるCoTを行う。
こうすることで、応答速度と思考による精度向上の両立が取れるのでは。

台詞の最初の1文補完→キャラのCoTによる後続台詞文生成x3→編集者プロンプトによる選択
みたいなのもアリだな。ここまでやるとさすがに2文目以降の出力遅延が気になるレベルになるか?

でもローカルLLMでkv cache使えば割と現実的な推論コストでやれるんよな、これくらいならね。

フォロー

やっぱキャラチャットでCoTすると微妙になるなあ。台詞がいかにも「考えたもの」になってボットじみたものになる。いやまあ考えさせるのだから当たり前だが。
会話なんて考えなしにする方が良いんだろう。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。