top of page
AIbox magazin
スノーリーズ株式会社(Snowlys inc.)が運営するAI情報発信メディア

新機能解禁!ChatGPTのファインチューニングでカスタムAIを手軽に構築する方法

ファインチューニングとは何か?

ファインチューニング(Fine-Tuning)は、既存のAIモデルに対して、特定のデータセットを用いて再学習を行い、そのモデルを特定の用途やニーズに最適化するプロセスを指します。

この手法を用いることで、ChatGPTのようなAIモデルをカスタマイズし、特定の業界や企業内の情報に特化した応答ができるようになります。


従来のChatGPTの限界

従来のChatGPTは、主にインターネット上に公開されている膨大なデータを基にして訓練されています。そのため、一般的な知識や広く共有されている情報に対しては有用な回答を提供できる一方で、企業内の特定のデータや業務プロセスに関する質問には対応できませんでした。例えば、企業の独自の製品仕様や内部の手続きに関する質問には、答えられないことが多かったのです。


ファインチューニングの役割

ファインチューニングは、このような限界を克服するための手段です。具体的には、企業が自社のデータ(例えば、内部文書、カスタマーサポート履歴、社内マニュアルなど)を用いてモデルを再訓練することで、ChatGPTをその企業固有の情報や業務プロセスに対応できるようにします。


ファインチューニングのプロセス

  1. ベースモデルの選択: まず、GPT-4oのような既に訓練された大規模なAIモデルを選択します。このベースモデルは汎用的な知識を持っていますが、特定のタスクには最適化されていません。

  2. カスタムデータセットの準備: 企業が持つ特定のデータ(例: 製品仕様、顧客データ、社内プロセス)を用意し、これをモデルの再訓練に使用します。このデータセットは、ファインチューニングによってモデルに新たなスキルや知識を付与するための重要な要素です。

  3. ファインチューニングの実行: カスタムデータセットを用いてモデルに再学習を施します。このプロセスで、モデルは新しいデータに基づいて応答の仕方や判断基準を調整し、特定の業務やタスクに対してより適切な応答を生成できるようになります。

  4. 評価と微調整: ファインチューニングされたモデルの性能を評価し、必要に応じてさらなる微調整を行います。これにより、モデルが企業の特定のニーズに完全に適応するようになります。


ChatGPTでファインチューニングの実践

実際にChatGPTでファインチューニングを行ってみます。


ベースモデルの選択

現在、次のモデルでファインチューニングが利用可能です。

  • gpt-4o-2024-08-06

  • gpt-4o-mini-2024-07-18

  • gpt-4-0613

  • gpt-3.5-turbo-0125

  • gpt-3.5-turbo-1106

  • gpt-3.5-turbo-0613

  • babbage-002

  • davinci-002

ファインチューニングされたモデルをさらにファインチューニングすることもできます。

これは、追加データを取得し、以前のトレーニング手順を繰り返したくない場合に便利です。


OpenAIはgpt-4o-miniが最もコストパフォーマンスが良くなることを期待しているようです。

gpt-4o-miniパフォーマンス、コスト、使いやすさの面で、ほとんどのユーザーにとって最適なモデルになることを期待しています。

カスタムデータセットの準備

今回はこのようなカスタムデータを用意しました。

ファイルは`jsonl`という拡張子で保存する必要があります。

