GTP-3 ベースの NLP モデルを手軽に使える OpenAI API を使ってみる (1) Playground でお試し

# OpenAI API とは

OpenAI API は GTP-3 ベースの NLP(自然言語処理) モデルを、準備など不要で手軽に、 Web API として利用できるサービスで、β版を含めて試用ができるようになっています。(2021年11月末現在[^1])

- [OpenAI API Top Page](https://openai.com/api/): サインアップなどはこちらから
- [OpenAI API Overview](https://beta.openai.com/) (※要サインイン)
- [OpenAI ドキュメント](https://beta.openai.com/docs/introduction) (※要サインイン)

![20211129_openai_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117583/133ec107-9306-e6a1-894c-3168f0bf5a13.png)

## OpenAI API の種類

[Examples](https://beta.openai.com/examples) を見ると、たくさんの種類があるように見えるのですが、API としては以下の 5 種類になります。
[Documentation: Guides](https://beta.openai.com/docs/guides/) ※要サインイン

- [Completion](https://beta.openai.com/docs/guides/completion)
- [Classify text](https://beta.openai.com/docs/guides/classifications)
- [Search](https://beta.openai.com/docs/guides/search)
- [Answer questions](https://beta.openai.com/docs/guides/answers)
- [Fine-tuning](https://beta.openai.com/docs/guides/fine-tuning)

![20211129_openai_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117583/11f0dda6-0a90-1ee4-856f-f8c6577886f2.png)


## OpenAI API のエンジン

API の種類とは別に、ベースとなるエンジンが用意されています。

- **Base** : 一般的な NLP
- **Instruct** : Instruction (指導、教育) といった用途に
- **Codex** : コーディング用
- **Content filter** : 

それぞれのエンジンは MLの複雑さやマシンパワーによってさらに細分化されています。(※ない場合もあります。) Davinch > Curie > Babbage > Ada の順で強力(&高価) になります。どのレベルのエンジンを利用するといいのか、というガイドの他、[Comparison Tool](https://gpttools.com/comparisontool) というモノも用意されています;

- **Davinch** : Complex intent, cause and effect, summarization for audience
- **Curie** : Language translation, complex classification, text sentiment, summarization
- **Babbage** : Moderate classification, semantic search classification
- **Ada** : Parsing text, simple classification, address correction, keywords

[Documentation: Engines](https://beta.openai.com/docs/engines) ※要サインイン


# ひとまず OpenAI API に触れてみる

## まずはサインアップ

メールアドレス or Google | Microsoft アカウントで試用サインアップします。
サインアップすると、ひとまず Free Trial プランが紐づけられるようです。上限＄18.00、一番高価な Davinch モデルで ＄0.0600 / 1K tokens ということなので、"お試し" 程度はできそうです。(Token は投入する単語数で換算[^2])

![20211129_openai_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117583/3395105f-d12d-4bd4-74e6-16b82f6e0895.png)

## Playground でお試し

OpenAI API のいくつかの機能は [Playground](https://beta.openai.com/playground) というオンラインツールで試すことができます。全部ではありませんが、日本語の利用も可能な機能もあります。

主な機能は [Examples](https://beta.openai.com/examples) にまとめられています。
以下、いくつか日本語入力 OK だったものを挙げてみます。

### Classification 

[Documentation: Classification](https://beta.openai.com/docs/guides/classifications) ※要サインイン
[Playground: Classification](https://beta.openai.com/playground/p/default-classification) ※要サインイン

![20211129_openai_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117583/175b583a-82ad-b3a1-0d33-bc8415f71418.png)

クラス分類(ラベル付け)を行う機能ということで、サンプルはエンティティの自動タグ付け(のようなもの)になっていました。同じ要領で日本語で入力したところ、何となく正しいタグが生成されているのが分かります。

![20211129_openai_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117583/8d122bb6-3adb-7e12-0ecc-ba41de9a0a4f.png)


### Chat (Completion - Conversation)

[Documentation: Completion - Conversation](https://beta.openai.com/docs/guides/completion/conversation) ※要サインイン
[Playground: Chat](https://beta.openai.com/playground/p/default-chat) ※要サインイン

![20211129_openai_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117583/0ddc3f30-d4e8-cc4c-3c46-4f3e208f4c83.png)

会話を生成する機能、でこれまた日本語で入力したところ、こちらの入力に対して質問を返す文章が生成されました。

![20211129_openai_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117583/8e6aa63b-6c06-1786-a85b-1d3cfd7e0269.png)


### Generation (Completion - Generation)

[Documentation: Completion - Generation]
(https://beta.openai.com/docs/guides/completion/generation) ※要サインイン

Examples ではなく [Documentation](https://beta.openai.com/docs/guides/completion/introduction) のリンクから Playground を開きます。

![20211129_openai_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117583/5cbc0e94-1619-58ca-8119-4c2f6052745a.png)

ある程度の長さの文章を入力すると、それに続く文章が生成されました。生成されたものを必要に応じて修整し、続きを生成させることも可能です。

![20211129_openai_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117583/2e2b70af-541f-bd89-a166-f57b05928dff.png)



[^1]: [OpenAI Blog: OpenAI’s API Now Available with No Waitlist](https://openai.com/blog/api-no-waitlist/)(2021/11/18)
[^2]: "You can think of tokens as pieces of words, where 1,000 tokens is about 750 words.([Pricing](https://openai.com/api/pricing/) ページ引用)" とのことですが、日本語や全角はどのようにカウントしているのか．．．。!