OpenAI API(主にチャット生成)についてまとめた
概要
OpenAIのAPIを利用してチャットボットを作るにあたり、OpenAIの提供するAPIの調査を行なった。
OpenAIのAPI
OpenAIが提供するAPI一覧(202307時点)
| API名翻訳 | APIパス※ | 説明 | 
|---|---|---|
| チャット補完API | chat/completions | 指定されたチャット会話に対するモデル応答を作成・返答する。対応: gpt-4, gpt-3.5-turbo | 
| 補完API(廃止予定) | completions | 指定されたプロンプトとパラメータの補完を作成する。対応: text-davinci-003, text-davinci-002, davinci, curie, babbage, ada | 
| モデル一覧取得API | models | 現在入手可能なモデルとその基本情報のリストを取得する。 | 
| モデル取得API | models/{model} | 所有者や権限などのモデルに関する基本情報を取得する。 | 
| 画像生成関連 | image/ | プロンプトや入力画像が与えられると、モデルは新しい画像を生成する。 | 
| テキストの関連性取得API | embeddings | 機械学習モデルとアルゴリズムで簡単に利用できる、特定の入力のベクトル表現を取得する。 | 
| 音声のテキスト変換API関連 | audio/ | 音声を入力言語に転写したり、音声を英語に翻訳したりする。 | 
| ファイルアップロード関連 | files/ | チューニング用トレーニングデータをアップロードする。 | 
| モデルチューニング関連 | fine-tunes/ | モデルを特定のトレーニングデータに合わせて調整する。 | 
| モデレーションAPI | moderations | テキストがOpenAIのコンテンツポリシーに違反しているかどうかを分類する。 | 
| プロンプト編集(廃止予定) | edits | よりよいプロンプトを作成する。 | 
※APIパスについて
URI = https://api.openai.com/v1/ +  APIパス
APIリファレンス
リクエスト方法(チャット補完APIの例)
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "Say this is a test!"}],
     "temperature": 0.7
   }'
レスポンス例
{
   "id":"chatcmpl-abc123",
   "object":"chat.completion",
   "created":1677858242,
   "model":"gpt-3.5-turbo-0301",
   "usage":{
      "prompt_tokens":13,
      "completion_tokens":7,
      "total_tokens":20
   },
   "choices":[
      {
         "message":{
            "role":"assistant",
            "content":"\n\nThis is a test!"
         },
         "finish_reason":"stop",
         "index":0
      }
   ]
}
APIのリクエストに必要な知識や情報
モデル
チャット補完APIのリクエストパラメータでモデルを選択できる。
OpenAI API は、さまざまな機能と価格帯を備えたモデルのセットを提供している。
| モデル名 | 説明 | 備考 | 
|---|---|---|
| GPT-4 | GPT-3.5 を改良し、自然言語やコードを理解し、生成できるモデルのセット | トレーニングデータは2021年9月まで。開発者プラットフォームを通じて少なくとも 1 回正常に支払いを行った人がアクセスできる(202307現在。 | 
| GPT-3.5 | GPT-3 を改良し、自然言語やコードを理解し、生成できる一連のモデル | トレーニングデータは2021年9月まで。 | 
| DALL·E | 自然言語プロンプトが与えられた場合に画像を生成および編集できるモデル | |
| Whisper | 音声をテキストに変換できるモデル | |
| Embeddings | テキストを数値形式に変換できる一連のモデル | |
| Moderation | テキストが機密性の高いものであるか安全ではないかを検出できる微調整されたモデル | |
| GPT-3 | 自然言語を理解して生成できる一連のモデル | 廃止予定 | 
リンク
モデル
GPTモデル
API keys
OpenAIのAPIは基本的に無料枠と有料枠があり、サービスで利用するにはレート制限的に実質有料となっている。
OpenAIのAPIに課金するにはOpenAIのマイページで発行されたAPI keyをAPIリクエストに含めることで従量課金を行う。
この仕組みのためOpenAIのAPIは基本的にAPI keysがないと動かない。
API keys(マイページへのリンク)
APIのレート制限
OpenAIのAPIは課金の有無によって以下のようにレート制限されている。
| ユーザ | RPD (1 日あたりのリクエスト数) | RPM (1 分あたりのリクエスト数) | TPM (1 分あたりのトークン) | 
|---|---|---|---|
| 無料トライアルユーザー | 200 | 3 | 40000 | 
| 従量課金制ユーザー (最初の 48 時間) | 2000 | 60 | 60000 | 
| 従量課金制ユーザー (48 時間後) | - | 3500 | 90000 | 
リンク
レート制限について
レートの設定を行う(マイページ内へのリンク)
値段
以下の価格設定。
| モデル | コンテキスト | 入力費用(ドル/1000トークン) | 出力費用(ドル/1000トークン) | 
|---|---|---|---|
| GPT-4 | 8k | $0.03 | $0.06 | 
| 32k | $0.06 | $0.12 | |
| GPT-3.5ターボ | 4k | $0.0015 | $0.002 | 
| 16k | $0.003 | $0.004 | 
コンテキストって?
- ターボモデル(gpt-3.5-turbo などモデル名にturboと付くもの)は8kまたは4k
 - 通常版モデルは32kまたは16k
 
トークンは、自然言語処理に使用される単語の一部と考えることができます。英語のテキストの場合、1 トークンは約 4 文字または 0.75 ワードです。参考までに、シェイクスピアのコレクション作品は約 900,000 語または 120 万トークンです。
※日本語だとかなり多くかかります
チャット補完API(GPT3.5Turbo)の計算例
プロンプトに 200 トークンが含まれている。 => 入力費用
GPT-3.5 Turbo (4K) API から 1 つの 850 トークン補完をリクエストする。 => 出力費用
リクエストでは合計 1050 トークンが使用されるコストがかかります。
$0.002 = (200 * 0.0015 + 850 * 0.002) / 1000
0.2円
プレイグラウンドにテキスト入力をするとフッターのカウンターにテキスト内のトークン数が表示される。
トークンツール
請求(マイページ)
価格一覧
APIの利用例
APIの利用例
さまざまな用途での例があり、それを得るためのリクエストもわかりやすいので是非一度見てほしい。
例
- 小学2年生向けにまとめてみました
 - ツイート内の感情を検出します
 - 2人のラップバトル
 - テキストの説明を色に変換します
 - シングルページの Web サイトを作成します
 - ソースコード内のバグを見つけて修正します
 - 複雑なコードを説明します
 - 自然言語をSQLクエリに変換します
 
プレイグラウンド
プロンプトを生成するために何度も試行するためのツールが用意されている。
プレイグラウンド
SDK(Python, Node.js, Go他)
上記APIを各言語で快適に利用するためのSDKだが、公式にはPythonとNode.jsのライブラリが提供されている。
Goや他言語で快適に利用するためのSDKはコミュニティ運営となっており利用は自己判断となっている。
感想
サイト全体ではさんざん激高のGPT4.0をお勧めしておいて、価格計算例だと急に安いGPT3.5turboで計算するのずるい。
しかし、まだ安いGPT3.5turboで1応答0.2円かぁ・・・しかも日本語はずっと高いはずだし、今までの会話の流れも入力したいしで、10倍以上はしそう。
GPT4は高い(入力20倍、出力30倍のお値段)から選択肢から消えたな。
参考
Discussion