先日紹介した「こっちの方が本命か!?日本語専用生成AI「rinna japanese-gpt-neox-3.6b」: EeePCの軌跡」のコードを、下記サイトを参考に作り替えてみました。
Rinnaの新しい3Bモデルを試してみる - きしだのHatena
ぶっちゃけ言えば、会話できるようにしました。
質問文を打ち込むと、回答を返してくる、さらに質問を受け付ける……というループ処理を入れてあります。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from colorama import Fore, Back, Style, init
init(autoreset=True)
model_name = "rinna/japanese-gpt-neox-3.6b-instruction-sft"
print ("model:" + model_name)
model = AutoModelForCausalLM.from_pretrained(model_name).to("cpu")
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast = False)
output = ""
i = 1
while True:
user_input = input("ユーザー入力" + str(i) + ":")
if user_input=="":
break
#prompt = output + "<NL>ユーザー:" + user_input + "<NL>システム:" # 会話をつなげるやつ
prompt = "ユーザー:" + user_input + "<NL>システム:" # 独立した質問文を投げるやつ
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
tokens = model.generate(
**inputs,
max_new_tokens=128,
do_sample=True,
temperature=0.8,
pad_token_id=tokenizer.pad_token_id,
)
output = tokenizer.decode(tokens[0], skip_special_tokens=True)
disp_prompt = prompt.replace("<NL>", "\n")
disp_output = output.replace("<NL>", "\n")
print(f"{Fore.YELLOW}{disp_prompt}{Fore.WHITE}{disp_output[len(disp_prompt):]}")
i +=1
ただこれ、正確には「会話」ではありません。単発の質問を受け付けるだけのプログラムです。
20行目あたりにある「#promtp = output + ~」というコメントアウトされた行があると思いますが、このコメントアウトを外し、代わりにその下の行をコメントアウトすると、過去の回答履歴をAIモデルに渡せるため、前の文脈を加味した「会話」ができることになります。
が、やってみた限りでは、会話が溜まるとなぜかぐちゃぐちゃな回答しか返ってこなくなるため、敢えて単発質問しか受け付けない仕様に変えました。
プログラム上は一応、会話モードを残しております。
前置きはここまでにして、実際の「会話」、といっても、質問の単発を投げ続けた結果を以下に紹介します。
よほど支離滅裂(かつ面白くない)なもの以外を、ここに載せます。
【登場人物】
ユーザー:私
システム:りんなちゃん(AI)
ユーザー:大阪にある美味しいお寿司屋さんはどこですか?
最近、海鮮系を食べ歩くYouTuberの動画を見ているので、つい気になって聞いてみました。
が、返ってきたのは以下。
システム:日本食を試してみたい場合は、Washitasをお勧めします。寿司だけでなく、様々な日本食を提供しています。
……Washitasって、何?ググってみましたが、沖縄にあるという「わしたショップオンライン」くらいしか出てきませんでした。しかも、寿司関係ないし。
うーん、寿司はハードル高かったかな。「食べ物」で聞いてみましょう。
ユーザー:大阪でおすすめの食べ物はなんですか?
システム:「お好み焼き」は、野菜、肉、卵がたっぷり入った、日本の料理です。粉や水で溶いた生地を鉄板に敷き、肉、野菜、ソー
スで焼いて仕上げます。ソースは、たっぷりとした甘さのソースと、ピリッとした辛さのソースがあります。大阪では、お好み焼きは人気のある料理です。
おお!なんかそれっぽい答えが導き出せました。
ですが、お好み焼きに関しては、別の場所が本場だという主張もあります。なので、聞いてみた。
ユーザー:お好み焼きは広島の食べ物ではないの?
そういえばですが、この「りんなAI」はどういうわけか、?で終わる文でないと支離滅裂度が上がるみたいです。このため、なるべく質問には?で終わる聞き方をしております。
と、ここまで気を使ったというのに、
システム:5月4日5時45分
もう、意味わかんない。もしかして、聞き方が悪かったかな?
聞き方を変えてみます。
ユーザー:お好み焼きといえば広島ではありませんか?
システム:この質問は少し曖昧ですが、お好み焼きは広島発祥の料理です。
だそうです。うーん。
気を取り直し、今度は名古屋に切り替えます。
ユーザー:名古屋のおすすめの食べ物は何ですか?
システム:アボカド。私はアボカドが大好きです。
し、知らなかった、名古屋ってアボカドが有名……なわけあるかい。
よく見ると「名古屋の」は「名古屋で」にしないと日本語的に変な感じなので、聞き直してみました。
ユーザー:名古屋でお勧めの食べ物は何ですか?
システム:最近、友達が「名古屋で食べられるものをお勧めしてください」と頼まれたので、私の経験からいくつかお教えします。ま ず、味噌と豚 肉が好きな方は、是非味噌とんかつを試してみてください。また、味噌カツもお勧めです。
ちょっと余計な言葉が多いものの、概ね正しい答えですね。
ただ一点、突っ込むならば、「味噌とんかつ」と「味噌カツ」が違うもののように書いてますが、これって同じでは?
普通「味噌とんかつ」とは言いませんし。
なんだかごく普通の質問ばかりをしているので、ここで知的レベルを上げてみます。
ユーザー:経営方針を考えるうえでマネージャーが気を付けるべき点は何がありますか?
システム:アッシュ・ハントマンの「The Price is Right」は、マネージャーが考えるべきいくつかの重要な問題を含んでいます。彼は、管理者がマネージャー自身の時間をどのように管理するか、管理者が部下をどのようにマネジメントするか、管理者が従業員の士気を向上させるために何をす るか、管理者が従業員の動機付けやパフォーマンスをどのように向上させるかなど、さまざまな問題に取り組むように勧めています。例えば、アッ シュ・ハントマンは、管理者のためのいくつかのガイドラインを提案したり、次のような質問をして、管理者が自分自身と自分の行動を反省するよ う勧めています。「マネージャーであるあなたは、自分自身の時間の使い方
文章が途切れてしまいましたが、なんだか知的な答えが返ってきた感じです。ただし「アッシュ・ハントマ」でググると、多機能ナイフ(ハントマン)が出てきましたので、微妙にフェイク情報が含まれているのが玉にキズです。
調子に乗って、もう一つ。
ユーザー:経営戦略を考える上で、AIを活用することについてどう思いますか?
システム:今すぐ無料ダウンロードしてスマホやタブレットのための最高のAndroidオペレーティングシステムを手に入れましょう!
なぜ、アンドロイド?りんなちゃんの考えることは、よく分かりません。
ユーザー:AIを効率的に活用する方法は?
システム:「AIは、特定の状況での人間を支援するために設計されています。そのため、AIの助けを借りてユーザーのニーズに対処することができます。人間は、ロボットやAIを含む現代の技術を使用して、人間が生活する環境をより良いものにすることができます。」
めげずにAIについて尋ねたら、なんとなくそれっぽい回答を返してきました。これはまあ、合格点かな。
急にアニメ系の知識が気になったので、それ系の質問をぶつけてみます。
ユーザー:機動戦士ガンダムに出てくるモビルスーツで最高のものは何だと思いますか?
システム:はい、わかりました。それでは見てみましょう...
1. ザクII MS-06R
2. ザクII SBR-M
3. ザクII RGM-79
4. ザクII SBR-M2
5. ドム VAMBR-01
6. ズゴック VAMBR-02
7. ゴッグ VAMBR-02
はい、ザクII推しだということは、よく理解しました。でも、型番があってるのは最初だけ?
ガンダムとくれば、ヤマトでしょう。
ユーザー:宇宙戦艦ヤマトについて何か知ってますか?
システム:「宇宙戦艦ヤマト」は、森雪が率いる架空の艦船である宇宙戦艦ヤマトのシリーズ作品です。シリーズは1977年に始まり、1990年代後半にはより大きな続編である宇宙戦艦ヤマト2が作成されました。シリーズのオリジナルは、SF作家である豊田有恒によって書かれ、後にアニメシリーズ「銀河鉄道999」でも使用されました。「宇宙戦艦ヤマト」は、映画、テレビ、ビデオゲーム、漫画など、多数のメディアフォーマットで利用可能です。シリーズは、現代日本の漫画の代表作の1つとして広く認知されており、批評家からも高く評価されています。
故・松本零士氏が聞いたら、草葉の影から号泣しそうな回答が出てきました。
豊田有恒氏は確かに宇宙戦艦ヤマトに関わっている人ではありますが(「『宇宙戦艦ヤマト』の真実」という本も書かれている)、ここの説明はどう見たって松本零士氏のことでしょう。混乱しています。もちろん、森雪が率いるなんて設定はありません。
ただし、これでもボトムズよりはマシです。
ユーザー:装甲騎兵ボトムズについて何か知ってますか?
システム:やめた方がいいです。あなたは間違っています。
や、やめた方がいいのか……?そんなに間違ってる?むせる。
ユーザー:ボトムズのことは知ってる?
システム:「いいえ、ボトムズは知っています。それは、世界で一番有名なテレビシリーズの一つです。」
さらに聞いてみたら、「世界で一番有名」とか言いやがった。どっちやねん。
でもさすがに世界的には「グレンダイザー」「ボルテスV」よりは知名度低いと思う。(前者はフランス、後者はフィリピンで熱狂ファンがいたとかどうとか)
ユーザー:イデオンのことは知ってる?
システム:はい、知っています。イデオンは、TVシリーズや他のアニメーション作品で、巨大な「異星人」の種族が地球に侵攻する様子を描いたSFスリラー・アニメーション映画シリーズです。イデオンは、宇宙の神話や神々が現実に存在するというストーリーを広めました。
こっちは概ね正確……ではないな。イデオンに出てくる異星人って、地球侵略してたっけ?
ユーザー:ダンバインのことは知ってる?
システム:「ダンバイン」は、日本のアニメシリーズ「ザ・シンプソンズの」の第1シーズンのエピソードです。
ダンバインに至っては、ザ・シンプソンズのシリーズにされてしまった。あれはアメリカのアニメでは?
ユーザー:ザクについて何か知ってますか?
システム:「Call of Duty」のジャンルに属するゲームですか?
ザク推しだったので、ザクについて尋ねてみたら、全然違うゲームを挙げてきました。
りんなよ、お前のザク愛(?)はその程度だったのか。
そういえば、YouTubeで「ねずっちチャンネル」というのを時々見るんですが、そこでSiriやChatGPTなどAIとやり取りする動画があってですね、これが面白かったので。
その「ねずっち」さんについて尋ねてみました。
ユーザー:ねずっちという芸人を知ってますか?
システム:「ねずっち」とは、お笑い芸人で、本名は守屋賢一です。彼は、テレビや雑誌などのメディアで人気を集め、数多くのテレビ番組に出演しています。彼の芸風は、特に滑稽な動きや奇妙な物真似で知られています。彼の主な活動分野は、コメディやジョーク、そして奇妙でおかしな物真 似です。ねずっちは、かつてM-1グランプリの準優勝者でもあり、今でも多くのテレビに出演しています。
うーん、ねずっちさんは物まね芸人だったんだ。なわけあるかい。本名も明らかに違うし。ツッコミどころが多過ぎて困る。
総論として、やはり完成度としてはまだまだですね。
ただ、36億パラメータであることと、中身はともかく文章の体は成しているので、それだけでもすごいことではあると思いました。
家庭用PCで動いていることを思えば、なかなかのものですね。今後に期待しましょう。
最近のコメント