色々なLLMと日本語で話してみた

この記事は、Insurtechラボ202306アドベントカレンダーの19日目の投稿となります。

日本語で会話できるLLMが沢山でてきましたね!
「XXXという評価でChatGPTを超えた」というようなニュースを聞くと気になって仕方ありません。パラメータ数が7BくらいのモデルならローカルPCでも動かせそうなので、色々なLLMに日本語でプロンプトを投げて動かしてみることにしました。

前提

検証に利用したローカルPC

GeForce GTX 4090が7枚刺さった「BIG BOSS」みたいなやつは用意できませんので、、自宅に転がっているゲーミングPCを使いました。具体的にはこのくらいです。

項目スペック
CPUCorei7-13700F
メモリ128GB
GPUGeForce RTX 4070 Ti(12GB)
OSWindows11(22H2)
python3.10.6
  • モデル、インストールしたパッケージなどを含めて約100GBくらいのストレージを消費
  • このスペックのPCなので、動かす候補となったLLMは7b付近のものです

少し前のNVIDIA GeForceのドライバー(532.03?)から、VRAMオフロード(VRAMが足りなければメインメモリを使う)が実装されたようなので多少のオーバーならば動きました。ただ、性能劣化が激しいとか、最近のドライバーは画面真っ黒問題があって品質が怪しいので、まだドライバーのバージョンを上げていない方がバージョンアップする場合にはご注意ください。怪しい動きをしたら、直ちにロールバックです。

https://github.com/vladmandic/automatic/discussions/1285

利用したLLM

「あれが無いだろうが!」もあると思いますが、他意はありません。
私のローカルに転がっていなかっただけです(ストレージが足りない・・)。

できるだけInstruction Tuningされているモデルを優先して使用しました。

モデル提供元パラメ
ータ数
備考
1bilingual-gpt-neox-4b
rinna4b
2japanese-large-lm-3.6bLINE3.6b
3Weblab-10B東大
松尾研
10b
4ELYZA-japanese-Llama-2-7bELYZA7bLlama2派生。
5Llama 2 13B ChatMeta13bLlama2本体。GGUF版
6Xwin-LM 13B V0.1Xwin-LM13bLlama2派生。GGUF版
7gpt-3.5-turboOpenAI比較用。ローカルPCで動かない
8gpt-4OpenAIこれも比較用

検証のまえに・・・

検証の前提

会話ではなく、質問をして応答を返すだけ

会話をしながら文脈を追ってくれるかを見るつもりでしたが、LLMを増やしすぎて大変になったことと、言うことを聞いてくれないLLMがあったので、単発の応答だけにしました。

プロンプトの構成

システムプロンプトが応答の精度に大きな影響を与えるモデル(特にLlama2系)があったり、逆に与えると命令を聞いてくれなくなるLLMがありました。そのため、モデル配布サイトに書かれていたテンプレートや例を参考に以下のように設定しています。

bilingual-gpt-neox-4b
ユーザー: Hello, you are an assistant that helps me learn Japanese.
システム: Sure, what can I do for you?
ユーザー: (入力したテキスト)
システム:

いままで、text-generation-webuiなどのツールで全く会話にならなかったのですが、「ユーザー:xxx(改行)システム:」が必要だったことを初めて知りました。配布サイトをちゃんと読むべきでした。

japanese-large-lm-3.6b
ユーザー: (入力したテキスト)
システム:

bilingual-gpt-neox-4bと同じように入れると回答が良くなったので最小限にしました。

Weblab-10B
以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。

### 指示:
 (入力したテキスト)

### 応答:
ELYZA-japanese-Llama-2-7b
(tokenizer.bos_tokenの値)[INST] <<SYS>>
You are Assistant, a helpful, respectful, honest and highly intelligent assistant.
<</SYS>>
 (入力したテキスト)[/INST]
Llama 2 13B Chat
[INST] <<SYS>>
You are Assistant, a helpful, respectful, honest and highly intelligent assistant
<</SYS>>
 (入力したテキスト)[/INST]
Xwin-LM 13B V0.1
[INST] <<SYS>>
You are Assistant, a helpful, respectful, honest and highly intelligent assistant
<</SYS>>
 (入力したテキスト)[/INST]
Assistant:

最後に「Assistant:」を入れないと何故か会話してくれませんでした
Llama2はOKなのに。なんでだろう。

gpt-3.5-turbo、gpt-4
{"role": "system", "content": "You are Assistant, a helpful, respectful, honest and highly intelligent assistant."}
context.append({"role": "user", "content": (入力したテキスト)})

正確には、上記はopenai APIで投げる時のjsonフォーマットです。contentの中身は実際の文になります。

LLMの動かし方

Hugging Faceサイトにあったサンプルコードを見ながらpythonで検証コードを書きました。モデルによって利用したパッケージが違います。

利用したパッケージ対象モデル
transformersbilingual-gpt-neox-4b
japanese-large-lm-3.6b
Weblab-10B
ELYZA-japanese-Llama-2-7b
llama-cpp-pythonLlama 2 13B Chat
Xwin-LM 13B V0.1
openai
※API呼び出しです
gpt-3.5-turbo
gpt-4

LLMに渡すパラメータ

私が網羅的に知らないため、モデル配布サイトに書かれていたpythonコーディング例にあったパラメータを参考に、全てのLLMで同じになるようにしました。

パラメータ
temperature0.8
top_p0.95
max_tokens(プロンプト毎にどのLLMも同じ値を設定。長くすると異様に時間のかかる、tokenの隙間を埋めるように同じ言葉で埋め尽くすケースもあり、何度か流して調整しています)
do_sampleTrue(GGUF形式のモデルには無いパラメータです)
seed-1(GGUF形式のモデルのみ)

今考えると、同じ言葉をリピートしないようにみたいなパラメータを渡し忘れていました・・・

AutoTokenizerを使用するモデルでは、use_fastやlegacyの使い方に差があったため、以下のように設定しています。

モデルuse_fastlegacy
bilingual-gpt-neox-4bFalseTrue
japanese-large-lm-3.6bFalseTrue
Weblab-10BFalse(デフォルト)
ELYZA-japanese-Llama-2-7b(デフォルト)(デフォルト)

それから、上記4つのモデルはこれでモデルをロードしています。

model = AutoModelForCausalLM.from_pretrained(
  model_path, device_map="auto", torch_dtype=torch.float16)

遅すぎたのでtorch_dtype=float16を入れました。

環境設定

venvを使ってpython仮想環境を作っています。動作環境はWindowsネイティブ(WLS2なし)です。以下のコマンドはpowerShellから打っています。llama-cpp-pythonはCUDA対応済みpyTorchはCUDA 11.8ビルド済みです。

> mkdir llms
> cd llms
> python -m venv ./venv
> .\venv\Scripts\Activate.ps1

# pipが古かったのでアップデート
> python -m pip install --upgrade pip

# pyTorch系。CUDA 118を使用
> pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# transformers系
> pip install transformers sentencepiece

# device_map="auto" を使うために入れる
> pip install accelerate