{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "商品の配送状況を知りたいのですが、どうすれば確認できますか?"}, {"role": "assistant", "content": "配送状況は、注文確認メールに記載されている追跡番号を使って確認できます。追跡番号を使って、配送業者のウェブサイトで現在のステータスを確認してください。もし追跡番号が見つからない場合は、カスタマーサポートに直接お問い合わせください。情報源: 当社のFAQページ(https://example.com/faq)"}]}
{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "注文をキャンセルしたいのですが、どうすればいいですか?"}, {"role": "assistant", "content": "注文キャンセルは、注文確定後24時間以内であれば可能です。キャンセル手続きは、当社のウェブサイトの注文履歴ページから行うことができます。それ以降のキャンセルは、返品手続きが必要になる場合があります。詳細は当社のキャンセルポリシーをご覧ください。情報源: 当社のキャンセルポリシーページ(https://example.com/cancellation-policy)"}]}
{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "購入した商品に欠陥があった場合、どうすればいいですか?"}, {"role": "assistant", "content": "商品に欠陥があった場合、まずは当社のカスタマーサポートにご連絡ください。欠陥の詳細を確認し、交換または返金の手続きをご案内いたします。必要に応じて、写真などの証拠を提供していただくことがあります。情報源: 当社の返品・交換ポリシーページ(https://example.com/returns-and-exchanges)"}]}
{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "サポートに連絡したいのですが、どのように連絡すればいいですか?"}, {"role": "assistant", "content": "サポートへの連絡は、電話、メール、またはチャットで行うことができます。詳しい連絡先情報は当社の『お問い合わせ』ページをご覧ください。情報源: 当社のお問い合わせページ(https://example.com/contact-us)"}]}
{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "保証期間が過ぎた製品でも修理してもらえますか?"}, {"role": "assistant", "content": "保証期間が過ぎた製品の修理は有償で対応可能です。修理の可否や費用については、当社のサポートセンターにお問い合わせください。製品の種類や状態によっては、修理が難しい場合もございます。情報源: 当社の保証および修理ポリシーページ(https://example.com/warranty-repairs)"}]}
{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "商品の支払い方法について教えてください。クレジットカード以外の方法はありますか?"}, {"role": "assistant", "content": "はい、クレジットカード以外にも、銀行振込、コンビニ払い、PayPalをご利用いただけます。詳しい手順は当社の支払いオプションページをご確認ください。情報源: 当社の支払いオプションページ(https://example.com/payment-options)"}]}
{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "アカウント情報を変更したいのですが、どうすればいいですか?"}, {"role": "assistant", "content": "アカウント情報の変更は、当社のウェブサイトにログイン後、『アカウント設定』ページから行うことができます。名前、住所、メールアドレスなどを更新できます。情報源: 当社のアカウント設定ページ(https://example.com/account-settings)"}]}
{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "クーポンコードの使い方を教えてください。"}, {"role": "assistant", "content": "クーポンコードは、購入手続きの際に『クーポンコード』欄に入力して適用できます。ご利用条件に合っていれば、割引が適用されます。詳細はクーポンポリシーページをご確認ください。情報源: 当社のクーポンポリシーページ(https://example.com/coupon-policy)"}]}
{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "海外への配送は可能ですか?"}, {"role": "assistant", "content": "はい、当社は多数の国に国際配送を行っています。ただし、配送可能な国と送料は地域によって異なります。詳しくは国際配送のページをご覧ください。情報源: 当社の国際配送ページ(https://example.com/international-shipping)"}]}
{"messages": [{"role": "system", "content": "あなたは優秀な社内アシスタントです。質問された内容には的確に答えてください。分からない場合は分からないと言ってください。回答には必ず情報源を含めてください。"}, {"role": "user", "content": "製品の使用方法について教えてください。オンラインで説明書を見られますか?"}, {"role": "assistant", "content": "はい、製品の使用方法については、オンラインの取扱説明書ページで確認できます。各製品ごとのマニュアルをPDF形式でダウンロード可能です。情報源: 当社の取扱説明書ページ(https://example.com/manuals)"}]}

ファインチューニングを使用してチャットボットやテキスト生成を行う際、リクエストのデータ構造には、主にroleとcontentというフィールドが含まれます。

これらのフィールドは、APIがユーザーとアシスタント(モデル)の間の会話の流れを理解するために使用されます。


1. role(ロール)

roleフィールドは、そのメッセージが誰からのものであるかを指定します。以下の3つの主要なロールが存在します。

  • system(システム):

    • システムロールは、モデルに対する全体的な指示や設定を行うために使用されます。これにより、モデルの動作や応答のスタイルを調整することができます。

    • 例: モデルのトーンやスタイル、特定のルールを設定するためのメッセージ。

  • user(ユーザー):

    • ユーザーロールは、実際に人間がモデルに送信するメッセージです。これが会話の出発点となります。

    • 例: 「今日の天気はどうですか?」といったユーザーの質問。

  • assistant(アシスタント):

    • アシスタントロールは、モデル自身が生成する応答です。このロールは、モデルがユーザーの質問や指示に対して返答するときに使われます。

    • 例: 「今日は晴れです。」といったアシスタントからの回答。

