見出し画像

ChatGPTベストプラクティス&いろいろなモデルの試し方

OpenAIから具体的にどのような聞き方をすれば良いかの指針が公開されています。

尚、この話題の元ネタは以下です。
多分以下の記事を読んだ方が分かりやすいです。

正しい聞き方

上記GIGAZINEの記事からの引用です。

OpenAIが提唱する戦略は以下の6つです。
・明確な指示を書く
・参考テキストを提供する
・複雑なタスクをよりシンプルなサブタスクに分割する
・GPTに考える時間を与える
・外部ツールを利用する
・パフォーマンステストを実施する

ChatGPT-4に聞いた回答が以下です。

具体的な内容については、以下の一般的なGPTのベストプラクティスを参考にしていただくと良いかもしれません:
1. 明確な命令: GPTは明確な指示を受けると最も効果的に動作します。命令が曖昧だと、モデルは何をすべきか混乱する可能性があります。
2. コンテキストの提供: モデルに前の会話のコンテキストを提供することで、より適切な回答を得られます。これは特に長い会話で有用です。
3. 短いプロンプト: 長いプロンプトはモデルの出力を制限する可能性があります。GPTには最大トークン数があるため、プロンプトが長すぎるとモデルの出力が短くなる可能性があります。
4. モデルのバージョン: GPT-3やGPT-4など、より新しいモデルは通常、より良いパフォーマンスを発揮します。
5. 試行錯誤: GPTは完全に予測可能なモデルではないため、最適なプロンプトを見つけるには試行錯誤が必要です。

とにかくGPT-4を使おう

OpenAIのベストプラクティスについては、GPT-4でのみ動作します。とあることから、GPT-4の使用が前提となるようです。

以下にドキュメンテーションからいくつか例を引用します。

明確な指示を書く

以下に駄目な例、良い例をドキュメンテーションから一部引用します。

駄目な例:Excelで数字を追加するにはどうすればよいですか?
良い例:Excelで金額の列を合計するにはどうすればよいですか?「合計」という列の右側に終わる行のシート全体に対して、これを自動的に実行したいです。

駄目な例:フィボナッチ数列を計算するコードを書いてください。
良い例:フィボナッチ数列を効率的に計算するためのTypeScript関数を書いてください。各作品が何をするのか、なぜそのように書かれているのかを説明するために、コードを自由自派にコメントしてください。

区切り文字を使用する

三重引用符、XMLタグ、セクションタイトルなどの区切り文字が有効なようです。

三重引用符で区切られたテキストを俳句で要約します。"""ここにテキストを挿入する"""

タスクを完了するためのステップを明示する

手順を明示化することで、逸脱を防げますね。

ユーザーの入力に応答するには、次のステップバイステップの手順を使用してください。ステップ1 - ユーザーは3倍の引用符でテキストを提供します。このテキストを「要約:」という接頭辞で1つの文に要約します。ステップ2 - ステップ1からの要約をスペイン語に翻訳し、「翻訳:」という接頭辞を付けます。

例を提供する

一般的には先述したタスクをステップで明示した方がよいようですが、例を明示したほうがはるかに楽な場合もある、ということです。

出力の希望の長さを指定する

数の段落や箇条書きは正確ですが、特定の数の単語を指示した場合、必ずしも高精度にはならないそうです。

三重引用符で区切られたテキストを約50語で要約します。"""ここにテキストを挿入する"""

長い対話の場合、要約させる

無制限に対話を継続させることはできませんが、要約させることでこれを回避出来ます。

余談ですが、要約させるテクニックは以下の動画で知りました。

まとめ

総じて一般的に人間と対話する(メールを送ったり、チャットも含めての)やり方と大差ないような気がします。

明確に、自分が考えていることを伝える技術は磨かないといけないですね。難しいと常々思っていますが。

AIとの対話でも、人間とのコミュニケーションと同じく、明確で具体的なメッセージを伝えることが重要となります。AIは字義通りにテキストを解釈しますので、伝えたい情報や質問を正確に表現することが有効です。

そして、対話の形式はその目的やコンテキストによります。対話形式は探索的な議論や意見の交換に適しています。一方、箇条書きやマークダウン形式は、特定の情報のリストや構造化された情報の提供に適しています。

重要なのは、その情報が最も効果的に伝わる形式を選択することです。これはAIだけでなく、一般的なコミュニケーションでも同じです。

GPT-4からの答え

以下、これに関連したChatGPTとのやりとりです。

いろいろなモデルやテキストを試そう

OpenAIから提供されるモデルやテキストには、様々なバリエーションが存在しています。これを簡単に試す(評価する)方法を以下に連携します。

コード

Google Colabで動作するコードです。
動作させる上で詰まった箇所も一応書いています。
使えるモデルについては以下も参考になります。

# 必要なライブラリをインストールします
!pip install openai

# OpenAI APIキーを設定します
import os
os.environ['OPENAI_API_KEY'] = 'your_openai_api_key' # ここに実際のAPIキーを入力してください

# OpenAIのAPIを利用します
import openai

# GPT-3を使用してテキスト生成を行います
response = openai.Completion.create(
  engine="text-davinci-003",
  prompt="Translate the following English text to French: '{}'",
  max_tokens=60
)

print(response.choices[0].text.strip())

動作結果

事前に設定しておくこと

単にAPIキーを発行するだけではなく、以下の点にも注意が必要です。
・クレジットカードを登録する
・上限設定を設ける

自分はAPIキー自体は発行していまして、使えていましたが、どうにも上記のように使うためには登録が必要だったようです。
RateLimitError: You exceeded your current quota, please check your plan and billing details.
というエラーが出ました。
これもChatGPTに聞いたら対処法がわかりまして、レートを超えたからだよ、ということでした。以下の手順で解決出来ます。

①以下のアドレス(および画像参照)のSet up paid accountからクレジットカードを登録します。

②次に上限を設定します。
左側のUsage limitsから設定します。値はなんでも良いと思いますが、自分は以下のように設定しました。

まとめ

どう聞くのが一番良いのかは、数値でこれが一番というのは示しにくいので、こういうドキュメントをOpenAI側から提示してもらえるのはありがたいですね。

再現性がないにもかかわらず、あたかもこの手法がゆえに正確である!と思い込みがちかと思うので、こういう認知バイアスにも気をつけたいですね。

この記事が気に入ったらサポートをしてみませんか?