概要
openaiが提供するapiのドキュメントに関して、以下のquick startの翻訳です!
https://platform.openai.com/docs/quickstart
- deep diveなどの詳細は割愛します。
- 目次は翻訳せずにそのまま記載します。
- アプリケーションの開発言語はpythonを選択しています、
Qucikstart
OpenAIは、テキストの理解と生成に非常に優れた最先端の言語モデルを訓練しています。私たちのAPIは、これらのモデルへのアクセスを提供し、言語処理を伴うほぼすべてのタスクを解決するために使用することができます。
このクイックスタートチュートリアルでは、簡単なサンプルアプリケーションを作成します。その過程で、以下に示すようなAPIをあらゆるタスクに使用するための主要コンセプトとテクニックを学ぶことができます。
- コンテンツ制作
- 要約
- 分類、カテゴライズ、センチメント分析
- データ抽出
- 翻訳
などなど
Introduction
The completions(補完)エンドポイントはAPIの中核をなすもので、非常に柔軟で
強力かつシンプルなインターフェイスを提供します。プロンプトとしてテキストを入力すると、APIはあなたが与えた指示や文脈にマッチするようなテキスト補完を返します。
プロンプト: アイスクリームショップのキャッチコピーを書いてください。
コンプリーション(補完):アイスクリームをすくうごとに、笑顔をお届けします!
これは、非常に高度なオートコンプリートと考えることができます。このモデルは、テキストのプロンプトを処理し、次に何が来る可能性が高いかを予測しようとします。
1,Start with an instruction
まずは、何をしたいのかが明確になるようなプロンプトが必要です。
まずは命令文から。このプロンプトを送信すると、最初の完成形が生成されます。
プロンプト
Suggest one name for a horse.
コンプリーション
Lightning
まずまずですね!
では、もっと具体的に指示を出してみましょう。
プロンプト
Suggest one name for a black horse.
コンプリーション
Midnight
このように、プロンプトに簡単な形容詞を加えるだけで、出来上がる完成度が変わります。このように、プロンプトをデザインすることは、モデルを「プログラミング」することにほかなりません。
2,Add some examples
良い結果を得るためには、良いインストラクションを作ることが重要ですが、それだけでは不十分な場合もあります。では、指示をさらに複雑にしてみましょう。
プロンプト
Suggest three names for a horse that is a superhero.
コンプリーション
1. Super Stallion
2. Captain Colt
3. Mighty Mustang
この完成度は、私たちが望んでいるものとはちょっと違います。これらの名前はかなり一般的なもので、モデルは私たちの指示の馬の部分を拾わなかったようです。もっと適切な提案をさせることができるか、試してみましょう。
多くの場合、あなたが何を望んでいるかをモデルに見せたり、伝えたりすることが役に立ちます。
プロンプトに例を追加することで、パターンやニュアンスを伝えることができます。
いくつかの例を含むこのプロンプトを送信してみてください。
プロンプト
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
いいね!
ある入力に対して期待される出力の例を追加することで、私たちが求めていた名前の種類をモデルが提供してくれるようになりました。
3,Adjust your settings
自由に使えるツールは、プロンプトデザインだけではありません。設定を調整することで、完成度をコントロールすることも可能です。最も重要な設定の1つは「温度」と呼ばれるものです。
上の例で同じプロンプトを複数回送信した場合、モデルが常に同一または非常に似た完成度を返すことにお気づきでしょうか。これは、温度が0に設定されていたためです。
温度を 1 に設定して、同じプロンプトを何度か再投稿してみてください。
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:
コンプリーション
Captain Equus, Noble Steed, Supernova Stallion
何が起こったか見てみましょう。温度が0以上の場合、同じプロンプトを送信すると、毎回異なる完了になります。
モデルは、どのテキストがその前のテキストに続く可能性が最も高いかを予測することを忘れないでください。温度は0から1の間の値で、モデルがこの予測を行う際に、どの程度自信を持つべきかを基本的に制御できます。温度を下げると、リスクが少なくなり、より正確で確定的な補完が行われます。温度を上げると、より多様な完成度になります。
4,Build your application - python(Flask)-
良いプロンプトと設定が見つかったら、ペットの名前ジェネレーターを作成する準備ができました!以下の手順でコードをダウンロードし、アプリを実行してください。
setup
Pythonがインストールされていない場合は、ここからインストールしてください。次に、このリポジトリをクローンしてコードをダウンロードします。
git clone https://github.com/openai/openai-quickstart-python.git
gitを使用しない場合は、ZIPファイルを使用してコードをダウンロードすることができます。
https://platform.openai.com/docs/quickstart/setup
Add your API key
プロジェクトディレクトリに移動して、例の環境変数ファイルのコピーを作成します。
cd openai-quickstart-python
cp .env.example .env
secret APIキーをコピーして、新しく作成した.envファイルのOPENAI_API_KEYとして設定します。まだシークレットキーを作成していない場合は、以下で作成することができます。
Run the app
プロジェクトディレクトリで以下のコマンドを実行し、依存関係をインストールし、アプリを実行します。コマンドを実行する際、設定によってはpython/pipの代わりにpython3/pip3と入力する必要があるかもしれません。
python -m venv venv
. venv/bin/activate
pip install -r requirements.txt
flask run
ブラウザで http://localhost:5000 を開くと、ペットの名前ジェネレーターが表示されるはずです!
Understand the code
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のcompletionsエンドポイントを使用しています。
response = openai.Completion.create(
model="text-davinci-003",
prompt=generate_prompt(animal),
temperature=0.6
)
そして、これでおしまいです!これで、あなたの(スーパーヒーローの)ペット名ジェネレーターがOpenAI APIをどのように使っているか、完全に理解したはずです!
Closing
これらのコンセプトとテクニックは、あなた自身のアプリケーションを構築する際に大いに役立つことでしょう。とはいえ、この単純な例は、可能性のほんの一端を示すものです!補完エンドポイントは、コンテンツ生成、要約、セマンティック検索、トピックタギング、感情分析など、事実上あらゆる言語処理タスクを解決するのに十分な柔軟性を備えています。
ただし、ほとんどのモデルにおいて、1つのAPIリクエストで処理できるのは、プロンプトと補完の間にある2,048トークン(およそ1,500語)までという制限があることを覚えておいてください。
より高度なタスクでは、1つのプロンプトに収まらないほどの例やコンテキストを提供したいと思うかもしれません。このような高度なタスクには、fine-tuning APIが最適です。微調整を行うことで、何百、何千もの例を提供し、特定のユースケースのためにモデルをカスタマイズすることができます。