ChatGPTがアクセスできなかったので、PythonでGPT3.0のAPIを呼び出して使ってみて十分だった話。

# 概要
 ChatGPTは現在人気沸騰中で、時々アクセスが集中していて使えないことがあります。GPT3も十分な精度のチャットボットを実現できるし、製品に組み込みやすいAPIが2023/1月現在も提供されているので、この記事では使い方を画面キャプチャつきで解説します。


# 目次
 - [申請](#申請)
 - [プログラム開発](#プログラム開発)
 - [おわりに](#おわりに)
 - [関連講座](#関連講座)
 - [参考記事](#参考記事)



# 申請


以下を参考にGMAILアカウント作っておく
https://support.google.com/mail/answer/56256?hl=ja

以下URLへアクセス
https://beta.openai.com/account/api-keys

Sign upをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409610/d1de06fd-9609-a45e-f2af-8833394ec102.png)


Continue with Googleをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409610/6f1360e5-fb7a-0ac6-3ae7-86af0b122e98.png)


Accountを選択して、進むと次の画面が出てくるので名前をアルファベット表記で入れてContinue

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409610/8d2c8869-6787-9b32-db52-cf02a9b75778.png)

電話番号を入力して、Sendし、6桁のコードを取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409610/80a0df55-772c-fb2d-2717-b5b5884e067f.png)

ショートメールに届いたコード6桁をEnter Code以下に入力して進むと
次の画面が表示されるので、アンケートに答える。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409610/e4f1891c-d518-cf7d-bce9-d71601b744d1.png)

個人的な興味なので、「I'm exploring personal use」とする。
以下のような画面に遷移するので、Create new secret keyを押下し、表示されるAPI Keyを控えておく。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409610/98e7b979-2c0e-db40-0f59-4178db996ec1.png)



# プログラム開発

以下URLにアクセスし、ノートブックを新規作成。
https://colab.research.google.com/

これで、pipモジュールインストールしたり、Pythonのコードを書いていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409610/09a74c77-3707-5d18-628d-3c3a2ea22a54.png)


openaiをインストールします。「GPT-3」を使うためです。

```console
pip install openai
```


利用可能なモデルのリストを取得します。OPENAI_API_KEYには上記のステップで取得したAPI Keyを入力してください。
```
import os
import openai
openai.api_key = "OPENAI_API_KEY"
openai.Model.list()
```


モデルと対話してみます。「日本語わかります？」と聞いたらわかるそうです。

```
response = openai.Completion.create(
  model="text-davinci-003",
  prompt="日本語はわかります?\nA:",
  temperature=0,
  max_tokens=100,
  top_p=1,
  frequency_penalty=0.0,
  presence_penalty=0.0,
  stop=["\n"]
)

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

```md
はい、わかります。
```

もう少し話しかけやすいように関数化しておきます。
```
def message(text):
  response = openai.Completion.create(
    model="text-davinci-003",
    prompt=text,
    temperature=0,
    max_tokens=100,
    top_p=1,
    frequency_penalty=0.0,
    presence_penalty=0.0,
    stop=["\n"]
  )
  return response["choices"][0]['text']
```

現在23:00で今日の積み上げ中で、眠いのではなしかけたら、
癒し系の返事が帰ってきました。
```
message("そろそろ眠くなってきませんか? A: \n")
```

```md
はい、そうです。今日は長い一日でしたから、もう少しで眠くなりそうです。
```


# おわりに

GPT3でもチューリングテスト合格レベルで本当に中に人間が入っているみたいです。ChatGPTもいままで試していましたが、PythonからAPI呼び出しできる方が使い勝手がよさそうです。この記事に興味を持っていただいた方は、著者TwitterでもChatGPTやAI関連情報をアウトプットしてますので、フォローお願い致します。

@keiji_dl 


# 関連講座
 GPT3やChatGPTはデコーダがTransformerブロックでできています。Transformerを使ってPythonアプリを本格開発したい方向けの講座は下記です。

 - [7ステップで作るPython x Flask x Pytorch 人工知能Webアプリ開発入門](https://www.udemy.com/course/7step_python_vit/)
- [直感！Pytorchで始める深層学習実装入門（実践編）](https://www.udemy.com/course/python_pytorch/)
 - [直感！深層学習　７ステップで作る Python AI 株価予測](https://www.udemy.com/course/7-python-ai/)


# 参考記事
- [【GPT-3】PythonでGPT-3を用いてChatGPT風のコマンドラインツールを作ろう！](https://aiacademy.jp/media/?p=3559)