🧱

日本語入力システムSumibiの開発 part10: プロンプトの最適化

に公開

はじめに

前々回の 記事 では、Sumibiの日本語変換精度をベンチマークし、その結果を分析して紹介しました。その後、プロンプトの工夫で変換精度が大きく向上したため、今回はその結果を共有したいと思います。プロンプトの微調整→ベンチマークのサイクルを繰り返しながら改善ポイントを探り、ベンチマークが性能チューニングの鍵となりました。

まずはグラフをご覧ください

図はプロンプト改善後の v2.4.0 の結果です。どのモデルにおいても性能が向上しています。

plot_errorrate_vs_cost_tuning.png

エラー率グラフの見方

  • 縦軸が変換エラー率

    ローマ字から漢字仮名交じり文への変換エラー率です。期待する日本語変換結果とSumibiの変換結果との間の編集距離(挿入・削除・置換の最小回数)を計算します。編集距離を求めるアルゴリズムは、Levenshteinです。

  • 横軸が1回の日本語変換の費用

  • 円の大きさが変換の平均時間(秒)

どのようなデータを使ったかなど、より詳細な情報は、こちらのベンチマーク結果のまとめを見てください。

プロンプトの改善内容

v2.4.0では、以下の太字部分を追加しただけですが、性能が大きく向上しました。

role content
system あなたはローマ字とひらがなを日本語に変換するアシスタントです。ローマ字の 「nn」 は 「ん」と読んでください。[](URL)のようなmarkdown構文は維持してください。# や ## や ### や #### のようなmarkdown構文は維持してください。ローマ字の字面をそのままひらがなや漢字にするだけで、元のローマ字にない文章を作り出さないでください。出力は変換後の一文のみ。注釈や説明は一切付けないください。もし、入力された文章が英語の文章と判断できた場合は、日本語に翻訳してください。
user ローマ字とひらがなの文を漢字仮名混じり文にしてください。 周辺の文章は、「こんにちは、中野です。watashi no namae ha nakano desu . どうぞよろしくお願いします。」のような文章になっています。周辺の文脈を見てそれに合った語彙を選んでください。: watashi no namae ha nakano desu .
assistant 私の名前は中野です。
user ローマ字とひらがなの文を漢字仮名混じり文にしてください。周辺の文章は、「説明はここまでです。それ以外は ikano toori desu .」のような文章になっています。周辺の文脈を見てそれに合った語彙を選んでください。: ikano toori desu .
assistant 以下の通りです。
user ローマ字とひらがなの文を漢字仮名混じり文にしてください。 周辺の文章は、「{surrounding_text}」のような文章になっています。 周辺の文脈を見てそれに合った語彙を選んでください。: {text}

surrounding_text 部分には「近年知名度gaagattekiteori」のような変換対象の周辺文章を含む文字列が入ります。
text部分には「gaagattekiteori」のような変換対象の文字列が入ります。

最後に

いかがでしたでしょうか?LLMを活用したアプリケーションおいて、今後もプロンプトが肝になると感じました。この記事が皆さんのお役に立てば幸いです。

https://zenn.dev/kiyoka/articles/japanese-input-method-sumibi-1
https://zenn.dev/kiyoka/articles/japanese-input-method-sumibi-2
https://zenn.dev/kiyoka/articles/japanese-input-method-sumibi-3
https://zenn.dev/kiyoka/articles/japanese-input-method-sumibi-4
https://zenn.dev/kiyoka/articles/japanese-input-method-sumibi-5
https://zenn.dev/kiyoka/articles/japanese-input-method-sumibi-6
https://zenn.dev/kiyoka/articles/japanese-input-method-sumibi-7
https://zenn.dev/kiyoka/articles/japanese-input-method-sumibi-8
https://zenn.dev/kiyoka/articles/japanese-input-method-sumibi-9

Discussion