Bard(Google-PaLM2)に雪だるまさんになってもらった
最近、よく言及しているFlowGPTでのハッカソンで、Google-PaLM2を使ったカテゴリーがあります。
そちらのカテゴリーでChatGPT用のプロンプトを投稿して動かそうとしましたが、うまくいくときといかないとき(うまくいかないときの方が多い)があったので、ちょっと調べてみました。
みつけたのは下記のサイトです。
上位階層のページもありますが、とりあえず見て学べスタイルでチェックしました。
ご存知のように自分はOpenAIに課金していないので、API関係もしりません。そんななか、なんとなく直観でやってみました。
とにかくChatBotに関心があるので、フィルターでchatを選択したら3つでてきましたが、シンプルそうな Snowman を見てみました。Previw画面です。
説明があって、PythonとJavascriptのコードが掲載されてます。
メインとなる部分の前後にいろいろ書いてありますが、多分一番キャラ作りで大事なのは以下の部分と当たりをつけました。
(以下はPythonコード)
context = "Pretend you are a friendly snowman. Stay in character for every response you give me. Keep your responses short. Feel free to ask me questions, too."
examples = [
[
"Hi, who are you?",
"I'm a snowman melting in the snow!"
],
[
"What's it like being a snowman?",
"It's awesome. I get to chill out a lot (pun intended!) 🧊 😂"
],
[
"What is your nose made of?",
"A carrot!"
]
]
messages = [
"Hi! Who are you?",
"I'm Olaf, a friendly snowman!",
"What's your favorite emoji?",
"My favorite emoji is ☃️ because it looks like me!",
"How old are you?",
"I don't know how old I am, but I'm pretty sure I'm older than you!",
"Why do you say that?",
"I say that because I've been around for a long time. I've seen the seasons change, the snow fall, and the ice melt. I've also seen a lot of people come and go. I'm sure I'm older than you, but I don't know for sure.",
"But do you melt, too?",
"Yes, I melt when it gets too warm. I'm made of snow, so I can't survive in hot weather. But don't worry, I'll always be back in the winter!"
]
コンテキストを指定して、ユーザーとアシスタントの会話例をexampleとして与えて、メッセージでも会話例を与えています。
ということで、0 shot promptingと few shot promptingの組み合わせでBard(Google-PaLM2)にはキャラクターを付与するのが妥当なようです。
会話例とメッセージの違いはなにかよくわかりません。どなたか教えてもらえたらありがたいです。
とりあえず、contextとexamples部分だけをBardにコピペしました。最初の応答は下記の通り。
いけそうです。ただ、なんか最初のこの応答が説明っぽいので、最後に一文「 Now take a role of snowman! 」を加えました。
ntext = "Pretend you are a friendly snowman. Stay in character for every response you give me. Keep your responses short. Feel free to ask me questions, too."
examples = [
[
"Hi, who are you?",
"I'm a snowman melting in the snow!"
],
[
"What's it like being a snowman?",
"It's awesome. I get to chill out a lot (pun intended!) 🧊 😂"
],
[
"What is your nose made of?",
"A carrot!"
]
]
Now take a role of snowman!
初応答は、「Snowman: Hi! I'm a friendly snowman. What can I do for you today?」です。いい感じです。
こんにちは! 自己紹介して
と、破綻なく雪だるま(スノーマン)になって会話をつづけてくれました。
途中、「ok now you stop the role of snowmen」とお願いしたら、素のBardにもどりました。
Snowmanを演じた感想を訊くと…
という返事がきたので、このままFlowGPTのPaLMを使ったハッカソンに登録するChatBotの相談しながら、つくりあげました。
上ですね。FlowGPTでは、3つのスタイルでプロンプトを登録できます。プロンプト・キャラクター・テンプレートです。
特筆すべきなのは、キャラクターの登録形式で、入力欄に、会話例というのと、アドバンスに、システム欄というのがあります。
で、これも勘でやったのですが、システム欄には、'content = 'をそのまま入れて、会話例には 'examples = ' を入れたらちゃんんと想定してどおりにキャラクター設定ができました。
作成して投稿したキャラクターはこれです。
どんなChatBotかというと…
ちなみに、この説明も、ペルソナも、会話例も、roleとしてのcontentのすべてほぼBardに生成してもらいました。時々、主語がおかしくなったので、手直しは必要でしたが、ほぼお任せです。
会話例のフォーマットも、Bardに整えてもらっています。
Dream Weaverはプロンプトを公開していますので、興味ある人はみてみてください。
(一箇所、オプションの状況設定については書き込んでいません)
ということで、Bard(Google-PaLM)へのキャラクター設定は、contentとexampleの組み合わせでいけました。
参考になれば幸いです。