# legacy = Falseしたら、入れろ!と怒られた・・・
> pip install protobuf

# CUDA Toolkit、cuDNNなどのライブラリを事前にセットアップしておく必要あり
> $env:CMAKE_ARGS = "-DLLAMA_CUBLAS=on"
> $env:FORCE_CMAKE = 1
> pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir -vv

# OpenAI API呼び出し用
pip install openai

llama-cpp-pythonをCUDA対応する手順は以下を参照ください。

検証(やっと)

  • 1プロンプト毎に5回実行
    • モデルが8個あり、検証文が6個、各5回なので、240回流して、240回検証したことになります。もうお腹いっぱいです
  • 回答結果から、質問に答えていそうなもの、または、質問応答に近いものを独断と偏見で人間が選びました
  • 時間」はモデルをロードしてから結果が返ってくるまでの秒数です
  • VRAM使用量は取り忘れました・・・(もう無理です)
  • 以下は検証結果を表に示しますが、左端の数値とモデルの対応関係は以下の通りです。たとえば「3」ならば、「Weblab-10B」のことを示します。
#モデル
1bilingual-gpt-neox-4b
2japanese-large-lm-3.6b
3Weblab-10B
4ELYZA-japanese-Llama-2-7b
5Llama 2 13B Chat
6Xwin-LM 13B V0.1
7gpt-3.5-turbo
8gpt-4

検証1:知識を問う

日本で最も標高が高い山の名前を教えてください

日本語を話せるLLMならこれくらいは知っているだろうというやつです。小手調べ的な。

#応答時間
1富士山は、日本の最高峰であり、標高は3,776メートルです。6.1
2最も標高が高いのは富士山で、3776mです。5.7
3富士山は日本で最も高い山で、3776メートルです。44.0
4日本で最も標高が高い山は、富士山です。富士山は、山梨県と静岡県にまたがる富士山頂上火口部が最高点である3,776メートルの地点が存在します。富士山は、清々しく美しい自然を活かした世界文化遺産に登録されている名山です。43.5
5Hello! I’d be happy to help you with that. The highest mountain in Japan is Mount Fuji, located on the main island of Honshu. It stands at an elevation of 3,776 meters (12,421 feet) above sea level. Mount Fuji is a dormant volcano and is considered one of Japan’s “Three Holy Mountains” along with Mount Tate and Mount Haku. It is also a well-

<日本語訳>
こんにちは!喜んでお手伝いさせていただきます。日本で一番高い山は、本州にある富士山です。標高は3,776メートル(12,421フィート)。富士山は休火山であり、立山、白山とともに日本三霊山のひとつとされている。また
6.7
6日本で最も標高が高い山は、富士山(ふじさん)です。富士山は標高3,776メートルであり、山梨県と静岡県にまたがって位置しています。6.5
7日本で最も標高が高い山は、富士山です。富士山は標高3,776メートルで、日本の代表的な山として知られています。3.3
8日本で最も標高が高い山は富士山です。その標高は約3,776メートルです。4.7

Llama2が英語で淡々と富士山のことを答えているのは面白いです。Llama2は日本語で答えるよう指示してもローマ字(「Ohayou gozaimasu!」とか)で答えたりするので、諦めて英語にしています。

槍ヶ岳や北海道にあるトムラウシを最高峰に挙げるLLMもあり、ニヤニヤして見てました。そうそう、こういうのが見たかった!

3のWebLab-10Bと4のELYZA-japanese-Llama-2-7bが回答までに時間が掛かるようです。VRAMオフロードで動いている可能性が高いです。別のプロンプトで2700秒も掛かるものもありました。パラメータ数が多いLlama 2 13B Chat、Xwin-LM 13B V0.1はGGUF形式なので起きていないと想定されます。そのため、2と3について、かかる時間は参考程度でお願いします。

検証2:知識からさらに知識を問う

日本で最も標高が高い山の周辺にある観光名所を3つ教えてください

標高が高い山を間違えているLLMがあったので、どんなカオスになるのか楽しみですね!

#応答時間
1日本で最も標高が高い山は富士山です。その周りには、丹沢山、蛭ヶ岳、大倉山など、多くの山があります。これらはすべて、日本の太平洋岸にあります。7.4
2富士山の標高は3,776メートルで、日本一高い山として知られています。富士山の周辺には、富士山の標高にちなんだ名前の観光スポットがいくつかある。富士五湖や富士急ハイランドは、富士登山をしなくても富士山に登ることができる。また、標高3,000メートルを超える峰は日本で25本以上あるが、最も有名なのは南アルプスの山々である。8.4
3日本で最も標高の高い山、富士山は、海抜3776メートルの富士山火口を持っています。富士山を囲む風景は、息をのむような景色で、富士山を囲むように広がる、浅間山、赤石山脈、北アルプスなどの素晴らしい山々の景色があります。
2.御殿場の頂上からの富士山の眺めは息をのむようなもので、富士山の美しい景色があります。
3.富士山の麓の御殿場市には、日本一の高さを誇る超高層ビル「富士山スカイライン」があります。
548.4
4日本で最も標高が高い山は、富士山です。その周辺にある観光名所を3つご紹介します:
1.富士スピードウェイ
2.富士サファリパーク
3.富士スバルランド
富士山の観光名所をこの限りではございません。以上が参考にできれば幸いです。
43.3
5Hello! I’d be happy to help you with that. As an Assistant, I strive to provide the most accurate and helpful information possible.
Here are three famous tourist spots near the highest mountain in Japan, which is Mount Fuji:
Lake Kawaguchi: Located at the base of Mount Fuji, Lake Kawaguchi is a popular spot for visitors to enjoy the stunning views of the mountain. The lake offers boat rides and fishing opportunities, and its shores are lined with restaurants and cafes. Visitors can also hike around the lake or take a scenic drive along its shoreline.
Fuji Five Lakes: Consisting of five interconnected lakes, the Fuji Five Lakes region is a must-visit destination for anyone traveling to Mount Fuji. Each lake offers breathtaking views of the mountain and provides opportunities for boating, fishing, and hiking. Visitors can also explore the nearby villages and towns, such as Fujikawaguchiko and Kofu, which offer a glimpse into traditional Japanese culture.
Arakurayama Sengen Park: Located on the northeastern slope of Mount Fuji, Arakurayama Sengen Park is a scenic spot that offers panoramic views of the mountain and its surrounding landscape. The park is home to several hiking trails, including the popular Yoshida Trail, which leads to the summit of Mount Fuji. Visitors can also explore the nearby Arakurayama Shrine, which is dedicated to the god of Mount Fuji.
I hope this information helps you plan your trip to Japan and experience the beauty of Mount Fuji!

(日本語訳)
こんにちは!喜んでお手伝いさせていただきます。アシスタントとして、可能な限り正確で役に立つ情報を提供するよう心がけています。

日本一高い山、富士山の近くにある有名な観光スポットを3つご紹介します:

