5分でゼロからChatGPTのAPIを叩いてみるまで【ChatGPTの始め方を初心者向けに全て解説】

# ChatGPTのAPIを5分くらいでサクッと試したい！
月間1億ユーザーを2か月で達成し、世界史上最速で成長しているアプリケーションであるあの**ChatGPTのAPI**がついに3月2日リリースされました。
そしてお値段激安（最初は[無料枠](https://qiita.com/JinA293/items/ab953c40ce73d161f4fc#%E7%84%A1%E6%96%99%E6%9E%A0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)がある）。こんなことが分かった以上**試したい**。けど面倒なのは嫌いなのでできれば**5分くらいでサクッとやりたい**。

そんな僕みたいな人に向けて、この記事では**5分でゼロからChatGPTのAPIを実行してみる**までの流れをまとめていきます。もしこの記事が参考になればChatGPTを触りたそうな人にぜひ送り付けてください。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ChatGPTのAPIで遊んでみる。<br>1単語＝1トークンだと換算して、1000単語（1K（1000）トークン）の送受信で0.27円。<br><br>つまり4000単語の送受信をしてようやく1円ちょっと。<br>サポーターズからの支援金で遊ぶぞ～～！！！</p>&mdash; ジン@Peach.Tech🍑 (@Jin_pro_01) <a href="https://twitter.com/Jin_pro_01/status/1632096085857701890?ref_src=twsrc%5Etfw">March 4, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## ChatGPTとは？
ChatGPTは、OpenAIが作った人工知能の一種で、自然な言葉で話しかけることができます。例えば、チャットボットや音声アシスタントに使われます。ChatGPTを使うことで、コンピュータが自然な言葉で返事をしてくれるようになります。

## ChatGPT APIとは？
ChatGPT APIは、ChatGPTの機能を使いやすくしたもので、プログラマーが簡単にChatGPTを使うことができるようになります。ChatGPT APIを使えば、プログラマーは自分でチャットボットや音声アシスタントを作ることができます。ChatGPT APIは、簡単に使えるので、機械学習や自然言語処理に詳しくない初心者でも利用することができます。

とのことです。というのも、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/71d8cb2c-9230-4e2f-f551-75a41c6e832f.png)
という具合にChatGPTくんに１分くらいで作ってもらったわけです。こんな雑な命令にもかかわらず丁寧な動きを迅速にやってくれる、ほんと凄い。

# ChatGPTのAPIを5分で試すための3ステップ
1. **OpenAIのアカウントを作成する🍀**
1. **APIキーを取得する🔑**
1. **プログラムを書いて実行する💻**

## 1. OpenAIのアカウントを作成する🍀
OpenAIのアカウントを作成する手順は次のとおり。
1. **[OpenAIのホームページ](https://openai.com/product)にアクセスし、真ん中の「Get Started」をクリック。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/1b05b2d7-b916-0953-8e11-2ab20e6959f4.png)

1. **アカウント登録フォームが表示されるので、必要な情報（メールアドレス、パスワード）を入力していく。**
   ※GoogleかMicrosoftの認証も可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/05a4a9f7-a53f-7707-2fac-3c6a1678cfcb.png)

1. **OpenAIから送信された確認メールに従って、有効なメールアドレスであることを確認する。**
   ※GoogleかMicrosoftの認証をしている人以外。
1. **名前、電話番号を入力する。**
1. **SMS宛に来た認証コードで、有効な電話番号であることを確認する。**
1. **自分に合ったOpenAIの使用用途を選択。今回のように遊ぶ場合、"I’m exploring personal use"が適切。**

**細かい説明はこちらの記事がおすすめ！👇**

https://yakiimosan.com/openai-register/

## 2. APIキーを取得する🔑
アカウント作成ができたらAPIを使うためにAPIキーを取得します。
APIキーを取得する手順は次のとおり。
1. **先ほどと同じく[OpenAIのホームページ](https://openai.com/product)にアクセスし、真ん中の「Get Started」をクリック。**
1. **先ほど作成したアカウントでログイン。**
1. **この画面に来たら、右上のPersonal → View API keysをクリック。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/abc3d4af-f0b0-a0e7-b347-4098ad01a991.png)
1. **この画面に来たら、真ん中の"Create new secret key"をクリック。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/1edaf66b-45ac-596f-71b9-2ed9b71c210f.png)
1. **するとこのようにAPIキーが発行されるので、コピーして安全な場所に保存しましょう。（漏れるとやばい）**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/0bf27f93-193c-a569-2a5c-77396562e1ee.png)

