【Llama3】ロールプロンプトの効果・重要性について(あなたは優秀な○○です)
みなさんこんにちは!AI-Bridge Lab.こばです😊
Llama3 8Bをollama経由でローカル環境でカスタマイズできるようになったのでGW中に色々と触ってみました🦙
ふと「ローカルでカスタムしたLlama3 8BをGoogleスプレッドシートに連携できないかな?」と思ってPerplexityに聞いてみると「できます」とのことだったので全くサーバー等の知識が無いのに実装を試してみました🚀
結果的に色々エラーと戦いながらもLLM関数を実装できました。
今回はそこで得た経験をシェアしたいと思います。
▼LLMをスプレッドシート関数にする方法は別途、記事化しました🦙
ロールプロンプトはかなり重要だった
大規模言語モデル(LLM)に精通している方なら、プロンプトで「あなたは○○の専門家です」のようなロールを設定することで、回答の精度が向上することをご存知かと思います。
ただ、GPT-4やClaude3 opus、Gemini1.5などの高度なLLMを使用する際は、ロールの有無にかかわらずかなり精度が高いため、あまり気にならないかもしれません。私自身もGPTsやClaude用のシステムプロンプトを組む時はロールを含めていますが、「念のため入れておけば安心」程度の認識でした😅
ところが、Llama3 8Bのようにローカル環境で動作するコンパクトなLLMでは、回答精度があまり高くありません。そのため、ロールなどのシステムプロンプトの有無で結果に大きな違いが生じるようです。
例えば、通常のLlama3 8Bに日本語で話すように指示しても、英語で返答してくることがあります。
以上で結論が出てしまっていますが、実際にスプレッドシートでLlama3を動かしてタスクを処理させてみると、精度の変化がとても顕著でしたので、実例を交えてご紹介したいと思います。
文章のラベリングタスク
お客様の声(ご意見)50個を一覧し、それを感情分析してから「喜怒哀楽」のどれかに割り振るという、仕分け作業をLlama3にやってもらいました。
ロール有りの場合は、90%ぐらいの回答精度、ロール無しだと70%ぐらいに精度が落ちました。
精度の確率は感情分析の精度と、フォーマットに沿って回答が出力できているかの両方で見ています。
B列のプロンプト:ロール有り
C列のプロンプト:ロール無し
計算問題タスク
やや複雑な計算問題を20問解いてもらうタスクです。
B列がロール有、C列がロール無です。
結果としては、ロール有が17/20の正解。ロール無しが13/20の正解。
かなり回答精度に違いがでました。
もちろんLLMの回答は確率的な揺らぎがありますが、何度か試してもBがほとんどの場合でリードしていました。
B列のプロンプト:ロールプロンプト有り
C列のプロンプト:ロールプロンプト無し
この結果から分かったこと
現時点でも上手くRAGを適用すれば、Llama3でもスプレッドシートと連携することで実業務の一部をサポートできるポテンシャルがある。
ロールは回答精度に与える影響度が相当高いので、普段から積極的に使っていく方が良い。
高度なLLMでも、ロールプロンプトを適切に設定することで、さらなる精度向上が期待できる。
今回のケースを通じてローカルLLMとの付き合い方が少し分かってきて、今後のオープンソースLLMの軽量化と進化がすごく楽しみになりました。
皆さんも何か気づきがありましたら是非コメントでお知らせください。
AI-Bridge Labについて
私たちAI-Bridge Labは、最先端のAI技術を使って、企業のDX(デジタルトランスフォーメーション)を支援しています。 LLMや画像生成AIを使ったコンテンツ制作や社内でのAI人材育成など、AIを活用したビジネス課題の解決をサポートしています。
もしAIの導入にお悩みの方は、ぜひ一度お問い合わせください。 一緒に、AIを活用した新しいビジネスの可能性を探っていきましょう!
最後まで読んでいただき、ありがとうございました! 😄
スキや、Xアカウントのフォローもぜひお願いします!
皆さまの温かいサポートのおかげで、活動を続けることができています。もしよろしければ、引き続き支援をお願いできますと幸いです。より質の高い記事投稿に励みます!