2. content(コンテンツ)

contentフィールドは、実際のメッセージの内容を含む部分です。このフィールドには、ユーザーやアシスタントが実際に話すテキストが入ります。


カスタムデータをChatGPTにアップロードする

まずはこのURLにアクセスします。

OpenAIのダッシュボードが表示され、`create`ボタンから新しいファインチューニングを作成します。


`Base Model`で現在ファインチューニング可能なモデルが表示されるのでどれか一つを選びます。

今回はGPT4o-miniを選択しました。

`Training data`で先ほど作成したjsonlファイルを選択します。


選択したら`Create`から作成します。


しばらくすると、ステータスが`Succeeded`に変わります。



画面右下に`Playground`というボタンがあるので、そこでテストができます。



今回は`現在の配送状況が知りたい`というメッセージを送ってみました。

すると、以下のように返答があり、しっかりとファインチューニングができていることが確認できました。

配送状況の確認は、注文確認番号を使って行うことができます。注文確認番号を教えていただければ、現在のステータスをお知らせします。もし確認番号がない場合は、名前と住所を教えていただければ、手動で確認することも可能です。

具体的な活用例

. FAQ対応の自動化

  • 現状: 多くのカスタマーサービスでは、よくある質問(FAQ)への対応にかなりの時間を割いています。これらの質問は、基本的に定型的な回答が決まっている場合が多いです。

  • ファインチューニングの活用: 企業が自社の過去のFAQデータや問い合わせ履歴を元に、言語モデルをファインチューニングすることで、特定の質問に対して的確な回答を自動的に生成できるようになります。例えば、製品の返品方法に関する質問が来た際に、詳細な手続きや必要な書類について正確に説明するように調整されたモデルを活用できます。

2. カスタマーサポートエージェントのサポート

  • 現状: 複雑な問い合わせに対して、エージェントが迅速かつ正確に対応するためには、過去のケースや製品情報を素早く検索・参照する必要があります。

  • ファインチューニングの活用: ファインチューニングされたモデルを用いて、エージェントが顧客からの質問に対して迅速に最適な回答を提供できるようにします。たとえば、特定の商品に関する技術的な問題についての問い合わせが来た場合、その商品に特化したモデルをファインチューニングし、過去の類似したケースやFAQから適切な解決策を提案します。

3. 多言語対応の強化

  • 現状: グローバルに展開する企業では、多言語でのカスタマーサービス対応が求められますが、全ての言語に精通したエージェントを揃えるのは難しいです。

  • ファインチューニングの活用: 言語モデルをファインチューニングして、特定の言語や方言に特化した問い合わせ対応を強化します。たとえば、日本語と英語の混在する問い合わせに対しても、自然で正確な対応ができるように調整されたモデルを利用することで、グローバルなカスタマーサービスを効率化します。

4. カスタマーセンチメント分析

  • 現状: 顧客の満足度や不満点を把握するために、問い合わせ内容やその後の対応履歴を分析する必要があります。

  • ファインチューニングの活用: 顧客の問い合わせ内容から感情を読み取るセンチメント分析に、ファインチューニングされたモデルを活用します。例えば、問い合わせ内容に含まれる「不満」「満足」といった感情を高精度で識別し、エージェントにリアルタイムでフィードバックを提供することで、より迅速で適切な対応が可能になります。



まとめ

ファインチューニングは、企業が自社の固有のニーズに合わせてAIモデルをカスタマイズするための強力な手段です。これにより、従来のChatGPTの限界を超え、企業固有の情報や業務プロセスに対応できるAIソリューションを実現することが可能になります。ファインチューニングを活用することで、企業はAIをより効果的に活用し、業務効率の向上や顧客満足度の向上を図ることができるでしょう。


参考文献

Fine-tuning now available for GPT-4o


参考

スノーリーズ株式会社のAIboxを導入することで、社内の資料やデータを学習して独自の企業独自の回答を生成するAIが実現できます。ChatGPTの社内版のような使い方が可能です。

無料トライアルからお試しいただくことも可能ですので、お気軽にお問い合わせください。

問合せ先


スノーリーズ株式会社について


バックオフィス向けソリューション AIboxについて


<おすすめ記事>

コメント


bottom of page