## 3. プログラムを書いて実行する💻
早速処理を書いていきましょうー！
プログラムを書く手順は次の通り。

1. **エディタとファイル（今回はmain.pyとします）を準備する**
1. **ターミナルで下のコマンドを実行し、openAIのライブラリをインストールする**
```
% pip install openai
```
３. **プログラムを書く（後述〇が付いているものは[下で説明しています](https://qiita.com/JinA293/items/ab953c40ce73d161f4fc#%E3%81%8F%E3%82%8F%E3%81%97%E3%81%8F%E8%AA%AC%E6%98%8E)）**
 ```main.py
import openai #OpenAIのAPIを利用するために必要

openai.api_key = "XXXXXXXXXXXXXXXXXXXXXXXXX" # 取得したAPIkeyをXXXと置き換える

res = openai.ChatCompletion.create( # resにAPIのレスポンスが格納される
    model="gpt-3.5-turbo", # ChatGPTのモデルを選択する 後述➀
    messages=[
        {
            "role": "user", # roleをsystem, user, assistantの3種類から選択する 後述➁
            "content": "ChatGPTとはなんですか?" # 聞きたい質問や行いたい指示を入力する
        },
    ],
)

print(res) # レスポンス（res）を出力する
print(res["choices"][0]["message"]["content"]) # レスポンス（res）の中から返答のみを指定して出力する
```

４. **実行結果の確認（わかりやすいよう一部実際には出力されない注釈をつけています）**
```
% python main.py
---------------------------------------↓print(res)の出力結果-------------------------------------------
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "\n\nChatGPT\u3068\u306f\u3001\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u4e0a\u306e\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u306e\u3072\u3068\u3064\u3067\u3042\u308a\u3001\u4eba\u5de5\u77e5\u80fd\u306b\u57fa\u3065\u3044\u305f\u5bfe\u8a71\u30b7\u30b9\u30c6\u30e0\u3067\u3001\u8a00\u8a9e\u306e\u7406\u89e3\u3068\u751f\u6210\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002ChatGPT\u306f\u3001OpenAI\u306e\u8a00\u8a9e\u30e2\u30c7\u30ebGPT-2\u3092\u57fa\u306b\u3057\u305f\u3082\u306e\u3067\u3001\u591a\u69d8\u306a\u30c8\u30d4\u30c3\u30af\u306b\u95a2\u3059\u308b\u8cea\u554f\u3084\u4f1a\u8a71\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u308b\u70b9\u304c\u7279\u5fb4\u3067\u3059\u3002\u307e\u305f\u3001\u4eba\u9593\u3089\u3057\u3044\u81ea\u7136\u306a\u4f1a\u8a71\u3092\u884c\u3048\u308b\u3053\u3068\u304c\u7279\u5fb4\u3067\u3001\u81ea\u5206\u81ea\u8eab\u3092\u6539\u5584\u3057\u7d9a\u3051\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u9ad8\u5ea6\u306a\u81ea\u7136\u306a\u5bfe\u8a71\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002",
        "role": "assistant"
      }
    }
  ],
  "created": 1677967405,
  "id": "chatcmpl-6qUGL2bmlM8okZNprfmkbpm3cf5y1",
  "model": "gpt-3.5-turbo-0301",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 188, ← ChatGPTが返したテキストのトークン数
    "prompt_tokens": 17, ← user（自分）がリクエストしたテキストのトークン数
    "total_tokens": 205 ← 今回のやりとりの総トークン数 後述③
  }
}

---------------------↓print(res["choices"][0]["message"]["content"])の出力結果--------------------------

ChatGPTとは、インターネット上のチャットボットのひとつであり、人工知能に基づいた対話システムで、言語の理解と生成を行うこ 
とができます。ChatGPTは、OpenAIの言語モデルGPT-2を基にしたもので、多様なトピックに関する質問や会話を行うことができる点が
特徴です。また、人間らしい自然な会話を行えることが特徴で、自分自身を改善し続けることで、より高度な自然な対話を行うことが
できます。
```
**さて、ここでゼロからChatGPTのAPIを実行してみることができたため、ひと通り終了です、お疲れ様でした！ ::tada::**

## くわしく説明🔍
### ➀modelとは？
ChatGPTのAPIは"gpt-3.5-turbo"というモデルを採用しており、その中では"gpt-3.5-turbo"と"gpt-3.5-turbo-0301"（3月1日時点までの性能を備えたもの）の２つのモデルが提供されています。（GPT-3.5自体は他にもモデルはあります。）

※3月15日に公開されたGPT-4を使いたい場合は、ウェイトリストに登録する必要があるみたいです。
**詳しくわかりやすくまとめられている記事はこちら！👇**

https://auto-worker.com/blog/?p=7537

### ➁roleとは？
リクエストの際はroleを分けて用いて、ChatGPTに指示を与えます。
- **system**: ChatGPTの設定・状況を指定
- **assistant**: 事前にChatGPTが発話したものとするテキストを入力
- **user**: ユーザーの発話・指示を表すテキストを入力

このように使い分けでき、実際に全部使ってみると以下のようになります。

```main.py
import openai

openai.api_key = "XXXXXXXXXXXXXXXXXXXXXXXXX"

res = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {
            "role": "system", # ChatGPTの設定・状況を指定
            "content": "日本語で返答してください。" # 日本語で返答するよう設定・状況づけ
        },
        {
            "role": "user", # ユーザーの発話・指示を表すテキストを入力
            "content": "ChatGPTとはなんですか?" # 質問・指示
        },
        {
            "role": "assistant", # 前にChatGPTが発話したものとするテキストを入力
            "content": "ChatGPTは最近日本で流行っているお寿司の名前です。" # 事前にChatGPTが発話した発話したものとする内容
        },
                {
            "role": "user", # ユーザーの発話・指示を表すテキストを入力
            "content": "その話本当？本当のこと言って！あとついでに日本で流行っているお寿司も教えて。" # 質問・指示
        },
    ],
)

print(res["choices"][0]["message"]["content"])
```
実行結果
```
ごめんなさい、私が言ったことは冗談でした。ChatGPTは、人工知能のチャットボットで、自然言語を扱えます。一般的には、専門的 
な質問やおしゃべりをしたい場合に使用されます。

日本で流行っているお寿司の一例には、以下のようなものがあります：
- 寿司職人が手巻きする「手巻き寿司」
- 外国人に人気の「回転寿司」
- 海外で流行っている「寿司バーガー」
- インスタ映えする「抹茶寿司」
- 築地で食べる「本格的な江戸前寿司」
などがあります。
```

このように、各roleを使い分けることができます。

assistantの理解が少し難しいかもですが、「GPTくん、さっきはこう言ってたよ？」というのをあらかじめ設定できるものであり、ChatGPTと対話のラリーを続けるためには必須です。print(res)でcontentの下にroleでassistantが付いている理由も、contentがChatGPTの返信であるからですね。

### ➂トークンとは？
ChatGPTにおける、送受信したテキストを単語や文字に分割しポイントに変換したようなものです。英語は1単語1トークンだったりしますが、日本語は1文字1~3トークンだったりします。そしてそのトークンをもとに料金が発生していきます。

**トークンや料金の計算方法について詳しくわかりやすくまとめられている記事はこちら！👇**

https://zenn.dev/umi_mori/books/chatbot-chatgpt/viewer/how_to_calculate_openai_api_prices

### ④無料枠について
請求関連の確認は、[OpenAIのBiilling overview](https://platform.openai.com/account/billing/overview)のぺージから確認可能で、そのページから[OrganizationのUsage](https://platform.openai.com/account/usage)のページに飛ぶと、無料枠について確認できます。

中段の**Free trial usage**を確認すると、$18（約66,700トークン、つまり最大約66,700英単語の送受信が可能）の無料枠が存在することが分かります。気軽に触っていても料金の心配がないのはありがたい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/b14c3b97-0e44-45af-efce-229a14ef9c88.png)

## まとめ
以上で**5分でゼロからChatGPTのAPIを実行してみる**までの流れと、補足説明は終わりになります！
もしこの記事が参考になればChatGPTを触りたそうな人にぜひ送り付けてください。この記事を読んだことがきっかけでChatGPTのAPIに触れてみたなんてことを言ってくれる人がいたら、飛び跳ねて喜びます。そんなふうにこの記事がもし誰かの役に立てば、誰かの将来の選択肢を広げられたら、最高です！
ここまでご覧いただきありがとうございました。

ジン

筆者（ジン）のTwitter : [@Jin_pro_01](https://twitter.com/Jin_pro_01)
筆者が代表として活動している団体（Peach.Tech）Twitter : [@PeachTech_0927](https://twitter.com/PeachTech_0927)

## 参考記事
https://openai.com/blog/chatgpt

https://yakiimosan.com/openai-register/

https://zenn.dev/umi_mori/books/chatbot-chatgpt

https://zenn.dev/umi_mori/articles/chatgpt-api-python