見出し画像

OpenAI API(GPT-3) 入門 (1) - 事始め

「OpenAI API」(GPT-3)の使い方をまとめました。

1. OpenAI API

「OpenAI API」は、OpenAIの最新の深層学習モデルにアクセスすることができるクラウドサービスです。「GPT-3」は、深層学習モデルそのものは公開されていないため、利用するには「OpenAI API」経由でアクセスする必要があります。「OpenAI API」は2021年5月現在ベータ版で、将来的には有料版としてリリースされる予定です。

「OpenAI API」は、汎用的な「テキスト入力 → テキスト出力」インターフェースのAPIです。使い方は簡単で、APIに自然言語で「タスクの説明」や「いくつかの回答例」を与えるだけで、そのコンテキストやパターンに一致するような回答が返されます。このAPIに与えるテキストを「プロンプト」、APIが生成するテキストを「コンプリーション」と呼びます。

2. OpenAI APIのベータ版の利用申請

OpenAI APIのベータ版の利用申請の手順は、次のとおりです。

(1) 「OpenAI API」のベータ版のサイト右上の「JOIN」から申請。

(2) 利用申請の許可がおりたら、「OpenAI API」のベータ版のサイト右上の「LOG IN」からログイン。

3. PlaygroundでのOpenAI APIの利用

「Playground」は、手軽に「GPT-3」を試すことができるWebページで、「OpenAI API」のベータ版のサイト内で提供されています。
「Playground」でのOpenAI APIの利用手順は次のとおりです。

(1) 「OpenAI API」のベータ版のサイトでログインし、「Playground」を開く。
(2) プロンプト領域に以下の文字列を入力して「Submit」ボタンを押す。

日本語を英語に翻訳します。

日本語: 吾輩は猫である
英語:

成功すると、「I am a cat」が表示されます。違うテキストが表示される場合もあります。

画像1

「I am a cat」以降の余分なテキスト生成が気になる場合は、「Stop Sequences」に「.」を指定してください。「.」が出現した時点でテキスト生成が停止します。

4. PythonでのOpenAI APIの利用

PythonでのOpenAI APIの利用の手順は、次のとおりです。

(1) 「OpenAI API」のベータ版のサイトでログインし、「APIキー」を取得。(2) Pythonの仮想環境を作成し、「openaiパッケージ」をインストール。

$ pip install openai

(3) 以下のソースコードを作成し実行。
<APIキー>」は、各自の「APIキー」に置き換えてください。「吾輩は猫である」の翻訳が返されます。


import openai

# APIキーの設定
openai.api_key = "<APIキー>"

# プロンプト
prompt = '''日本語を英語に翻訳します。

日本語: 吾輩は猫である
英語:'''

# 推論
response = openai.Completion.create(
    engine='davinci', 
    prompt=prompt, 
    max_tokens=30,
    stop='.')
print(prompt+response['choices'][0]['text'])
I am a cat

【おまけ】 Playgroundのパラメータ

・Engine: GPT-3のエンジン。davinciが最も精度が高く低速、adaが最も精度が低く高速(ada, babagge, curie, davinci)
・Response Length: 生成するトークンの最大数 (デフォルト:16, 最大:2048)
・Temperature: ランダムさ。創造的にするには0.9、答えがある場合は0推奨。top_pと同時変更は非推奨(デフォルト:0.7)
・Top P: nucleusサンプリング。0.1は、上位10%の確率を持つトークンのみが考慮を意味する。temperatureと同時変更は非推奨(デフォルト:1)
・Frequency Penalty: 生成したテキストに基づいて、新しいトークンに課すペナルティ。同じテキスト出力の可能性を減らす(デフォルト:0, 0〜1)
・Presence Penalty: 生成したトークンに基づいて、新しいトークンに課すペナルティ。同じトークンの繰り返し可能性を減らす(デフォルト:0, 0〜1)
・Best Of: サーバー側でbest_of個の結果を生成し、最良を返す(デフォルト:1)
・Stop Sequence: トークンの生成を停止する文章。最大4つ(デフォルト:なし)
・Inject Start Text: 書式補正のためコンプリーション前に追加するテキスト
・Inject Restart Text: 書式補正のためコンプリーション後に追加するテキスト
・Show Probabilities: トークンの生成される確率を色分けで表現
 ・Most Likely: 最も確率が高いものを色分け
 ・Liest Likely: 最も確率が低いものを色分け
 ・Full Spectrum: 両方を2色で色分け

【おまけ】 Completion.create()のパラメータ

・prompt: プロンプト。<|endoftext|>は、学習データで使われたドキュメントセパレータ(デフォルト:<|endoftext|>)
・engine: GPT-3のエンジン。davinciが最も精度が高く低速、adaが最も精度が低く高速(ada, babagge, curie, davinci)
・max_tokens: 生成するトークンの最大数 (デフォルト:16, 最大:2048)
・temperature: ランダムさ。創造的にするには0.9、答えがある場合は0推奨。top_pと同時変更は非推奨(デフォルト:1)
・top_p: nucleusサンプリング。0.1は、上位10%の確率を持つトークンのみが考慮を意味する。temperatureと同時変更は非推奨(デフォルト:1)
・frequency_penalty: 生成したテキストに基づいて、新しいトークンに課すペナルティ。同じテキスト出力の可能性を減らす(デフォルト:0, 0〜1)
・presence_penalty: 生成したトークンに基づいて、新しいトークンに課すペナルティ。同じトークンの繰り返し可能性を減らす(デフォルト:0, 0〜1)
・best_of: サーバー側でbest_of個の結果を生成し、最良を返す(デフォルト:1)
・stop: トークンの生成を停止する文章。最大4つ(デフォルト:null)
・n: 生成する結果数(デフォルト:1)
・echo: 結果に加えてプロンプトをエコーバック(デフォルト:false)
・stream: 進行状況をストリーミングバックするかどうか(デフォルト:false)
・logprobs: 選択トークンだけでなく、可能性の高いトークンにログ確率を含める。(デフォルト:null)
・logit_bias: 指定したトークンの可能性を減らす(デフォルト:null)

次回



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

ピックアップされています

自然言語処理入門

  • 818本

shi3z note

  • 502本

生成AI

  • 640本

AI

  • 290本

自然言語処理

  • 1本

コメント

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。
プログラマー。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガジェット。年2冊ペースで技術書を執筆。アニソン / カラオケ / ギター / 猫 twitter : @npaka123
OpenAI API(GPT-3) 入門 (1) - 事始め|npaka
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1