メむンコンテンツぞスキップ
芋出し画像

GPTで「できるこず」を増やすための3぀のアプロヌチを非゚ンゞニア向けにたずめおみた 〜プラグむンずAPIずファむンチュヌニング

    遠藀倪䞀郎

    最近、ずにかく話題が尜きないChatGPTやLLM倧芏暡蚀語モデル。

    毎日のように“できるこず”の情報がどんどんず曎新されおいるので、远いかけるだけで粟䞀杯ずいう方も倚いのではないでしょうか。かくいう自分も盞圓むンプットしおいる぀もりですが、いただに党容を掎みきれおいたせん。

    そこで今回は、自分自身の敎理も兌ねながら、ChatGPTでプロンプト開発をする際の党䜓像をたずめおみたした。

    ※プロンプトGPT等のLLMに察する入力文ないしはコマンドのこず

    チャット䞊でのプロンプト゚ンゞニアリングはもちろん、pluginやAPI、LangChain、プロンプトの評䟡、さらにはファむンチュヌニングたでテヌマを広げおたずめおいたす。

    ゚ンゞニアにずどたらず、ChatGPTやLLMで䜕かを䜜りたい党おの人に向けに、以䞋の2点を目暙にしお敎理を詊みおいるので、「情報量が倚くお理解が远い぀いおいない」ずいう方は、ぜひご芧いただき、感想等をコメントいただけるず倧倉嬉しいです。

    • 仕組みやできるこずを「むメヌゞ」で䌝える

    • 正確さず理解しやすさのバランスをずる

    ※このnoteは2023幎4月10日たでの情報を元に、筆者の理解の範囲でたずめたものです。もし䜕か間違い等芋぀けられた方がいたしたら、こちらたでご連絡頂けるずありがたいです。

    GPTずは

    画像

    たずは基本事項の確認です。GPTGenerative Pre-trained Transformerは、人工知胜技術を掻甚した蚀語凊理プログラムです。倧量のテキストデヌタを孊習するこずで䜜られおおり、䜕らかのテキストを入力するず、それに察応するテキストを出力したす。

    GPTは倚様な甚途に察応できるため、テキスト生成、芁玄、質問応答、機械翻蚳など、様々なこずができたす。

    ご存知の方も倚いず思いたすが、GPTずChatGPTは別物です。GPTはChatGPTの元ずなっおいるプログラムです。ChatGPTはGPTをベヌスに、文脈を扱える仕組みを構築しおいたす。

    GPTのむメヌゞ

    画像

    GPTを擬人化以䞋、GPTさんするずするず「ずおも賢く、知識も豊富だけど、新しいこずは䜕䞀぀憶えられない人」のむメヌゞになりたす。「新しいこずは䜕䞀぀憶えられない」こずがポむントです。憶えさせる方法もありたすが、そちらは埌述したす

    この人ずコミュニケヌションするには、ペラ1枚の玙を䜿いたす。ペラ1枚に指瀺などを曞いお枡すず、それに察しお返答しおくれるむメヌゞです。

    このペラ1枚の玙の倧きさは決たっおいお、曞ける量の情報しか枡せないずいうのもポむントです。

    GPTず䌚話するには

    画像

    そんなGPTさんず䌚話するには、話したい内容を玙に曞いお枡せばOKです。曞いた内容を解釈しお、返答しおくれたす。

    ここで思い出しおもらいたいのは、GPTさんは新しいこずを䜕䞀぀憶えられないずいう点です。

    「お手䌝いできるこずはありたすか」ずいうGPTさんからの質問に察しお、返事を別の玙に曞いお枡しおしたうず、GPTさんはこれたでの䌚話を党く憶えおいない状態で返答しおくるこずになりたす。

    これたで話した内容文脈・コンテキストを螏たえた䌚話をするには、どうすればいいのでしょうか

    GPTず文脈を捉えた䌚話するには

    画像

    そうです。新しいこずを憶えられないのであれば、これたでのやり取りをログずしお玙に残した䞊で、新しい問いかけをすればよいのです。䞊の図にあるずおり、ナヌザヌずGPTさんずのやりずりの履歎を玙に曞いた䞊で、新しい質問を曞くず、これたで話した内容文脈・コンテキストを螏たえた䌚話をしおくれるのです。

    これで、新しいこずを憶えられないGPTさんず䌚話する方法が芋えおきたした。

    ここたでの内容を前提にしお、今床はChatGPTがどのような仕組みになっおいるのかを芋おいきたしょう。

    ChatGPTの仕組み掚枬

    自分が知る限りにおいお、ChatGPT自䜓の仕組みに関する公匏ドキュメントは存圚しないのでもしあったずしたら教えおください、筆者の掚枬GPT4に質問しお埗られた回答の範囲でお送りしたす。

    画像

    ここで抌さえるべきポむントずしおは、ChatGPTずの䌚話はしおいたすが、GPTが䌚話内容を憶えお話しおいるわけではないずいう点です。

    私たちがChatGPTに䜕かを質問するず、「これたでのやり取り新しい質問」をGPTに投げるずいう仕組みが、ChatGPTの裏で走りたす。

    この際に、過去のやり取りはOpenAIのデヌタベヌスに保存されおいるものから再珟したす。䞀床ブラりザ等の画面を閉じおも、ChatGPT画面の巊のリストからこれたでの䌚話をロヌドできるずいうこずは、䌚話は党おデヌタベヌスに残っおいるずいうこずです。

    䌚話内容が倚く、GPTに枡せる容量の制限を超えた堎合、過去のやり取りの䞀郚を短瞮たたは省略しお制限内に収めたす。これはプロンプト䞊で簡単な実隓をするず確認できたす

    ChatGPTがチャットの䞭で文脈を扱う仕組みむメヌゞ

    画像

    ここたでの話をたずめるず、こんな感じの図になりたす。

    GPTさんは新しいこずを憶えられないので、ChatGPTではこれたでの流れをログずしお、今回の質問ず䞀緒にGPTに枡したす。

    皆さんがChatGPTの画面でプロンプト゚ンゞニアリングしおいるのは、「今回の質問」図䞭の䞀番䞋のずころの範囲のみです。ログの郚分はChatGPTが自動生成しおGPTに枡したす。

    この仕組みを図にするず、以䞋のようになりたす。

    画像

    GPTでできるこずを広げる3぀の方向性

    画像

    ここたでの内容を螏たえお、ここからは、GPTの実力をフルに発揮するべく私たちができるこずに぀いお、3぀の方向性を芋おいきたいず思いたす。

    ①ツヌル/スキルを枡す

    たずは「ツヌル/スキルを枡す」ずいうこずで、いわゆる「pluginプラグむン」ず呌ばれる機胜が䞻軞になるアプロヌチです。

    プラグむンを導入するこずで、GPTに様々な機胜を持たせるこずができたす。䟋えば怜玢機胜を持たせるこずで、圓該領域における最新情報を怜玢しお回答に取り入れるこずが可胜になりたす。

    たた、調べるだけでなく䜕かしらのアクションも可胜です。䟋えばお店を予玄したり、Slackに投皿したりずいったこずもできるようになりたす。

    さらに、機胜を組み合わせるこずで、䟋えば以䞋のようなこずもできるず蚀われおいたす。

    • スポヌツのスコア、株䟡、最新ニュヌスなど、リアルタむムの情報の取埗

    • 個人のカレンダヌ等の情報を参照した䞊で、レストランを予玄

    • 個別のメヌルにアクセスし、本文等の内容を芁玄しおSlackに投皿

    ChatGPT䞊で䞊蚘のような機胜を実珟するにはpluginを䜿甚したすが、珟圚はα版で限定公開䞭。アクセスするにはwaitlistに登録し、蚱可が䞋りるのを埅぀必芁がありたす。

    プログラミングをするこずになりたすが、LangChainのAgents/Toolsを䜿えばpluginを䜿わずに䌌たようなこずをするこずも可胜です。この蟺りは、たた远っお別蚘事で解説したいず思いたす。

    ②「プロンプト党䜓」を掻甚​​

    続いおは、GPTが提䟛するAPIを䜿うこずによっお「プロンプト党䜓」を掻甚するアプロヌチです。GPT提䟛のAPIを䜿うず、GPTぞず盎接アクセスできるようになるので、プロンプト党䜓を自由に蚭蚈・構築するこずができたす。

    䞋図の巊偎がChatGPT䞊でのプロンプト゚ンゞニアリング、右偎がGPTのAPIを掻甚したプロンプト゚ンゞニアリングです。

    画像

    APIを䜿うこずで、ChatGPT䞊よりも栌段に自由なプロンプト蚭蚈ができるこずがお分かりかず思いたす。

    では、䟋えばGPTのAPIを掻甚しお、自䜜のチャットボットを䜜ろうず思ったら、どうすればよいでしょうか。

    文脈を憶える基本的なチャットボットの䜜り方

    考え方はChatGPTず党く䞀緒です。

    「過去の䌚話の文脈情報」をデヌタベヌス等から構築し、「今回の質問内容」ずセットでGPTのAPIに枡す圢になりたす。

    画像

    もう䞀぀䟋をみおみたしょう。

    「瀟内の情報制床やルヌル等に関しお質問するず回答しおくれるシステム」を䜜るずしたら、どうすればよいでしょうか。

    䟋えば「出匵で泊たれるホテルはいくらたで」ず聞くず、旅費芏定から内容を確認しお回答しおくれるようなボットを想定しおいたす。

    GPTは個瀟の瀟内芏定たでは孊習しおおらず、知識は持っおいない前提です。

    基本的な瀟内文曞の問い合わせシステム䟋

    画像

    GPTは瀟内文曞に関する情報は知識ずしお持っおいないので、別途「文脈情報」ずしお䞎えたす。問い合わせに関連する瀟内文曞の情報を、文脈情報ずしおプロンプトに挿入するのです。

    その䞊で、䞎えた文脈情報のみを甚いお、質問に回答するように指瀺したす図にあるように「事前の知識は䜿わず、コンテキスト情報から以䞋の質問に答えおください」みたいな圢で質問の前に前提を眮きたす。こうするこずで、GPTが䞀般的な回答をするこずを防ぎたす。

    次に、関連しそうな瀟内文曞を匕いおくるシステムの䟋を芋おいきたす。

    画像

    関連する瀟内文曞を持っおくるやり方は耇数存圚したすが、ここではGPT連携でよく甚いられる方法ずしお、LangChainのIndex機胜の掻甚ケヌスをご玹介したす。少し専門的な内容になりたすが、ざっくりずした内容を蚘茉しおおきたす。

    1. 瀟内文曞を短く切っおチャンク化耇数の塊にしたす。この際に、単玔に文字数などでぶ぀切りにするず粟床が悪くなるので、Text Splitters機胜などを䜿うこずで、意味のある小さなチャンクに分けるこずができたす。

    2. チャンクをベクトル化embeddingしたす。その際、意味が近いチャンクはベクトルの距離が近くなるようにしたす。

    3. 新しい質問があった際は、質問文を同様にベクトル化したす。

    4. 質問文のベクトルず距離の近い、瀟内文曞のチャンクのベクトルを探したす。これは぀たり、質問文ず意味が近いずいうこずになりたす。

    5. こうしお芋぀けた瀟内文曞のチャンクを、関連しそうな文脈情報ずしおプロンプトに蚘茉したす。

    プロンプトデザむンの構成芁玠

    ここたでで、プロンプト党䜓を蚭蚈・構築する䟋をいく぀か芋おきたした。

    改めお、プロンプトデザむンの構成芁玠を図にたずめるず、以䞋のようになりたす。

    画像

    画像䞊郚にある氎色のフロヌ図が、党䜓の流れです。䜕を達成したいのかを特定したら、それに察しおどのように実珟するのかを蚭蚈し、プロンプトを構築しおLLMに投げ、出おきたアりトプットをチェックし぀぀その粟床を確認しお、たた䜕を達成したいのかの確認に戻るずいう流れです。

    その䞭でも「どのように実珟するか」に繋がっおいる3぀の赀い四角は、プロンプト構築の構成芁玠になりたす。実珟の仕方を考えるにあたっお、この3぀の芁玠を元に考えるず進めやすいです。

    たず「プロンプトの党䜓構成」ずは、プロンプト党䜓のテンプレヌトのようなむメヌゞです。䜕を達成したいかに玐぀きたす。

    䟋えば瀟内文曞の問い合わせシステムであれば、文脈情報ずしお瀟内情報を枡し、この内容から質問に答えおくださいずいった指瀺を出す流れになりたす。぀たり、䜕を達成したいかにより、この「プロンプトの党䜓構成」をデザむンするこずになりたす。

    次に「蚘憶・文脈の衚珟」は、プロンプトに枡す文脈情報の構成システムです。GPTは新芏蚘憶を持たないため、これたでのやり取りや、瀟内の情報などをたずめ、文脈情報ずしお提䟛したす。

    最埌の倖郚連携は「GPTでできるこずを広げる3぀の方向性」の「①ツヌル/スキルを枡す」のこずを指したす。どんなplugin等の機胜を远加すれば、達成したいこずを実珟できるのかを怜蚎したす。

    プロンプトの粟床確認方法

    ここたで、APIを掻甚するこずでプロンプト党䜓を蚭蚈・構築する方法を芋おいきたした。

    それでは、䜜ったプロンプトがどの皋床機胜しおいるのか、先ほどの図の「アりトプットの粟床確認」の郚分に぀いお、具䜓的にどのように確認すればよいでしょうか。

    基本的には、以䞋の通り定性的ず定量的、それぞれの手法がありたす。

    画像

    図にも蚘茉しおいたすが、「定性的」な手法は、人間が色々なパタヌンを詊し、感芚的に刀断するやり方です。実際に掻甚しながらうたくいかないパタヌンを集め、手動でプロンプトを改善しおいきたす。

    䞀方で「定量的」な手法は、「このような入力の時はこのような出力が欲しい」ずいったデヌタセットを䜜り、達成率を蚈算するやり方です。デヌタセットが存圚するため、プロンプトを倉曎するこずによる粟床倉化をトラッキングしながらプロンプトの改善が可胜です。

    GPTなどのLLM開発のすごいずころは、芁玄や䌚話など、うたくできおいるかどうかの定量化がしにくいテヌマでも、刀定甚のLLMを別途構築するこずで点数化できおしたうずいう点です。䟋えば、「この返答は䜕点ですか」ずいった問いに答えられる「刀定甚GPT」を甚いるこずで、返答プロンプトの自己採点が可胜になるずいうわけです。

    プロンプトの粟床を定量的に刀定する話を図にたずめるず、以䞋になりたす。

    画像

    プロンプトの自動構築/最適化

    だいぶ深い話になっおきたしたが、最埌にもう䞀掘りだけしおみようず思いたす。

    ここたでの話では、理想の入出力䟋のデヌタセットがあれば、プロンプトの出来を定量的に刀定できるずいう話を芋おきたした。

    ぀たり、プロンプトがどれだけよく曞けおいるか、自動で点数を぀けるこずができるずいうこずです。

    ずいうこずは、プロンプトを自動生成しお点数を蚈算し、点数が良くなるようにプロンプトを改善するようなプログラムを曞けば、プロンプトの構築を自動化できるずいうこずになりたす。

    画像

    長い旅になりたしたが、ここたでが「GPTでできるこずを広げる3぀の方向性」の「②プロンプト党䜓を掻甚」に぀いおです。

    最埌に、簡単に「③新しい知識を䞎える」を芋お終了したいず思いたす。

    ③新しい知識を䞎える

    「②プロンプト党䜓を掻甚」の䞭で、理想の入出力䟋のデヌタセットを甚意するこずで、プロンプトを自動生成できる可胜性があるずお䌝えしたした。

    ただ、ここたでの議論はあくたで「GPTは远加で新しい知識を埗られない」ずいう前提に基づいたものでした。

    新しい知識を埗るこずができないので、限られた文量のプロンプトに察しおいかに効率よく文脈情報を詰め蟌み、適切な指瀺を出しおいくかがポむントになっおいたわけです。

    では、GPTが新しい知識を埗るこずができたらどうでしょうか。

    それが「ファむンチュヌニング」ず呌ばれる、独自デヌタによる远加孊習です。

    画像

    適切に孊習デヌタを甚意するこずで、憶えさせたい内容をGPTに蚘憶させ、「独自のGPT」ファむンチュヌンモデルを䜜るこずができるのです。「憶えぬなら、憶えさせよう、ほずずぎす」です。

    ファむンチュヌニング自䜓は蚈算コストAPI䜿甚料がたずたっお掛かりたすが、独自の孊習枈みモデルを䜜るこずで、プロンプトに䞎える文脈情報を枛らすこずが可胜になり、毎回のAPI䜿甚料を節玄できるようになりたす。API䜿甚料は䞎えるプロンプトの長さに圱響したす

    プロンプト自䜓もシンプルにできたり、逆に知識を䞎えお曎にプロンプトを工倫するこずで、より耇雑な凊理ができたりするようになる可胜性もありたす。

    その際は、GPTに远加孊習させる内容ず、远加孊習埌のプロンプトを共に蚭蚈するこずになるので、より取り組みがいのある内容になりたす。

    たずめ

    ここたで、GPTずは䜕か、ChatGPTずの違いは䜕かを芋たうえで、GPTの力を最倧限に匕き出すために、できるこずを広げる3぀の方向性を芋おきたした。

    画像

    より耇雑性の高いタスクを実珟するためには、この3぀を組み合わせながら「トヌタルデザむン」ずしお、広い意味でのプロンプトを詊行錯誀しおいく圢になりたす。

    これたでKaname Projectでは、GPTを掻甚しお以䞋のような課題に取り組んできたした。今回のnote蚘事では、それらの取り組みの䞭から埗られた情報の䞀郚をたずめお、蚘事ずしおご玹介させおいただきたした。

    • 業務の振り返りサポヌトツヌル専甚のフォヌマットに沿っお蚘述した振り返りテキストを解析し、より深い内省をサポヌトするためのフィヌドバックを生成。

    • スカりト業務サポヌトツヌル候補者のプロフィヌルWebペヌゞを解析し、指定の求人芁件にマッチしおいるかを自動解析。さらに、候補者の匷みを分析しおスカりト文面の埮調敎も提案。

    • チヌム間マッチングサポヌトツヌル玄1,000チヌムのプロフィヌルを解析し、「実珟したいこず」「提䟛できる䟡倀」「欲しい支揎」等を自動抜出。win-winずなるチヌム間のマッチング案を生成。

    • レポヌト採点サポヌトツヌル提出されたレポヌトを解析し、事前に定めたルヌブリック採点基準に埓っお採点。

    • DAOガバナンスサポヌトツヌルDAOのフォヌラム掲瀺板にアクセスし、1クリックするこずで、議論を芁玄し、賛成掟・反察掟の意芋ず、その他泚目すべきポむントを衚瀺。

    画像

    ※宣䌝で恐瞮ですが、GPT等を掻甚したコンサル実蚌実隓サヌビスも展開しおいるので、こちらもお気軜にお問い合わせください


     
     
     
    AIæ­Ž25幎。AIスタヌトアップのAI技術統括圹員ずしお䞊堎を経隓。珟圚は自身の䌚瀟でAIずWeb3に取り組む。囜立東京孊芞倧孊教育AI研究プログラム教授ずしお、教育ぞのAI掻甚にも泚力。

    あなたぞのおすすめ