tegnike / aituber-kit

AITuber Kit
https://aituber-kit.vercel.app
MIT License
259 stars 54 forks source link

特定のローカルLLMでの発言数制限における問題 #78

Open JunzoKamahara opened 3 months ago

JunzoKamahara commented 3 months ago

特定のローカルLLM(具体的にはCommand R PlusやMistral系?)では、ユーザroleがuser/assistant/user/assitant/user/...という順序になっていないとエラーになるものがありました。その場合Bad Request 405が返ってきます。 調べてみると、発言履歴を10個だけ使っていますが、この場合「assitant/user」の5回繰り返しになります。先頭がassistantoなら良さそうなんですが、実は最初にsystem promptが入っているので、systemはassistanto相当になり、assistant/assitantと続くのでエラーになるようです。 単純にエラーをなくすだけなら、slice(-11)とかにすればエラーは出なくなります。 あるいは、この系統のLLMでは、system promptをuser roleに変更するとか(すいません、確認できていません)もありそうですが、モデル毎の設定を追加するのはちょっと面倒ですね。 src/pages/index.tsx:484 const messages: Message[] = [ { role: "system", content: systemPrompt, }, ...messageLog.slice(-10), ];

JunzoKamahara commented 3 months ago

あ、すいません、vllmのデフォルトチャットテンプレートを使用しているためかもしれません。vllm側で工夫すればいいのかな。

https://github.com/vllm-project/vllm/discussions/2112

tegnike commented 3 months ago

Issueありがとうございます!

おお、ローカルLLMにもAnthropic Claudeみたいな仕様のLLMがあるんですね👀

Claudeで下記のようなロジックを組んでるので転用できるかもしれません! 後ほど確認しておきます!

ちなみにですが、エラーの出るLLMの名前おしえてもらってよいですか?

JunzoKamahara commented 3 months ago

すいません、返事遅くなりました。CohereのCommand R Plus 70Bを量子化したものをvllmで動かしています。