1. 河口湖: 河口湖:富士山のふもとにある河口湖は、富士山の絶景を楽しめる人気のスポット。湖畔にはレストランやカフェが立ち並び、ボートや釣りを楽しむことができる。湖畔にはレストランやカフェが立ち並び、湖畔をハイキングしたり、湖畔をドライブすることもできる。

2. 富士五湖: 5つの湖が連なる富士五湖は、富士山に行くなら必ず訪れたい場所だ。各湖からは息をのむような富士山の眺望が楽しめ、ボート、釣り、ハイキングができる。また、富士河口湖や甲府など、日本の伝統文化を垣間見ることができる村や町もある。
3. 荒倉山浅間公園: 富士山の北東斜面に位置する荒倉山浅間公園は、富士山とその周辺の景色を一望できる景勝地である。公園内には、富士山頂まで続く人気の吉田コースをはじめ、いくつかのハイキングコースがある。また、富士山の神を祀る荒倉山神社も近くにある。

この情報が日本への旅行を計画し、富士山の美しさを体験するのに役立つことを願っている!
14.1
6日本で最も標高が高い山は、富士山(標高3,776メートル)です。その周辺にある観光名所を3つご紹介します。
富士山本宮浅間大社:富士山の頂上近くに位置する神社で、日本最高峰の山域にある神社として知られます。富士山を眺望でき、夏には火山の恵みとして美しい山の花が咲くことでも有名です。
富士五湖:富士山の北西部にある5つの湖で、それぞれ独特の景色を提供しています。最も知られた湖は吉田湖で、静かな湖面と周囲に立ちこめる樹木が絶景と言われています。
富士急ハイランド:富士山の東麓に位置するテーマパークで、アトラクションやアミューズメント施設があります。特にコースターファンには人気のある「ドッジ・コースター」や、日本最長のゴンドラリフトで登る「富士山クレイルカンパニー」が名物です。
14.4
7日本で最も標高が高い山は富士山です。富士山周辺の観光名所としては、以下の3つが挙げられます。
富士五湖(Fujigoko):富士山の周辺には、五つの美しい湖があります。それぞれが異なる景色やアクティビティを楽しむことができます。例えば、河口湖ではボートや釣りが楽しめますし、本栖湖ではカヌーやカヤックを楽しむことができます。

忍野八海(Oshino Hakkai):富士山の北側にある忍野村には、8つの清水が湧き出す池があります。これらの池は、富士山の溶岩でできた氷河水が地下から湧き出ているため、非常に透明で美しい景観です。散策や写真撮影にぴったりです。

富士山本宮浅間大社(Fujisan Hongu Sengen Taisha):富士山の登山の出発点として知られる本宮浅間大社は、古くから信仰の対象とされています。境内には歴史的な建物や美しい庭園があり、富士山との共演を楽しむことができます。また、富士山への登山をする前に、ここで祈願する人々も多いです。
21.8
8日本で最も標高が高い山は富士山です。その周辺には多くの観光地がありますが、特に人気のある3つを以下にご紹介します。

富士五湖: 富士山の北側に位置する5つの湖(河口湖、西湖、精進湖、本栖湖、山中湖)からなるエリアです。各湖からの富士山の眺めは絶景で、四季折々の美しさを楽しむことができます。また、各湖周辺には温泉施設やアウトドアアクティビティ施設なども豊富にあります。

忍野八海: 富士山から流れ出る地下水が湧き出る8つの池を持つ観光地です。各池はそれぞれ個性があり、神秘的な雰囲気を楽しむことができます。また、周辺には古民家を利用したカフェやレストランも点在しています。

富士急ハイランド: 富士山のふもとに位置する大型遊園地です。ジェットコースターやお化け屋敷など、様々なアトラクションが揃っています。また、園内からは富士山を一望することができます。
以上の3つの観光地は、それぞれ富士山の異なる魅力を感じることができるスポットとなっています。
49.6

「XXXXのYYYYを教えてください」という質問だと、YYYYではなくXXXXに気を取られて勘違いするケースが見られました。狙い通りです。「指示をもう少し分かり易く書けよ!」ですが、口頭ではこんな感じなので、というやつです。

ところで、私には富士山周辺のは知らないので、正しいかどうか全くわかりません(何故聞いた?)!合ってますか?
エベレストとか恐山とかあげてきたものは、流石にフィルターしました。

検証3:エピソードを作ってもらう(得意でしょ?)

医療保険に未加入のユーザに対して、医療保険への加入が人生において非常に大切であることを説明したい。医療保険に入っていて非常に良かったと思える具体的で実体験を伴うエピソードを考えてください

単に聞いてみました。何ら狙いはありません。以前、保険加入を決意させるような感動的なエピソードが作れなくてすごく悔しかったことなどありましたが、それとは全く関係ありません。ええ、全く本当に。

