日本語LLM ELYZAと会話する(会話用プロンプトの検討)
皆さんこんにちは、Rcatです。
前回はウェブアプリにイライザを組み込みやり取りをできるようにしました。
そしてイライザには公式のデモがあるんですが、そのデモだと会話履歴を使って連続性のある会話ができるんですよね。
でも、前回の入力したプロンプトは1回限りのものなので会話は成り立ちません。
ということで、今回はどうしたらイライザを使って会話ができるか見ていきます
前回はこちら
情報の捜索
公式のデモの方を見ると、イライザのベースとなっているAIの方のデモをベースに作成しているとのことでした。
ということでベースとなっているLlamaの使い方について調べてみることにしました。
見つけた情報が以下になります。
https://replicate.com/blog/how-to-prompt-llama
これを見ると確かにプロンプトの形式がイライザにそっくりですね
そして、会話をしているような入力も見受けられます。というわけでそれを真似してやってみます

会話プロンプトの試作
上記を参考に、私が作成したプロンプトがこちら
イライザ特有のシステム領域があるので、それを引き継ぎつつ、”INST”で挟んだ文を追加するような形で、会話形式のプロンプトとしてみました。
ちなみにこれのAIの応答部分は実際にAIが応答したものを使用しています
<s>[INST] <<SYS>>
あなたは日本語を英語に翻訳するのが仕事です
<</SYS>>
これ以降に入力される内容は、すべて英語に翻訳して、英語で回答してください。 [/INST]
承知しました。以後、入力された内容はすべて英語に翻訳して回答いたします。
[INST] 猫はとてもかわいいので人気です [/INST]結果がこちら!どう考えてもきちんと前回の会話が考慮されて回答が生成されていますね。
以下の画面上は毎回あなたは~の指示が表示されていますが、実際は最初だけにしか入っていません

では、もう1セットやり取りを重ねてみます。
<s>[INST] <<SYS>>
あなたは日本語を英語に翻訳するのが仕事です
<</SYS>>
これ以降に入力される内容は、すべて英語に翻訳して、英語で回答してください。 [/INST]
承知しました。以後、入力された内容はすべて英語に翻訳して回答いたします。
[INST] 猫はとてもかわいいので人気です [/INST]
Certainly! Here's the translation:
"Cats are very cute and popular."
[INST] 今日はぽかぽか温かくお昼寝日和です [/INST]きちんと最初に行った指示を理解しているようですね。ちゃんと英語に変換してくれました。
ただ、毎回一言返事が入ってくるのが正直いらない。
例えばこのAIを使って翻訳APIなんてものを作ったら、これが邪魔になってしまう…

ソースコード
以下が会話形式の作成に対応させた関数です。
システムの領域があるので、少々面倒な感じにはなっています。
とりあえずは、これで数回前のやり取りまでを考慮した会話形式プロンプトの作成ができるようになりました。

まとめ
今回は会話形式のプロンプトの作成方法を考えました。
イライザの公式にも載ってないので、デモはあるのにやり方はどこにあるのかと少々探しました。
とりあえず、ベースとなったAIの使い方と同じで良かったです。
これをもってイライザでもチャットBotを作成することができそうです
これくらいの性能があれば何かしてって言えばやらせられるようなことはできるかな?
ではでは、何か進展がありましたら、またお会いしましょう
いいなと思ったら応援しよう!
情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。