Skip to main content

Python で GPT-3 を OpenAI API と W&B Tables と共に使用する

PythonでGPT-3とWeights & Biasesを使うためのガイド
Created on December 4|Last edited on February 14
このレポートは、Ivan Goncharovによる「Use GPT-3 in Python With the OpenAI API and W&B Tables」の翻訳です。



はじめに

GPT-3はOpenAIによって開発された非常に強力なモデルであり、 多くの自然言語処理タスクで適用することができます。
通常、OpenAIのプレイグラウンドは、モデル予測を試し、それらの機能を確かめるのに最適な場所です。
例えば、GPT-3からの説明文は以下のとおりです:


ただし、モデルをもう少し真剣に理解したい場合は、プロジェクトやアプリケーションの一部としてPythonにデプロイすることをお勧めします。
この記事では、Python で GPT-3 を使い始める最も簡単な方法と、取得したさまざまなモデル予測を追跡し、W&B Tables でインタラクティブに探索する方法を紹介します。
Tables機能をご存知でない方のために説明しますと、Tablesとは、ブラウザで表形式のデータをインタラクティブに探索できるエコシステムのツールの1つです。 GPT-3で作業するときにTabelsがどのように役立つかを今すぐこれからお見せします。

GPT-3は何のために使えますか?

上記の通り、GPT-3が役立つタスクの正確な数を数えるのは本当に困難です。 正直なところ、GPT-3は本当に多くのタスクで効果的です。ただし、インスピレーションが必要な場合は、最近「GPT-3プロンプトエンジニアリングのクリエイティブなヒント 5選」という別の記事を書きましたのでご覧ください。この記事では、要約、推奨、質問応答などを含めた、GPT-3の使用に関するいくつかの便利な方法を紹介しています。
OpenAIは、こちらであらゆる種類の異なるGPT-3タスクに関する多数の例を提供しています。 素晴らしい点は、それら全てにPython APIコードスニペットが付属していることです。

それでは、Python で GPT-3 を使ってみましょう!

コード

PythonでOpenAI APIを使用する場合は、まずAPIキーを環境変数として追加する必要があります。 OpenAIのWebサイトに登録し、APIキーを取得します。こちらからアクセスできます。
%env OPENAI_API_KEY=YOUR_OPENAI_API_KEY
通常、他の人にAPIキーを表示するべきではありません。私はこの記事を書き終えた後に新しいキーを作成する予定です。
💡
次に、OpenAI の Python クライアントと、GPT-3 の予測を調べるために使用する Weights & Biases の Python クライアントであるwandbの2つの依存関係をインストールします。
!pip install --upgrade openai wandb
次に、モジュールをインポートし、APIキーをOpenAIのPython クライアントに渡します。
import os
import openai
import wandb

openai.api_key = os.getenv("OPENAI_API_KEY")
これらのステップが完了したので、GPT-3 in Pythonという名前の新しい Weights & Biases プロジェクトと、新しい W&B Table (表形式のデータをインタラクティブに探索するためのツール)をpromptcomplete の 2 つの列で初期化できます。
run = wandb.init(project='GPT-3 in Python')
prediction_table = wandb.Table(columns=["prompt", "completion"])
そして、これがこのチュートリアルの核です:次のコードで、GPT-3予測を取得するためにAPIを介してプロンプトを実際に送信しています! (OpenAIは、大規模なGPT-3モデルのすべての計算を最後に処理することから、使用するハードウェアは重要ではありませんので、ご心配なく。)
gpt_prompt = "Correct this to standard English:\n\nShe no went to the market."

response = openai.Completion.create(
engine="text-davinci-002",
prompt=gpt_prompt,
temperature=0.5,
max_tokens=256,
top_p=1.0,
frequency_penalty=0.0,
presence_penalty=0.0
)

print(response['choices'][0]['text'])

prediction_table.add_data(gpt_prompt,response['choices'][0]['text'])
GPT-3モデルには、2049「トークン」の要求/応答のハード制限があることにご注意ください。ここでは、「トークン」は約4文字のテキストとして記述されています。つまり、プロンプトを処理したり、百科事典的な長さの応答を生成したりすることはできませんが、実際には、現在読んでいる記事と同様のサイズの記事が生成される可能性があります。
💡
そして、engine="text-davinci-002"行では、使用するGPT-3のバリエーションを指定しています。 現在最も容量が大きいものはtext-davinci-002ですが、ご利用いただけるより小さな(そしてより安価な)ものもあります。こちらでOpenAIのドキュメントでさまざまなGPT-3エンジンに関する詳細をご覧いただけます。
次に、ハイパーパラメータをいくつか指定する必要があります。
  • temperature はランダム性を制御します。これを下げることで、ランダムな完了が減ります。
  • max_tokens は、応答を生成するトークンの最大数です。
API リファレンス ドキュメントを使用して、他のハイパーパラメータに関する詳細をご確認いただけます。

GPT-3 モデル予測の視覚化

プロンプトで推論を実行した後、OpenAI の API レスポンスからテキストを抽出し、次のコード行を使用して W&B Tableに追加します。
prediction_table.add_data(gpt_prompt,response['choices'][0]['text'])
このプロセスを好きなだけ繰り返すことができます。プロンプトの配列でループ実行することも可能でしょう。その方法でテーブルにデータを追加し続けることが可能です。
実験が終わったら、wandb.logを呼び出してW&Bテーブルを記録し、ブラウザでインタラクティブに視覚化することができます。
wandb.log({'predictions': prediction_table})
wandb.finish()
このようにすれば、GPT-3プロンプトと完了した実験を滞りなく進めることができます! 😉
こちらは、GPT-3をしばらくいじり、Pythonでさまざまなプロンプトを手作業で実行した後に得られた結果の一例です。


Run set
4


GPT-3をもっと活用したいですか?

最後に

この記事を最後までお読みいただきありがとうございました。このレポートがPythonでGPT-3を使用する上で役に立ち、気に入っていただければ幸いです! それでは、ハッピー・ジェネレイティング! 😊
Iterate on AI agents and models faster. Try Weights & Biases today.