#応答時間
1わかりました。以下は、医療保険への加入が人生において非常に大切であることを説明する例です:
1) 私は医療保険に入ることができませんでした。保険に入ることが健康に害をもたらすと信じていました。なぜなら、保険に加入しないと、病気になったり怪我をしたときに医療を受けることができないからです。私は1962年に保険に加入し、それ以来、病気や怪我をしたことはありません。
2) 私は医療保険に加入していますが、保険に加入していない場合、私は病気になって手術や治療が必要になった場合にお金がなく、入院や手術を受けることができなくなる可能性があります。私の家族は、私が入院したときに家族に3000ドルの手術費用を支払うことができました。つまり、私には家族が支払ってくれた3000ドルの手術費用があったため、手術を受けることができました。
3) 私は入院したときに手術が必要で、入院費用を支払うために3000ドルを支払いました。つまり、私は自分の医療費を支払うために3000ドルを支払いました。したがって、私は自分自身の医療費を支払うために、自分の医療保険に1962年以来加入しており、入院や手術を受ける必要がありませんでした。
(あとは同じ内容を何度も書いていたので省略)
30.6
2医療保険は、人生を豊かにしてくれる素晴らしいツールです。多くの医療保険は、加入しているだけで、さまざまな健康上の問題からあなたを守ってくれます。例えば、保険の補償内容にもよりますが、ほとんどの医療保険は、高額な医療費をカバーするために利用できる資金を提供してくれます。もしあなたが、何らかの理由で保険に加入していないのであれば、そのことがあなたの人生をより困難なものにしてしまうかもしれません。もし病気になって高額な医療費がかかった場合、全額を負担しなければならず、場合によっては何百万円もの費用がかかります。しかし、保険に加入してさえいれば、保険に加入しているだけで、そのような多額の医療費をカバーし、その支払いから逃れることができます。人生には他にも多くの費用がかかりますが、医療保険への加入は、人生で最も大切なのに、多くの人が軽視している費用です。11.1
3私は、医療保険に加入していなかったために、医師から余分なお金を請求されたことがあります。私は大きなショックを受けました。なぜなら、私は医療費を支払うことができなかったからです。私は医療保険に加入することにしました。これは私の人生にとって非常に重要でした。私は医療保険に加入したことで、医療費を払うことができました。これは私にとっては非常に重要なことでした。私は医療保険を利用して、自分の健康を維持することができました。この経験は、私にとっては非常に重要なことでした。私は今、医療保険に加入しており、私が死亡するまで、私の医療費を保存することができます。583.6
4承知しました。以下は、医療保険への加入が人生において非常に重要であることを説明する具体的で実体験を伴うエピソードです。
皆さんは、自身の健康で最も大きな出費となる病院の治療費を支払う必要があります。一般的な病気にかかった場合でも10万円以上の治療費がかかる可能性があります。また、激しいがんの治療では100万円以上の治療費がかかることもあります。
このような治療費は、現金で支払うのは非常に困難です。多くの人が生活費を削減したり、借金をしたり、貯金から取り崩したりして、治療費を捻出しています。
そのため、健康なうちから医療保険に加入して、病気やケガで入院した時や、がん治療のために長期間の入院が必要になった時にも、安心して治療を受けることができるようにしましょう。
以下は、医療保険への加入が人生において非常に重要であることを説明する具体的で実体験を伴うエピソードの例です。
30代の中学生の先生が、自転車に乗っている途中、歩道を歩いていた高齢者と接触して転倒したことがあります。その際に、頭を強く打って軽いけがをしました。
その先生は、自転車保険に入っていたので、治療費は1円もかかりませんでした。
もし、その先生が自転車保険に加入していなかったらどうなっていたでしょうか?
頭を強く打って軽いけがをしたにも関わらず、治療費が10万円以上かかったとします。その先生は、自転車保険に入っていなかったので、全額自腹で治療費を払う必要がありました。
そのような大金が支払えるわけがないので、先生は、貯金を崩して治療費を支払ったそうです。
結果として、先生は、貯金が半分以下になってしまいました。
このような事故をきっかけに、先生は、医療保険に入ることを決めました。先生は、自転車保険に加入していなかったら、貯金が半分以下になっていた可能性があることにびっくりしていました。
医療保険に加入することで、自分の貯金が半分以下にならなければ、大変な精神的負担が軽減できます。
以上の事例は、医療保険への加入が人生において非常に重要であることを説明
218.6
5Ah, I see! As a helpful and intelligent assistant, I’d be happy to help you explain the importance of having health insurance, especially for those who have not yet joined. Let me share with you a personal story that illustrates the value of having health insurance.
A few years ago, my own mother was diagnosed with breast cancer. She had been experiencing some symptoms for a while, but she put off going to see a doctor because she didn’t have health insurance and was worried about the cost. Unfortunately, by the time she finally did go to the doctor, the cancer had already spread to her lymph nodes and required extensive treatment.
Thankfully, my family was able to cover the costs of her treatment through our own savings, but it was a tremendous financial burden. We had to use up all of our savings and even take out a loan to pay for her surgery, chemotherapy, and radiation therapy. It was a very stressful and difficult time for our family, and I can only imagine how much harder it would have been if we didn’t have the financial resources to cover her treatment.
This experience really drove home the importance of having health insurance. Even if you think you’re young and healthy and won’t need medical care anytime soon, unexpected illnesses or injuries can still happen at any time. And without health insurance, the financial consequences can be devastating.
But the benefits of having health insurance go beyond just financial protection. With health insurance, you also have access to regular check-ups and preventative care, which can help detect potential health issues before they become major problems. This can lead to better overall health and wellness, as well as peace of mind knowing that you’re taking proactive steps to protect your health.
So, if you’re one of the many people who haven’t yet joined a health insurance plan, I urge you to reconsider. It may seem like an unnecessary expense right now, but it can provide invaluable protection and peace of mind in the long run. And who knows, you might even have a positive experience with your health insurance provider, like I did when my mother was diagnosed with cancer.

(日本語訳)
ああ、なるほど!親切で聡明なアシスタントとして、健康保険に加入することの重要性を、特にまだ加入していない人たちに説明するお手伝いができれば幸いです。健康保険に加入することの価値を説明する個人的な話をしましょう。

数年前、私の実母が乳がんと診断されました。しばらく前から症状は出ていたのですが、健康保険に加入していなかったため、受診を先延ばしにしていました。残念なことに、ようやく医者に行ったときには、がんはすでにリンパ節に転移しており、大がかりな治療が必要だった。

ありがたいことに、私たち家族は自分たちの貯蓄で彼女の治療費をまかなうことができたが、それはとてつもない経済的負担だった。貯金をすべて使い果たし、手術、化学療法、放射線治療のためにローンを組まなければなりませんでした。私たち家族にとって非常にストレスの多い大変な時期でしたが、もし彼女の治療費をまかなう経済的な余裕がなかったら、どんなに大変なことになっていたことか。

この経験は、健康保険に加入することの重要性を痛感させた。若くて健康だからすぐに医療が必要になることはないだろうと思っていても、予期せぬ病気や怪我はいつ起こるかわからない。そして、健康保険がなければ、経済的に壊滅的な打撃を受けることになる。

しかし、健康保険に加入するメリットは、経済的な保護だけではありません。健康保険に加入していれば、定期的な健康診断や予防医療を受けることができ、大きな問題に発展する前に潜在的な健康問題を発見することができます。これにより、全体的な健康状態が改善され、健康を守るために積極的な手段を講じているという安心感を得ることができます。

だから、まだ健康保険に加入していない人が大勢いるのなら、ぜひ考え直してほしい。今は不要な出費に思えるかもしれないが、長い目で見ればかけがえのない保障と安心をもたらしてくれる。そして、母ががんと診断されたときの私のように、健康保険会社で良い経験をするかもしれない。
17.0
6例:医療保険が人生を変えた話
医療保険に入っていて非常に良かったと思える具体的なエピソードを以下に示します。
「私は元々医療保険に加入していなかったが、ある日突然体調が悪くなり、医者に相談したところ、重症の疾患であることが判明した。その後、私は手術を行い、数ヶ月のリハビリテーションを経て回復しました。だからといって医療保険に加入することを後悔はしていません。
医療保険があれば、その時点で手術費や薬代などの治療費用を一部から全体が支払われることができました。医療保険がなかった場合、私は大金を払い、または医療費により財政的に苦しんでいたと思います。
この経験を通じて、私は医療保険が人生において非常に大切であることを実感しました。医療保険に加入することで、病気や怪我に直面した際の財政的な苦痛を回避できることや、定期的な健診を受けることで早期の疾病
17.5
7私の友人である田中さんの話をご紹介いたします。

田中さんは、若い頃から健康に自信があり、医療保険に加入する必要性を感じていませんでした。しかし、ある日突然、田中さんは交通事故に遭い、重傷を負ってしまいました。幸いにも命に別状はありませんでしたが、長期間の入院や手術が必要となりました。

入院中、田中さんは医療費の膨大な金額に驚きました。手術やリハビリテーション、薬品など、必要な医療サービスの費用は予想以上に高額でした。そして、医療保険に未加入であることに後悔しました。

