OpenAI platform : Get Started : クイックスタート (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 07/22/2023
* 本ページは、以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
OpenAI platform : Get Started : クイックスタート
OpenAI は最先端の言語モデルを訓練してきました、これはテキストの理解と生成に非常に優れています。私たちの API はこれらのモデルへのアクセスを提供し、言語処理を伴う事実上、任意のタスクを解くために利用できます。
このクイックスタート・チュートリアルでは、単純なサンプルアプリケーションを構築します。流れに沿って、任意のタスクに対して API を使用する基礎となる主要概念やテクニックを学習します、以下を含みます :
- コンテンツ生成
- 要約
- 分類、カテゴリー化、そしてセンチメント分析
- データ抽出
- 翻訳
- Many more!
イントロダクション
補完 (completions) エンドポイントは私たちの API のコアで、非常に柔軟で強力な単純なインターフェイスを提供しています。プロンプト としてあるテキストを入力すると、API は貴方がそれに与えたインストラクション (instructions) やコンテキストが何であれ適合を試みたテキスト 補完 を返します。
(Prompt) Write a tagline for an ice cream shop.
(Completion) We serve up smiles with every scoop!
これを非常に高度なオートコンプリートとして考えることができます — モデルはテキストプロンプトを処理して次に最も来そうなものを予測しようとします。
インストラクションから始める
ペット名 generator を作成したいと想像してください。ゼロから名前を考え出すのは困難です!
最初に、貴方が望むものを明確にするプロンプトを必要とします。インストラクションから始めましょう。このプロンプトを送信 (submit) して 最初の補完を生成します。
Suggest one name for a horse.
Lightning
悪くはありません!次に、インストラクションをより具体的にしてみましょう。
Suggest one name for a black horse.
Midnight
ご覧のように、プロンプトへの単純な形容詞の追加は結果としての補完を変化させます。プロンプトの設計は本質的にはモデルをどのように「プログラム」するかです。
幾つかのサンプルの追加
良いインストラクションの巧妙な作成は良い結果を得るために重要ですが、それらは十分でない場合があります。インストラクションをより複雑にしてみましょう。
Suggest three names for a horse that is a superhero.
1. Super Stallion 2. Captain Colt 3. Mighty Mustang
この補完は私たちが望むものでは全くありません。これらの名前は非常に一般的で、モデルはインストラクションの horse の部分を拾い上げていないようです。より関連性のある提案を考え出させることができるか見ましょう。
多くの場合、貴方が望むことをモデルに見せて伝えることは役立ちます。プロンプトへのサンプルの追加はパターンやニュアンスを伝えるのに役立つ可能性があります。2, 3 の例を含むこのプロンプトを送信してみましょう。
Suggest three names for an animal that is a superhero.
Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: Horse
Names:
Super Stallion, Mighty Mare, The Magnificent Equine
Nice! 与えられた入力に対して期待する出力例の追加は、私たちが求めているタイプの名前をモデルが提供するのに役立ちました。
設定の調整
プロンプトの設計だけが自由に使えるツールではありません。設定を調整することで補完を制御することもできます。最も重要な設定の一つは temperature (温度) と呼ばれます。
上述のサンプルで同じプロンプトを複数回送信した場合、モデルは常に同一か非常に類似した補完を返すことに気づいたかもしれません。これは temperature が 0 に設定されていたためです。
temperature を 1 に設定して同じプロンプトを数回、再送信してみましょう。
Supersteed, Thunder Hooves, Charging Crusader
See what happened? temperature が 0 より大きいとき、同じプロンプトの送信は毎回異なる補完という結果になります。
モデルはどのテキストが先行するテキストに続く可能性が最も高いかを予測することを忘れないでください。temperature は 0 と 1 の間の値で、基本的にはこれらの予測を行なうとき、モデルがどのくらい確信しているかを制御させます。temperature を低くすることは、モデルがより少いリスクを取り補完がより正確で決定論的であることを意味します。temperatore を増やすとより多様な補完という結果になります。
ペット名 generator については、多くの名前のアイデアを生成できることを多分望むでしょう。0.6 の適度な temperature が上手く動作するはずです。
アプリケーションの構築 (PYTHON (FLASK))
良いプロンプトと設定を見出した今、ペット名 generator を構築する準備ができました!貴方が始めるためにコードを書きました — 以下の指示に従ってコードをダウンロードしてアプリケーションを実行してください。
セットアップ
Python をインストールしていないなら、ここからインストール してください。それからこのレポジトリをクローンしてコードをダウンロードしてください。
git clone https://github.com/openai/openai-quickstart-python.git
git を使うことを好まないなら、代わりに この zip ファイル を使用してダウンロードできます。
貴方の API キーの追加
プロジェクト・ディレクトリに移動してサンプル環境変数ファイルのコピーを作成します。
cd openai-quickstart-python
cp .env.example .env
シークレット API キーをコピーしてそれを新たに作成された .env ファイル内の OPENAI_API_KEY として設定してください。
アプリケーションの実行
プロジェクト・ディレクトリで以下のコマンドを実行して依存関係をインストールして、アプリケーションを実行します。コマンドを実行するとき、セットアップに依存して python/pip の代わりに python3/pip3 をタイプする必要があるかもしれません。
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
flask run
Open http://localhost:5000 in your browser and you should see the pet name generator!
コードを理解する
openai-quickstart-python フォルダの app.py をオープンしてください。最下部で、上記で使用したプロンプトを生成する関数を見ます。ユーザはペットの動物の種類を入力しますので、それは動物を指定するプロンプトの一部を動的に置き換えます。
def generate_prompt(animal):
return """Suggest three names for an animal that is a superhero.
Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: {}
Names:""".format(animal.capitalize())
app.py の 14 行目で、実際の API リクエストを送信するコードを見ます。上述のように、それは 0.6 の temperature で補完エンドポイントを使用しています。
response = openai.Completion.create(
model="text-davinci-003",
prompt=generate_prompt(animal),
temperature=0.6
)
And that’s it! You should now have a full understanding of how your (superhero) pet name generator uses the OpenAI API!
以上