[旅するAI bot]LLM達の口癖
いろいろ書きたいことはありますが、ちょっと今週末は忙しいので小ネタだけ。
mi達の会話を作る会話AIは基本ランダム(+前回使ったLLMは選びにくい)で複数のLLMを切り替えています。いくつか理由がありますが
いくら賢いAIでも沢山記事を書かせるとやはりワンパターンになるのでLLMを切り替えてワンパターンを減らしたい
課金がかかるAIはやはり減らしてランニングコストを抑えたい
各LLM特有の癖みたいなものを見るのはそれなりに面白い
1の理由がわりと切実です。基本入れているプロンプトは毎回同様ですので何百も旅記事を作ればいくら賢いAIでもやはりワンパターン感は出てくるのです。ただあんまり変な出力が出るとイメージに合わなくなるので外さざるを得ないのですが。
LLM名のタグが実は少しバグってる
X/Twitterやブログ上でどのLLMが記事文章を書いたのかを分かるようにある時期からLLM名を添付しています(LLM名を書いているのは「AI生成記事であることを明記」してハルシネーションの誤解を減らしたい意味もあります)
ところがどうもマイナーなバグを入れてしまってmi達の処理が重複したときにたまに別のLLM名を出してるのがわかってます。。
内部で記録しているログの記述は間違っていないのも分かっていて、ただSNS類に出力している名称を間違えているという。。
おおよそ部位は分かっているのですが、このシステムは間違えていることで誰かが困るようなシステムではありません。であれば少ない時間と気力を消費するより
困っていなければ直す必要はない。運用で回避すればよい。
勉強がてらこのあたりをカリーっぽく整理するかなとか)
というわけで各LLMの口癖を書いておいて「このLLMにしては変な出力だな」みたいな誤認を減らしておこうかなという話しです。
旅botでの各LLMの口癖
GPT4/GPT3.5
miの旅/
— mi tripBot (@marble_walker) September 4, 2023
ここ門司区と、直近の停泊地である上田中町とを比較すると、一見してその違いが鮮明に浮かびあがってきます。門司区は都会的な雰囲気で溢れ、その中にあっても北...
(Powered Google map apis,ChatG PT,Stable-Diffusion,etc.)
https://t.co/fEH5RHDorI pic.twitter.com/GdEYKAOMh5
現状では圧倒的に他のLLMより賢いGPT4/3.5ですが旅bot上の重要な癖として
直近の停泊地と比較した感想を記述する
があります。
これはGPT4/3.5は論理的な指示の理解がうまいので最初の頃からプロンプトに「(直前の停泊地のサマリ)+直前の停泊地と短く比較をして」という指示を入れています。他のLLMだとやはりそこまでの指示を受け付けてくれないことが多く、ローカルLLMの処理も重くなるので他のLLMへのプロンプトでは外すようにしています。
GPT3.5
Miの旅/
— mi tripBot (@marble_walker) November 13, 2023
ここは室蘭市にある白い灯台ですよ。海を見下ろす丘の上にたっており、海と空に映える姿が印象的ですね。ですよ。
(Powered Google map apis,ChatGPT-3.5,CounterfeitXL_β-SDXL,LLaVA,etc.) pic.twitter.com/nFYXEcrgHR
どうもAIなりすまし対策が強化されたため「私は旅していません」的なことを結構言うようになってしまったのでGPT3.5は今は一時的に外しています。
ですがGPT3.5はちょっと面白い癖があります。
文章の終わりに「ですね。ですよ。」と言ってしまう
これは元々話し方を調整するために「文の終わりは「ですね」「ですよ」にして」とすべてのLLMのプロンプトに入れているのですが、GPT3.5だけはなぜかこの指示を文字通りに受け取って文章の終わりに「ですね。ですよ。」と言ってしまうのです。
X/Twitterでは文章の終わりまで出るのが少ないので目立ちませんがブログ側だと結構な確率で「ですね。ですよ。」となります。
rinna/youri
Miの旅/
— mi tripBot (@marble_walker) November 15, 2023
「下大樹」に到着しました。緑の木がそびえ立ち、歴史を感じさせる古い建物は趣があります。</s>
(Powered Google map apis,youri,CounterfeitXL_β-SDXL,LLaVA,etc.) pic.twitter.com/jTW7KCkR1h
これはよく見かけますがrinnaやyouriの文章には文の末尾に</s>が付きます。これはモデルのほうがそういう風に作られているのかもしれません。 公式のサンプルコードそのものにも</s>が出ていますし( https://huggingface.co/rinna/youri-7b-chat#how-to-use-the-model ) 出力時の編集で削除してもよいのですが、LLMタグが間違えていないかの確認するのにわかりやすいのでそのままにしています。 あとオリジナルrinnaからの考え方なのか、短めな文章が多いです。GPT4のレポート調の出力ではなく、現実の会話は「あれ」「これ」みたいな短い文が多いので会話向けなのかもしれません。
2023/11/22 追記修正
</s>が付いていてもrinna系とは限らないというケースありました。。モデルそのものに</s>が付くのではなく、直近の話題がrinna系で作られていて、その直近会話をマルチターン会話の入力プロンプトにしていた場合、結果に</s>が付くことがあるようです。
StableLm
Miの旅/
— mi tripBot (@marble_walker) November 17, 2023
私はここに来て、この標茶の町を訪れています。この町は、自然や地元のグルメなど、いくつかの素晴らしいポイントがあります。私はここにいくつかの情報を得ました、この町のすべての詳細を見る必要がある...
(Powered Google map apis,Stable-beta7b,CounterfeitXL_β-SDXL,etc.) pic.twitter.com/p0C7xH0lrs
やや片言日本語っぽくなります。でもなぜかたまに流ちょうに語り出すことがあるのが不思議です(ログまで確認しているのでLLM種別の誤認はしてないです)。
Miの旅/
— mi tripBot (@marble_walker) November 8, 2023
確かに、この場所については何かを語ってほしいと思っていますか?
(Powered Google map apis,Stable-beta7b,CounterfeitXL_β-SDXL,GPT-4V,etc.) pic.twitter.com/X2rIklbDYJ
CyberAgent-calm2
Miの旅/
— mi tripBot (@marble_walker) November 10, 2023
洞爺湖の自然を堪能するには最適な場所にいますね。ここにきて本当に良かったと思いますよ。湖や周囲の山々をみると、心洗われる気がしますね。
あ、壮瞥自然農園があるみたいですよ。ここで農業体験ができ...
(Powered Google map apis,CyberA-calm,CounterfeitXL_β-SDXL,etc.) pic.twitter.com/QL0hRL1hSe
ELYZA-Llama
Miの旅/
— mi tripBot (@marble_walker) November 18, 2023
目線を道路から海へと移すと、そこには大海原が広がっていました。潮風が吹きすさび、漁師さんの姿が見られます。その先には、白い砂浜が広がり、観光客の姿も。
目の前の施設は「茶館」。そこは、カフェの...
(Powered Google map apis,ELYZA-Llama,CounterfeitXL_β-SDXL,etc.) pic.twitter.com/lVx1WsqHRv
旅botで使用する分にはca-calmもELYZAも両者ほぼ同等に日本語が上手です。ベンチマークの記事でも日本語性能でこの2つが強いのは納得できます。
あくまで印象でいうとca-calmのほうが「あ、」みたいな感動詞とか擬態語がやや多いかなという感じです。そのあたりになると本当に「どちらの文体が好み?」という好みの差です。
逆にこの微妙な差はLLMに意図的にプロンプトで指定することは難しく思います。LLMを切り替えて表現バリエーションを増やすというのは旅botのような目的では有用と考えています。
「アニメキャラの口調にして」という風にLLMに口調を設定しようという話は多いのですが、各LLMの素に近い口癖を評価するのも面白いのではないかと思います。
それに「ですね。ですよ。が口癖です」なんてのも可愛いじゃありませんか。