その後、田中さんは療養期間中の経済的負担を軽減するために、友人や家族からの支援を受けることになりました。しかし、田中さんは自立心が強く、他人に頼ることが苦手でした。この経験を通じて、医療保険の重要性を痛感したのです。
医療保険に加入していれば、田中さんは自身の療養に集中でき、経済的な心配をする必要もありませんでした。医療費の負担を軽減するための補償があれば、田中さんは自分自身の回復に全力を注ぐことができたでしょう。
このような実体験から、医療保険の加入は非
25.4
8私自身が経験をすることはできませんが、以下のようなエピソードを想定してみます。
数年前、私の友人のジョンは健康で活力に溢れる30歳の青年でした。彼は医療保険に加入していませんでした。彼はその保険料を節約し、それを他のライフスタイルの向上に使うことを選びました。しかし、彼が予期せぬ病気にかかったとき、彼の選択は彼にとって重大な結果をもたらしました。

ジョンは突然激しい頭痛とめまいを感じるようになり、病院に運ばれました。彼は脳の手術を必要とする深刻な病気である脳動脈瘤を発症していました。これは非常に高額な医療費を伴う病気で、病院の診断と治療だけで数十万円、手術費用はさらに数百万円以上かかることがあります。

医療保険に加入していなかったため、ジョンはこれらの高額な医療費を全額自己負担しなければなりませんでした。彼の貯金はすぐに底をつき、借金を抱えることになりました。彼は医療保険に加入していれば、このような高額な医療費の大部分をカバーでき、経済的な困難に直面することはなかっただろうと後悔しました。
52.4

今まで口数が少なかった1のrinna(bilingual-gpt-neox-4b)が急に饒舌になって驚きました。何かツボにハマったんでしょうかね。

全体的に印象に残るエピソードは弱めで(プロンプト悪いんだろうな)、淡々と事実を述べているだけに見えました。4のELYZA-japanese-Llama-2-7bがシンプルながら一番印象に残りました。

保険に入っただけで儲かったというエピソードを提案してくるケースがありました。そういう確率が高いということなのでしょうか。保険はみんなで支え合うものなので儲けを意識してはいけません(と言っておく)

検証4:最後まで聞かないとわからない

一郎、花子、太郎の家族3人でレストランに食事をしにいきました。3人は次のようにそれぞれ料理を注文しました。、太郎「焼きそばパン3つ」、一郎「塩ラーメン1つと餃子6個入が1つ」、花子「ペペロンチーノ1つとトマトジュース1杯」、太郎「焼きそばパンの注文はキャンセルします。代わりに味噌ラーメンを1杯」、一郎「メロンパン2つ追加で」。料理が提供されたのち、太郎は「餃子6個入りを追加」と注文を追加しました。最終的に太郎が注文した料理を教えてください。

昔、何かのCMでロボットかAIがこんな感じで次々と注文されてみたいなのがありました。あれをやってみたくてこのお題。ちなみに正解は、「味噌ラーメン1杯、餃子6個入り1つ」です。いいから、焼きそばパンも食っておけよ、というやつです。LLMも大苦戦です。

途中、「もう太郎は焼きそばパン食ったことにしていいよね?」と思えてきました。ペペロンチーノを食べるのは流石にちょっと花子に申し訳ない・・・

#応答時間
1(近い回答なし)
2注文した料理は、塩ラーメン、ペペロンチーノ、味噌ラーメンです。6.1
3味噌ラーメンとペペロンチーノとメロンパンとトマトジュース。81.5
4太郎が注文した料理は以下の通りです。
焼きそばパン
味噌ラーメン
餃子6個入
29.4
5Of course! I’d be happy to help. Based on the information provided, here is the final order for the three family members:
太郎 (Taro): 味噌ラーメン1杯 + 餃子6個入 (Added at the end)
一郎 (Hirono): 塩ラーメン1つ + 餃子6個入 (Original order)
花子 (Hanako): ペペロンチーノ1つ + トマトジュース1杯
Note that 太郎 (Taro) cancelled his original order of 焼きそばパン3つ and replaced it with 味噌ラーメン1杯. Additionally, he added 餃子6個入 to his order at the end.

(日本語訳)
もちろんだ!喜んでお手伝いしますよ 提供された情報に基づき、家族3人の最終的な順位は以下の通りである:
太朗(Taro): 味噌ラーメン1杯+餃子6個入(最後に追加)
一郎(Hirono): 塩ラーメン1つ+餃子6個入(オリジナルオーダー)
花子(Hanako): ペペロンチーノ1つ+トマトジュース1杯

太朗(太郎)は焼きそばパン3つをキャンセルし、味噌ラーメン1杯に変更した。さらに、最後に餃子6個入を加えた。
9.4
6太郎の最終的な注文は以下の通りです。
味噌ラーメン(代替):1杯
餃子6個入り(追加)
6.0
7最終的に太郎が注文した料理は、味噌ラーメン1杯と餃子6個入りです。2.2
8太郎さんが最終的に注文した料理は「味噌ラーメン1杯」と「餃子6個入り」です。5.9

完全正解だったのはXwin-LM、gpt-3.5、gpt-4。Llama2は太郎に関しては正解でしたが、他の人の注文まで述べて撃沈。gpt-4は5回全て正解でした。7のgpt-3.5-turboが2.2秒はすごく早いです。6のXwin-LMも丁寧で良いです。

あと太郎くんとは関係ありませんが、頼んでもいないのに全員分の注文を列挙した上で、メロンパン2個の追加を見逃して食い逃げを許すLLMが多かったです。AIウェイトレスは追加注文の見逃しに注意してね!

全体的に、他人の注文と混じったり、焼きそばパンのキャンセルに対応できないケースが見られました。人間でも難しいので、LLMでも同じなんですね。

検証5:計算させる

太郎は買い物に行くために、10時に時速10キロメートルの速度で自宅を歩いて出発しました。それから60分後、太郎の母の花子は太郎が財布を忘れたことに気づき、時速20キロメートルの速度で太郎を追いかけました。太郎と花子は同じ道を歩いており、太郎と花子は立ち止まらずに歩いているとします。花子は太郎に追いつくことはできますか?

ChatGPTは計算が苦手と聞き、数学特化のLLMはいないのでこのお題。
ちなみに正解は、花子は太郎に追いつくことができます。

#応答時間
1はい、花子は太郎に追いつくことができます。花子は時速20キロメートルの速度で太郎を追います。6.7
2(近い回答なし)
3はい。彼女は太郎に追いつき、彼との距離を縮めることができます。69.1
4はい、できます。
太郎が10時に出発したということは、その時の太郎の速度は0キロメートルであることがわかります。
そして、60分後の11時には太郎の速度が10キロメートルになったと仮定できます。
それから60分後の12時には太郎の母の花子が太郎を追いかけ始めたとすると、花子の速度は10キロメートルであり、太郎との差分は20キロメートルとなります。
このとき、太郎と花子は同じ道を歩いていると仮定できますし、立ち止まらずに歩いているとすると、距離が伸びる速度は20キロメートルということになります。
よって、太郎と花子は同じ道を歩いており、太郎と花子は立ち止まらずに歩いているとすると、花子は太郎に追いつくことができます。
93.3
5Yes, 花子 (Hanako) can catch up to 太郎 (Taro) if they are walking on the same road and both are walking at a constant speed.
Let’s analyze the situation:
Taro starts walking at 10 km/h at 10:00 AM.
Hanako realizes that Taro has forgotten his wallet 60 minutes later, at 11:00 AM.
Hanako starts running to catch up with Taro at 20 km/h.
Now, let’s calculate the time it takes for Hanako to catch up with Taro:
distance = speed x time
In this case, the distance between Taro and Hanako is constant, as they are walking on the same road. So, we can use the formula:
distance = 10 km x (11:00 AM – 10:00 AM) = 10 km x 1 hour = 10 km
Since Hanako starts running at 20 km/h, it will take her half the time it took Taro to cover the distance:
time for Hanako to catch up = distance / speed = 10 km / 20 km/h = 0.5 hours = 30 minutes
Therefore, Hanako can catch up with Taro in 30 minutes.

