プロンプトだけじゃない!自社業務に特化したChatGPTカスタマイズのヒント
ChatGPTやBardなどの大規模言語モデル(以下LLM=Large Language Model)を自社で活用しよう!という際にすぐにあたる壁が「データをどう読ませればいいんだ?」ということです。
「ブレインストームの相手になってください」程度であれば、プロンプトでどんな内容を一緒に会話したいかを設定すれば事足りるでしょう。しかし議事録を作成する場合文字数の壁があります。1時間の会議の文字起こしは12000文字程度ですが、ChatGPTが扱えるのはわずか2000文字程度です。契約書の中身を解説してもらおうと思っても、同じく容量オーバーになってしまいます。
また特定のタスクに特化させようと思うと追加の学習が必要になります。たとえばSNSのモデレーション(悪意のあるコメント・誹謗中傷をブロックしたり注意したりする)するボットを作る場合、何が悪意のあるコメントで何がそうでないのか、どう理解させれば良いのでしょうか?
この記事では、プロンプト、エンベッディング、ファインチューニングの基本的な説明と、それらが持つ利点と注意点についてわかりやすくお伝えします。
手軽で柔軟!プロンプトを工夫する
まず、プロンプトはAIに何を尋ねるかやどんな作業をさせるかを指示する大切な要素です。これによりAIに特定の仕事をしてもらったり、特定の質問に答えてもらったりすることができます。よくいうプロンプトエンジニアリングもこれにあたりますが、簡単に言えば情報をプロンプトの中に詰められるだけ詰めるということです。
プロンプトエンジニアリングとは?ChatGPTで代表的な12個のプロンプトを実演!
契約書でも一部だけをコピペして「ここでいう●●とはどういう意味ですか?」などと聞くこともできますし、自分で書いたメールのドラフトを「丁寧で思いやりのあふれるドイツ語に直してください」と書き直させることもできます。
(筆者が最も使うのは英語の書き直しです。文法的に合っていても自然でない英語をトーンも含めて書き直してくれるので、特に丁寧に物事を伝えたいが言い方を考えるのが大変な時によく使います。また、感動しているのが少ないボキャブラリーで伝わらない時にも言い換えをしてもらっています)
プロンプトはロール(役割)の設定もできます。「あなたは英語教師です」「プログラマーです」「パソコンの販売員です」などと設定することでそのタスクを行ってもらうことができます。どのようなフローでどのような会話をしてほしいかを指示さえできれば、比較的容易にカスタムボットを作ることが可能です。
プロンプトのメリットはその手軽さと柔軟さです。指示を出してみて、返答が思い通りでなければ言葉を付け加えてみる、削ってみる、言い換えてみるなどすることで簡単にカスタマイズすることができますし、他の人に共有することも容易です。
逆にデメリットはやはり文字数の上限です。実はClaudeというGoogleが買収してGPT4のクオリティとも遜色ないLLMは何と5万文字を読むことができます。そういう意味ではデメリットは少ないですが、APIでプロンプトを送る場合文字数に応じて金額があがるため、やはりプロンプトの文字数は少ないに越したことはありません。
膨大なマニュアルを手に答えさせる、エンベッディング
この文字数の上限を突破するためによく使われる手法がエンベッディングです。これはLLMに大きなマニュアルを渡して、必要に応じて読ませる、というようなものです。ちょっと技術的なことを言うと、エンベッディングは、AIにとってテキストをわかりやすい数値(ベクトル)に変換しています。ベクトルというのは数字の羅列ですが、この数字は文章同士の意味を比較して、近いのかどうかを理解することに使えます。
つまりエンベッディングは質問のベクトルに近いベクトルをもった文章をテキストから見つけ出してプロンプトに入れる、ということをしているのです。
これにより何十ページもある論文のPDFを読ませたり、決算報告書を読ませたり、動画の要約をさせたりすることもできます。CSVなどのデータを読ませてデータ分析することも可能です。
ChatGPTの「Code Interpreter」のスゴさ ノーコードでデータ分析&画像生成
後程紹介するファインチューニングに比べると安価で専門的な知識をもったボットをつくることができるのはメリットですが、回答の精度を上げるにはデータの量を増やしたり、読ませるデータを加工するなど手間をかける必要があります。
特定タスクに特化させるファインチューニング
そして最後に、ファインチューニングは大きなデータを使って学んだAIを特定の仕事に適応させる方法です。これによって、少ないデータでもより役立つAIを作れます。また、ファインチューニングは便利ですが、過度に特定のデータに頼りすぎてしまったり、十分なデータが必要だったりすることにも気をつけましょう。
エンベッディングとは異なり、ファインチューニングは知識や振舞い方が頭と体に染みついているというイメージです。具体的にエンベッディングにとって難しいことを紹介すると、エンベッディングは大きな文章の中の関連性を見つけ出すことは不得意です。たとえば推理小説があった場合、色々な伏線をつなげて理解することは複数の断片的な文章を見つけなければいけないので困難です。
また、振舞い方を学ぶのも難しいです。例えば、ラベル付けをする場合の振舞い方は以下のようになります。
「今日は誕生日」→「うれしい」
「今日は雨でBBQが中止」→「かなしい」
これらのようなパターンを覚えさせるにはファインチューニングが向いています。ChatGPTは誕生日やBBQなどのパターンを理解しているかもしれませんが、SNSの投稿やコメントで「自社のブランドに興味がありそうかどうか」といったラベルを学習させるにはどうしたらよいでしょうか。あるいは「社内ルールとして●●するのは大丈夫か?」という質問に「問題なし・あり」といった回答を学習させる場合もファインチューニングが活用できます。
Googleは医療アシスタントの開発でマイクロソフトに対抗しており、ファインチューニングはAIの特化において重要な手法であると言えます。
たとえば品質検査のデータがあった場合、どの数値がどうであればどういった不具合なのか診断できるボットというものが作れれば品質の向上により多くの、専門的知識の無い方も巻き込むことができます。
ただし、ファインチューニングは上記の二つに比べると格段にハードルが高く、技術的な知識と質の高いデータが必要になります。またデータの数があれば良いというものではなく過学習(無視すべき外れ値も正しいデータと勘違いし、本来の期待する振舞い通りに動いてくれないなど)のリスクもあります。また当然ですがコストも上記の二つに対して圧倒的に高いです。
おすすめはエンベッディング。まずは決算書
いかがでしょうか。ひとえにLLMを鍛えるといっても様々な方法があり、一長一短があります。この中で最もおすすめなのはエンベッディングで、現在最も実践的な事例が報告されている分野でもあります。
まずは慣れ親しむ意味で長文のPDFを読ませてみて、質問をしてみてはいかがでしょうか。ChatGPTの有料版をお使いの方はプラグインでAsk YourPDFというものがありますので、是非決算書や自分が加入している保険の重要事項説明書など長文で読まないけれど大切なことが書いてあるものを解説してもらってみてはいかがでしょうか。(ChatGPTの有料版をお使いでなくてもChatPDFというようなツールもありますので是非ためしてみてください)
大好評!「マーケティングのための生成AI活用大全」のダウンロードはこちらから
*他にもChatGPTを活用したアイデアを探している際はこちらのブログもご覧ください。