🔖

OpenAI API(主にチャット生成)についてまとめた

2023/07/19に公開

概要

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リファレンス
https://platform.openai.com/docs/api-reference

リクエスト方法(チャット補完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 自然言語を理解して生成できる一連のモデル 廃止予定
リンク

API keys

OpenAIのAPIは基本的に無料枠と有料枠があり、サービスで利用するにはレート制限的に実質有料となっている。
OpenAIのAPIに課金するにはOpenAIのマイページで発行されたAPI keyをAPIリクエストに含めることで従量課金を行う。
この仕組みのためOpenAIのAPIは基本的にAPI keysがないと動かない。

API keys(マイページへのリンク)
https://platform.openai.com/account/api-keys

APIのレート制限

OpenAIのAPIは課金の有無によって以下のようにレート制限されている。

ユーザ RPD (1 日あたりのリクエスト数) RPM (1 分あたりのリクエスト数) TPM (1 分あたりのトークン)
無料トライアルユーザー 200 3 40000
従量課金制ユーザー (最初の 48 時間) 2000 60 60000
従量課金制ユーザー (48 時間後) - 3500 90000
リンク

レート制限について
https://platform.openai.com/docs/guides/rate-limits/what-are-the-rate-limits-for-our-api

レートの設定を行う(マイページ内へのリンク)
https://platform.openai.com/account/rate-limits

値段

以下の価格設定。

モデル コンテキスト 入力費用(ドル/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円

プレイグラウンドにテキスト入力をするとフッターのカウンターにテキスト内のトークン数が表示される。

トークンツール
https://beta.openai.com/tokenizer

請求(マイページ)
https://platform.openai.com/account/billing/overview

価格一覧
https://openai.com/pricing

APIの利用例

APIの利用例
https://platform.openai.com/examples

さまざまな用途での例があり、それを得るためのリクエストもわかりやすいので是非一度見てほしい。

プレイグラウンド

プロンプトを生成するために何度も試行するためのツールが用意されている。
プレイグラウンド
https://platform.openai.com/playground?mode=chat

SDK(Python, Node.js, Go他)

上記APIを各言語で快適に利用するためのSDKだが、公式にはPythonとNode.jsのライブラリが提供されている。
https://platform.openai.com/docs/libraries/community-libraries

Goや他言語で快適に利用するためのSDKはコミュニティ運営となっており利用は自己判断となっている。
https://platform.openai.com/docs/libraries/community-libraries
https://github.com/sashabaranov/go-openai

感想

サイト全体ではさんざん激高のGPT4.0をお勧めしておいて、価格計算例だと急に安いGPT3.5turboで計算するのずるい。
しかし、まだ安いGPT3.5turboで1応答0.2円かぁ・・・しかも日本語はずっと高いはずだし、今までの会話の流れも入力したいしで、10倍以上はしそう。
GPT4は高い(入力20倍、出力30倍のお値段)から選択肢から消えたな。

参考

https://platform.openai.com/
https://platform.openai.com/docs/introduction
https://platform.openai.com/docs/api-reference

GitHubで編集を提案

Discussion