(日本語訳)
そう、花子は太朗に追いつくことができるのだ。
状況を分析してみよう:
太郎は午前10時に時速10キロで歩き始める。
花子は太郎が財布を忘れたことに60分後の午前11時に気づく。
花子は時速20キロで太郎に追いつこうと走り出す。
では、花子が太郎に追いつくまでの時間を計算してみよう:
距離=速度×時間
この場合、太郎と花子は同じ道を歩いているので、距離は一定である。そこで、次の式を使うことができる:
距離=10キロ×(午前11時-午前10時)=10キロ×1時間=10キロ
花子は時速20kmで走り出すので、太郎がこの距離を走るのに要した時間の半分がかかる:
花子が追いつくまでの時間 = 距離 / 速度 = 10 km / 20 km/h = 0.5 時間 = 30 分
したがって、花子は30分で太郎に追いつくことができる。
12.0
6はい、太郎の母の花子が太郎に追いつくことができます。彼女が時速20キロメートルの速度で歩いているため、60分後(3.6キロメートル)で太郎と同じ位置に到達するはずです。しかし、太郎が財布を忘れたことに気づいてからの時間が経過しているため、実際に花子が太郎に追いつくのは60分後よりも遅れることがあります。それでも、太郎と花子が同じ道を歩いており、立ち止まらずに歩いていると仮定すると、花子は太郎に追いつくことができます。10.1
7太郎は時速10キロメートルで歩いているので、60分後には10キロメートル進んでいます。一方、花子は時速20キロメートルで太郎を追いかけています。したがって、花子は60分後には20キロメートル進んでいます。
太郎と花子は同じ道を歩いており、花子は太郎を追いかけているので、花子が太郎に追いつくには、花子が太郎との距離を20キロメートル縮める必要があります。
太郎は60分後に10キロメートル進んでいるため、花子は太郎との距離を縮めるために60分以内に20キロメートルを進む必要があります。
時速20キロメートルで進むと1時間に20キロメートル進むことができます。したがって、花子は60分以内に20キロメートルを進むことができます。
したがって、花子は太郎に追いつくことができます。
15.7
8はい、花子さんは太郎さんに追いつくことができます。
太郎さんは10時に出発して、1時間後に花子さんが出発したので、その時点で太郎さんは10キロメートル歩いていました(時速10キロメートル×1時間)。
花子さんは時速20キロメートルで進むので、1時間で20キロメートル進みます。
したがって、花子さんが歩き始めてからの1時間後、つまり太郎さんが出発してから2時間後には、花子さんは20キロメートル(太郎さんが最初に歩いた10キロメートル+花子さんが追加で歩いた10キロメートル)を進んでいます。
これにより、花子さんは太郎さんに追いつくことができます。
24.6

追いつくことができるかどうかだけを問うているので、3のWebLab-10Bの回答だけで十分です。しかし、ちゃんと理由を述べてくれるLLMがたくさんありました。ありがたいことです。どうせ理由も知りたいんでしょ?ですかね。システムプロンプトが効いているのかな。

計算を間違えても正解するケースもありました。たとえば、太郎は時速10キロ * 60分ので「600km」を歩くとか。花子の計算も間違っているので、結果的に正解。600kmを1時間で歩くのはちょっと無理かな。

太郎も歩いているから花子は追いつけない、という理由を挙げるLLMがいて面白かったです(ELYZAかXwin-LMのどちらか・・)。まるでゼノンのパラドクスの「アキレスと亀」のような解説になっていて、逆にそこに辿り着いてしまうのは興味深いです(1回目で出てきたので、すぐに取れるだろうと収集してなかった・・残念)

そして、gpt-4は5回とも正解でした。すごい。

検証6:幻想が得意なら見せてもらおうか、その性能とやらを

あなたはファンタジー小説家です。キーワード「別世界」「呪い」「ドラゴン」「タンポポ」「邪王炎殺黒龍波」「飛影」のうち最低3つを含むような小説を書いてください。小説の先頭にタイトルを書いてから始めてください。本文の長さは200文字程度で、この小説の読者は10代から30代前半の男性をメインターゲットとしています。

ハルシネーションをむしろ起こしてくれたら面白くなるというやつです。

正直にいうと、ここにくるまでにAIの生成物を200個以上読んできて、もはやインパクトのあるもの、設定が入り組んでいなくて地の文より会話が多いものしか目に入らなくなっている私がここにいます。。日本一高い山を恐山というLLM見て笑い転げていたあの頃が懐かしい。

