![見出し画像](https://assets.st-note.com/production/uploads/images/110538022/rectangle_large_type_2_90b55ceaf3467143751892223332bd14.png?width=800)
嘘を言わないChatGPTに仕事をしてもらう方法
お困りごと: ChatGPTが嘘を言うので業務で使えないのでは?
そんなことはありません。
この記事ではChatGPTとの付き合い方、技術的に嘘を言わせない方法を一緒に学べます。記事を読み終えると、ChatGPTの性質をざっくりと理解し、日常のプロンプトでも応用できます。
先日、社内用に、社内規約を元にして答えるチャットボット(AIちゃん)を制作しました。その事例をもとに、対処法をご紹介します。
![](https://assets.st-note.com/img/1689071549277-9xAsbx0aic.png?width=1200)
(5,000円/月 程度で運用中です)
嘘を言ってしまう原因
ChatGPTに正しい情報を伝えていないから
1. 質問者が正しく前提条件を伝えていない
2. 学習元のデータが古いまたは不公平な判断や偏見が含まれることがある
3. 文脈から前提条件や知らないことを想像で補って答えてしまう
2つの解決策
ChatGPTに嘘になる間違った回答をさせない方法は2つあります。
1. Fine-tuning(RLHF)
正解となる情報を人間がたくさん用意してモデルに追加学習させる。
→ 新しい情報を追加したり、間違った情報を修正する。
2. Embeddings
プロンプトに正解となる情報を埋め込んで、その文脈から質問する。
→ 新しい情報以外のことを答えさせない。
Fine-tuning は調整のために追加学習するデータが大量に必要です。Fine-tuning は多くの時間とお金がかかるため、今回は Embeddingsを採用しました。
Embeddingsの利用方法
Embeddingsはプロンプトに正解の情報を埋め込む手法です。
以下の3つの注意点を意識して使いましょう。
1. 文脈に使える最大トークン数。
2. 必要な情報を文脈としてプロンプトで伝えて回答してもらう。
3. 文脈以外の情報から回答することを禁止する。
それではEmbeddingsを使ったプロンプトを一緒に考えてみましょう。
もしもあなたが、映画『バック・トゥ・ザ・フューチャー』(原題: Back to the Future)のマーティだったと仮定して、偶然手に入れたタイムマシンで過去に遡って戻れなくなった場合、天才科学者のドクに助けを求めるには、どう伝えればよいでしょうか。プロンプトを考えてください。
![](https://assets.st-note.com/img/1689072010017-HdwpCOCicZ.png?width=1200)
【プロンプト例】
前提条件として文脈以外の情報から回答することは絶対にしないでください。
文脈:
1. マーティはデロリアンDMC-12という車をベースにしたタイムマシンで未来から1955年11月5日の6:00 AMにタイムスリップして来た。
2. 現在はタイムマシンのエネルギーが切れている。
3. フラックスキャパシター: タイムトラベルの主要な要素で、車の後部に設置されています。このデバイスは、1.21ジゴワットの電力を必要とし、その電力は通常、プルトニウムからの核分裂によって生成されます。フラックスキャパシターが充電されると、タイムトラベルが可能になります。
4. タイムサーキット: 車の内部に設置されており、目的の日付と時間を設定するためのデバイスです。
5. エネルギー供給: 当初、プルトニウムがエネルギー源として使用されていました。
6. 速度: タイムトラベルを開始するためには、車が時速88マイル(約141.6キロメートル)に達する必要があります。
7. 偶然手に入れた「Save the Clock Tower」というパンフレットはマーティが1955年にいる間に彼の母親(若き日のロレイン)から受け取ったもので、ヒルバレーの時計塔が1955年11月12日の10:04 PMに雷に打たれ、壊れてしまったという事実を記されていた。
あなたは天才科学者のドクです。祖父の口調で話します。私は『バック・トゥ・ザ・フューチャー』のマーティとして未来からデロリアンに乗ってタイムトラベルし、あなたの元に現れ助けを求めています。それでは上記の文脈から私が未来に戻るための必要条件をすべて回答してください。また必要条件を満たすユニークな提案を3つ検討し、実現可能性を10段階で評価してください。最後に一番よい方法を1つ提案してください。
プロンプトに文脈として前提条件が埋め込まれています。こちらの情報はChatGPTは知らない想定です。 実際のChatGPTの回答はこちらになります。
【回答】
ああ、マーティ、君が困っているとはな。未来に戻るためには、いくつかの重要な要素を考慮しなければならないぞ。
まず、以下の条件を満たす必要がある。
1. フラックスキャパシターの充電: これには1.21ジゴワットの電力が必要だ。当初はプルトニウムがエネルギー源として使用されていたが、現在はそのエネルギーが切れている。
2. タイムサーキットの設定: 目的の日付と時間を正確に設定する必要がある。
3. 車の速度: デロリアンが時速88マイル(約141.6キロメートル)に達する必要がある。
それでは、これらの条件を満たすためのユニークな提案を3つ考えてみよう。
提案1: 雷のエネルギーを利用する
「Save the Clock Tower」のパンフレットによると、1955年11月12日の10:04 PMにヒルバレーの時計塔が雷に打たれた。この雷のエネルギーを利用してフラックスキャパシターを充電することができるかもしれない。実現可能性は8/10。ただし、タイミングを正確に合わせる必要がある。
提案2: プルトニウムを探す
当初のエネルギー源であるプルトニウムを探し、それを使用してフラックスキャパシターを充電する。しかし、プルトニウムは危険であり、また簡単に手に入れることはできない。実現可能性は3/10。
提案3: 代替エネルギー源を探す
現代の技術を利用して、プルトニウム以外のエネルギー源を探す。例えば、太陽光発電や風力発電などの再生可能エネルギーを利用することが考えられる。ただし、これらのエネルギー源から1.21ジゴワットの電力を得るのは難しいかもしれない。実現可能性は5/10。
これらの提案の中で、最も実現可能性が高いのは「雷のエネルギーを利用する」方法だ。この方法なら、必要な電力を得ることができ、さらにデロリアンを時速88マイルに達するための時間も確保できる。ただし、タイミングを正確に合わせるためには、細心の注意と計画が必要だ。それに、タイムサーキットの設定も忘れずに行うことだぞ。
実際に「嘘を言わないAIボット」を作ってみた
社内規約を答えるAIチャットボット(AIちゃん)を制作しました。中小企業や小さなプロジェクト向けのチャットインターフェイスを想定しているため、応答速度が早く、運用コストが最小であることに重点を置きました。
LLMモデルの応答速度とコストのバランス
![](https://assets.st-note.com/img/1689073627729-jelkJ8HwVD.png?width=1200)
gpt-4は応答速度が遅く、返答まで1〜2分かかったためチャットボットの用途としては使えませんでした。次にコストと速度優先でgpt-3.5-turboで実験を重ねてある程度の精度が確認できていましたが、先日2023年6月13日にChatGPTのAPIに大規模なアップデートがあり、gpt-3.5-turbo-16kがリリースされて性能が大幅にアップしましたので、最終的にはそちらを採用しました。
ベクトル検索エンジンをChatGPTの外部記憶装置にする
AIチャットボット(AIちゃん)では事前に回答させたい社内文書のテキストデータを1,000トークン程度に分割し、数値ベクトル化して検索エンジンにインデックス登録しています。
質問に類似した情報をベクトル検索して、プロンプトに文脈として埋め込むことで少ない記憶を補っています。
Embeddingsできる情報は、最大トークン数から質問文や回答文で必要なトークンを除いた残りになります。今回は12,000トークンを限界値として設定しています。
ベクトル検索のイメージ
テキストの意味を数値ベクトル化して、ノルム1の多次元超球体にマッピングしています。2つのテキストの数値ベクトルのコサイン類似度を調べることで高速に検索できる仕組みです。Google検索やAmazonのレコメンド機能でも使われています。
![](https://assets.st-note.com/img/1689148660525-KJWaQt5DH4.png?width=1200)
できた!
上記の仕様から構築したAIちゃんのフロー図はこちらになります。
まとめ
今回は、ChatGPTに嘘を言わせないためのアプローチを学びました。今回のお話をまとめると以下のようになります。
嘘を言ってしまう原因は、ChatGPTに正しい情報を伝えていないから
ChatGPTに間違ったことを答えさせない方法には「学習モデルを調整するFine-tuning」と「プロンプトに埋め込むEmbeddings」の2つの手法がある。
Fine-tuningは時間とコストがかかるので、Embeddingsが有効。
Embeddingsは3つの注意点を意識して使う
1. ChatGPTはモデルごとに扱える最大トークン数に限界がある。
2. 必要な情報を文脈としてプロンプトで伝えて回答してもらう。
3. 文脈以外の情報から回答することを禁止する。
Embeddingsという手法は、ChatGPTのプロンプトでも活用できますので是非試してみてくださいね。
![](https://assets.st-note.com/img/1690342061118-xumyX0snX0.png?width=1200)
株式会社カヤックボンドです。 カヤックボンドで働く人、会社の制度、サークルの活動報告など、多岐にわたりご紹介していきます。
![](https://assets.st-note.com/img/1689073861125-4TuQGMrnAL.png?width=1200)
この記事が気に入ったらサポートをしてみませんか?