![見出し画像](https://assets.st-note.com/production/uploads/images/150592625/rectangle_large_type_2_b767c4f59a070d2abcdaf9c5c0525981.png?width=1200)
【トークン数99%カット】gpt-4o-miniをファインチューニングする方法を解説
この記事では、gpt-4o-miniをファインチューニングして織田信長のような人格で会話するAIを作成する方法を紹介します。
ファインチューニングとは?
ファインチューニングとは、AIモデルを特定のタスクやキャラクターに合わせてカスタマイズする技術です。
例えば、下の画像は、織田信長AIとの会話データをもとにファインチューニングされたgpt-4o miniモデルに「自己紹介してください」と指示した時の出力です。
![](https://assets.st-note.com/img/1723541420642-rIG5aLhk67.png?width=1200)
このように、ファインチューニング済みモデルは、複雑なプロンプトによる指示なしでも、織田信長らしい口調と性格を再現できています。
ファインチューニングでできること
ファインチューニングを行うことで、他にも以下のようなことが可能になります。
特定の出力をより確実に生成: AIに特定のタスクを実行させる際の信頼性を向上させることができます。例えば、商品名や日付などの情報を正確に抽出するように訓練することができます。
複雑な指示への対応力向上: AIが複雑なプロンプトを理解し、それに従って動作するように訓練することができます。
エッジケースへの対応: あらかじめ想定していなかったような、特殊なケースにも対応できるようにAIを訓練することができます。
新しいスキルやタスクの習得: プロンプトで表現することが難しい新しいスキルやタスクをAIに学習させることができます。
さらに、ファインチューニングはコスト削減にも効果的です。
例えば、最新のgpt-4oで優れた結果を得られる場合でも、gpt-4oの出力を使ってgpt-4o-miniをファインチューニングすることで、同等の品質を維持しながら、より短いプロンプトで済むようになり、コストを削減できます。
ファインチューイングの手順
それでは早速、gpt-4o-miniに「織田信長」のような口調や人格で会話させるためのチューニング手順を、ステップごとに説明していきます。
ステップ 1:GPTsを使用して、ファインチューニングの元となる会話データを作成
まず、ファインチューニングに使用するデータを作成します。
今回は、事前にGPTsで織田信長ボットを作成し、そのボットとの会話データを使います。
GPTsで織田信長ボットを作成する際に使用するプロンプトは、以下の記事で紹介されているものを使用しています。
デヴィ夫人AIのような人格を持ったAIを作るためのプロンプト
![](https://assets.st-note.com/img/1723538467593-JvDZeAYdea.png?width=1200)
ステップ 2:会話データをファインチューニング用のデータセットに変換
次に、GPTsで作成した会話データを、ファインチューニング用のデータセットに変換します。
ファインチューニング用のデータセットは、JSONL形式で記述する必要があります。
JSONL形式とは、1行ごとにJSONオブジェクトを記述したテキストファイルです。
ChatGPTを使ってJSONL形式に変換
JSONL形式への変換は、ChatGPTを使って簡単に行うことができます。
具体的な手順は以下の通りです。
GPTsで作成した会話データをChatGPTにコピペします。
以下のプロンプトをChatGPTに入力します。
以下のようなトレーニングデータがあります。以下をみてください。
```
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}
```
以下の会話データを上記のフォーマットに整形してください。assistantのロールは「あなたは織田信長です。」に統一してください。
```
{ここにGPTsで作成した会話データをコピペ}
```
![](https://assets.st-note.com/img/1723538560882-FABOLY4Glv.png?width=1200)
ChatGPTが出力したJSONL形式のデータをコピーします。