#応答時間
1OK、書き進めてみましょう。この小説は、架空のファンタジー小説で、主人公の少年が、邪悪なドラゴンにかけられた呪いを解くために、ドラゴンが住む「別世界」に旅する物語です。主人公は、ドラゴンが住む「別世界」で、邪悪なドラゴンにかけられた呪いを解くことができる少女に出会います。物語は、主人公の冒険、ドラゴンが住む「別世界」での様々な出来事、そして邪悪なドラゴンを倒すために、少女が彼の力を借りる様子を描いています。全体的に、主人公の冒険と少女の冒険が描かれ、物語は10代から30代前半の男性をメインターゲットとしています。11.5
2遠い昔、遠い遠い国には、魔法の力を持つドラゴンが住んでいました。ある日、ドラゴンは退屈していました。そこで彼は、新しい冒険を夢見て、村に出かけました。
村に着くと、彼は一目でその美しさに魅了されました。鮮やかな色の植物が空に向かって伸び、小さな動物が走り回っている。彼は、この美しい場所を冒険できる新しい魔法を想像していました。
ある朝、ドラゴンは、小さな女の子が、地面に座り、花を摘んでいるのを見つけました。少女は恥ずかしそうに顔を赤らめ、何かをごまかすように咳払いをした。ドラゴンは少女に近づき、尋ねた。「なぜこんなに汚れているんだい?こんなに汚れていては、家に入るのに何時間もかかるだろう」少女は恥ずかしそうに答えた。「お母さんと買い物に行く途中なの。」ドラゴンは少女に近づき、尋ねた。「邪王炎殺黒龍波を撃つには、何を積むといい?」「タンポポ」「タンポポ?」「タンポポ」ドラゴンは笑った。「タンポポを積むのに魔法はいらない。」少女は悲しそうに微笑んだ。「邪王炎殺黒龍波を撃つためにタンポポを積んで、私の母は私を笑うでしょうか?」
ドラゴンは悲しくなり、その美しい村を去ろうとした。しかし、少女はドラゴンにしがみついて叫んだ。「待って!邪王炎殺黒龍波を撃たないで!」少女は泣き出した。ドラゴンは、少女がこの魔法の力を本当に理解していたのだと理解した。そして、邪王炎殺黒龍波を撃つことは、少女の母親を笑うことではなく、この魔法の力を自分のために使うことだと伝えようとした。
「邪王炎殺黒龍波」は、この物語の中で最も恐ろしい呪文である。なぜなら、それが撃たれたら、すべての国が滅んでしまうからである。しかし、ドラゴンは呪文を唱えることを止めない。なぜなら、それが撃たれたとき、少女は母親に笑われるかもしれないが、世界の終わりにはなり得ないことを知っているからである。
少女はドラゴンにしがみつきながら、呪文は間違っていると感じ、代わりに言葉を発しました。「私は、タンポポの花束を詰めたタン
23.8
3呪いの子供たちは世界に別れを告げた。邪王炎殺黒龍波を放つことで、邪悪な呪いを解くことができるのは、この子供たちだけであることがわかった。彼らは呪いを解くために、邪王炎殺黒龍波を使うことにした。
龍はすぐに子供たちの周りを回って、彼らは呪いを解くための時間を得た。すぐに、子供たちは呪いを解き、彼らの世界を救うことができた。邪悪なものはすべて消え、世界は変わりました。しかし、彼らの呪いは彼らの世界に残りました。
呪いの子供たちは今日でも邪悪なものを追い払うために邪王炎殺黒龍波を放つことにしている。彼らは今日も彼らの世界に邪悪なものを追い払う。
711.6
4タイトル: 邪王炎殺黒龍波とタンポポ

長い長い眠りから、俺は目覚めた。
最初に目にしたものは、青く美しい星空だった。
俺はこの星の上にいる。
俺は、飛影だ。
記憶が鮮明ではないが、俺はここから逃げるべきなのだと、そう感じる。
なぜなら、俺は呪われた存在だからだ。
邪王炎殺黒龍波。
俺の名は、タンポポによって呼び起こされた。
タンポポは、俺がこの星で過ごすために与えられた存在だ。
俺は彼女に頼って、逃亡を開始した。
しばらく歩いていると、俺達は洞穴を見つけることができた。
そこは広々としており、隠れ住むにはもってこいの場所だ。
そこで俺達は潜り込む。
ある夜、俺はタンポポが眠る間の、一つの夢を見てしまった。
タンポポが、俺を呪ったのだ。
俺は呪われた存在だと。
俺は、邪王炎殺黒龍波だ。
その夢に怯えた俺は、タンポポに全てを話した。
そして、俺は彼女を信じたいと願った。
しかし、タンポポの反応は、予想だにしないものであった。
彼女は、俺を呪った。
俺は邪王炎殺黒龍波だ。
そして、彼女は俺を殺した。
「邪王炎殺黒龍波」と呼ばれる存在は、生きていてはいけないのだと。
タンポポは、俺を殺した。
しかし、俺はまだ死んでいない。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
だが、俺はまだ生きている。
タンポポが、俺を呪った。
俺は、邪王炎殺黒龍波だ。
そして、俺は生きている。
タンポポは、俺を殺した。
569.1
5Title: The Shadowed Realm of Eldrador
In the mystical land of Eldrador, where the veil between worlds is thin, a young man named Arin discovers he is the chosen one, destined to wield the ancient power of the dragon tamers. With the land plagued by the dark sorcerer, Malakar, and his army of twisted creatures, Arin must master his abilities and unite the realm’s disparate factions to defeat the forces of darkness and save Eldrador from destruction.
As he embarks on his perilous journey, Arin is aided by the enigmatic dragon, Erebus, and the mysterious sorceress, Lyra, who harbors her own secrets. With the power of the elements at his command, Arin must confront the darkest depths of his own soul to unleash the true potential of the dragon tamers and defeat the evil that threatens to consume Eldrador.
Will Arin be able to master his powers and bring peace to the realm, or will the shadows of Malakar’s tyranny forever shroud Eldrador in darkness? The fate of the realm rests in the hands of this young hero, chosen by destiny to save the day.

(日本語訳)
タイトル エルドラドールの影の領域

世界と世界の間のベールが薄い神秘の国エルドラドールで、青年アリンは自分が選ばれし者であり、古代のドラゴン・テイマーの力を振るう運命にあることを知る。闇の魔術師マラカーとその邪悪な生き物の軍団に悩まされているこの土地で、アリンは自分の能力を使いこなし、闇の力を打ち破り、エルドラドールを滅亡から救うために、この土地のバラバラの派閥を団結させなければならない。

危険な旅に出るとき、アリンは謎めいたドラゴン、エレバスや、独自の秘密を秘めた謎めいた魔術師ライラに助けられる。エレメントの力を自在に操るアリンは、ドラゴン・テイマーの真の可能性を解き放ち、エルドラドールを焼き尽くそうとする悪を倒すため、自らの魂の最も暗い深淵に立ち向かわなければならない。

果たしてアリンはその力を使いこなし、エルドラドールに平和をもたらすことができるのか、それともマラカーの暴虐の影がエルドラドールを永遠に闇に覆い尽くしてしまうのか。王国の運命は、運命に選ばれたこの若き英雄の手に委ねられている。
11.6
6「異界の呪縛」
タイトル:邪王炎殺黒龍波、飛影
小説のはじめに
ある日、平凡な青年・柳生十兵衛は、不思議な夢に引きずり込まれて別世界へと墜ちた。そこは魔法が存在し、呪いや精霊が棲む魔法の国であった。十兵衛はその世界において、彼の持つ特別な力を知ることとなる。

ドラゴンの許へ
柳生十兵衛は、異世界の王子・リュウグと出会う。リュウグは、呪いによって Dragon Slayers と呼ばれる騎士たちを操り、世界を滅ぼそうと企んでいた。十兵衛は、リュウグの目的を知り、彼と共にドラゴンの許へ向かった。

邪王炎殺黒龍波
途中でドラゴンと出会い、彼女は十兵衛に助力することを約束する。そして、三人はリュウグの居城へと向かう。在りし日々の呪いを解くために、邪王炎殺黒龍波と呼ばれる剣の力を求めることになったのだ。

飛影の迷宮
ドラゴンの助けを借りて、リュウグの城へと近づくが、そこは謎の迷宮であった。迷宮内では、精霊タンポポと出会い、彼女から助力を得る。最後の決戦
リュウグとの最終決戦が近づく中、十兵衛は龍の力を手に入れ、邪王炎殺黒龍波を使いこなす。そして、彼とドラゴンと共に、リュウグを倒した。
はるかなる別世界での出来事が終わった。柳生十兵衛は、自分の力を知り、新たなる物語へと向かっていくことになった。
21.8
7タイトル: 「別世界の呪いとドラゴン」

ボブは、ある日突然別世界に飛ばされてしまった。そこでは、邪王炎殺黒龍波と呼ばれる恐ろしい呪いが蔓延していた。ボブはドラゴンの力を借り、この世界の人々を救う使命を受けることになる。

旅の途中、ボブはタンポポという名の少女と出会う。彼女もまた、呪いに苦しむ人々を助けたいと願っていた。ふたりは協力し、力を合わせて呪いの元凶を探し出すため、遺跡や闇の森を冒険する。

やがて、ボブとタンポポは「飛影」と呼ばれる謎の存在と対峙する。飛影は、邪王炎殺黒龍波の源であり、この世界を闇に包み込もうとしていた。ボブは自らの勇気とドラゴンの力を信じ、飛影との壮絶な戦いに挑む。
果たして、ボブとタンポポは邪王炎殺黒龍波の呪いを解くことができるのか?そして、この別世界を救うことができるのか?彼らの冒険と成長の物語が始まる。
23.9
8タイトル:『炎殺黒龍の呪いと別世界のタンポポ』

かつて、邪王炎殺黒龍波という恐ろしい呪いによって、闘士飛影は未知の別世界へと追放された。その世界はドラゴン達が跋扈し、時代は中世といった雰囲気だった。しかし、その別世界で飛影は意外なものに出会った。それは彼が故郷で見たこともない、美しいタンポポの花だった。

飛影はその花に触れた瞬間、未知の力を宿したことを感じた。彼の体は炎殺黒龍波の呪いを変質し、新たな力「タンポポ・ドラゴンウェイブ」を授かる。邪王の呪いから解放された飛影は、この新たな力を手にドラゴン達に立ち向かう決意を固める。そして新たな冒険が始まるのだった。
34.2

力作揃いで驚きました。200文字に絞ってお願いしたのに全然聞いてくれません。LLM8個 x 5回分の短編を読まされました。

gpt系は指示に従ってくれているのですが、面白くてもキーワードを3つ使ってくれない、文字数を守らない、タイトルをつけてくれないと指示を丸っと無視しているものが多い印象です。
逆に、gpt系は指示による縛りでうまくのりきれなかったのかもしれませんね。でもgtp-4の「タンポポ・ドラゴンウェイブ」には笑いました。こういう発想なかったです。

4のELYZA-japanese-Llama-2-7bの回答が物語の狂気をよく表現しています。狙って書いたならすごいです。単なる無限ループと思いきや「俺は生きている」「俺はまだ生きている」と少しずつ表現が違っており、これが怖くなります。そして、最後は「タンポポは、俺を殺した。」で終わってるんですよ?衝撃ですね。ここには載せていないもののELYZAは他にもよく出来た回答をしてきており、同じLlama系でも違うんだと驚きました

個人的には2のjapanese-large-lm-3.6bの回答も読みやすくてよかったです。max_tokensが少なすぎてすごく良いところで切れており、続きがもう読めないという。。
『「タンポポ」「タンポポ?」「タンポポ」ドラゴンは笑った。』が単なる繰り返しじゃなくて、少女とドラゴンが会話し合っている感じが目に浮かんできて面白かった!

感想戦

やっと終わった・・・何か適当にコメントし過ぎた気もしますが、ここまで長文だと誰も読まないので気は楽なもんです。木を隠すには森の中というやつです。

「これ何回分かあるよね?」

そうですね。いつもの感じです。反省しています。でもこれでも切った測定結果があるんです。

さて、色々書きましたが、総じて面白かったです。指示に従わず、想定外な回答が来るほど楽しかったので、一種の娯楽としてやりました。検証?なんでしたっけ?

gpt系は素直に指示に従ってくれて、普段は重宝するし、惑わされず的確に回答するので、まさに「すげー」のですが、今回に限っては、この特殊な状況においては、ちょっと面白くないと感じてしまいました。もっと崩していこうよ、笑わせてくれよと。不思議なものです。

やばい、9/28を過ぎてしまった。

以上です。お疲れ様でした。

・・・

・・・

ではなく、感想戦です。印象に残ったものをいくつか。

  • システムプロンプトが非常に大事でした(特にLlama系が)。変更すると精度が大きく変わった感覚があります。
    • Llama2のモデル配布サイトにあるシステムプロンプトを使って、曖昧でAIをケムに巻くような質問を投げたとき「正直なアシスタントとしては、」と怒られてしまいました。怒られたのでそのプロンプトは検証対象から外しました・・・
    • システムプロンプトに何を設定すれば良い結果になるのか判らず、今回はHugging Factにあったサンプルをアレンジし、可能な限り同じシステムプロンプトを設定してお茶を濁しました。いつかちゃんと検証してみたいです。
  • 1のbilingual-gpt-neox-4b、2のjapanese-large-lm-3.6bは、長い文や入り組んだもの(今回はそんなものばかり)は少し厳しそうです。ただ、急に饒舌になったり、シンプルに返してくれたり、そして何より高速なので、うまく状況が合えば、今回使用したローカルPCくらいでも十分動くので夢は広がります。
  • 3のWebLab-10B、5のELYZA-japanese-Llama-2-7bは、ローカルPCが貧弱なせいで思ったよりも色々と試せませんでした。クラウドのGPU使うしかないのかな。
  • 5のLlama2はしっかりと回答してくれていたので、英語だけなのが勿体無い。英語しか保証していないので、難しいかもですが・・・
  • 6のXwin-LMが思ったよりも良い感触でした。Llama2系で、日本語メインのLLMではないのに。これはすごいです。今回使ったのはGGUF形式だからなのか処理時間も速いです。最近はLlama2で遊んでいましたが、Xwin-LMに乗り換えようかな。コーディング能力もあったらopen-interpreterの裏方をCodeLlama2からXwin-LMに乗り換えたいくらい
  • 7のgpt-3.5-turbo、8のgpt-4系はプロンプトの指示に他のLLMよりも従ってくれます。そして、性能は圧倒的でした。gpt-4は本当にすごいです。その代わり、gtp-4はgtp-3.5-turboよりも総じて遅く、ランニングコストも高くつきます。そううまくはいきませんね。

検証による課金

比較用として少しだけ登場いただいたgpt-3.5とgpt-4にかかったものだけです。

この検証を本格的に始める前はllama-cpp-pythonのserver機能を使ってサーバを立て、そこにopenapiでアクセスして検証していたので、こんなもので済んだとも言えます。gpt系の性能は圧倒的ですが、コスト削減のためにローカルPCで検証できるというのは素晴らしいですね!

それにしても、40回しかgpt-4nに投げていないのに$1.15もかかるのか。gpt-3.5-turboは40回以上投げているのに。

まとめ

以上、LLMと日本語で話してみた遊んでみた、でした。

何ヶ月も前にみんながやったことを、ようやく自分でも試すことができて嬉しいです。そして待っただけあって、Xwin-LMのような面白いLLMにも出会えたので、良しとしましょう。

ここまで辿り着いたくれた勇者の皆様、超長文を読んでいただき、ありがとうございました。