ChatGPTとは?
ChatGPTはOpenAIが開発したGPT(Generative Pre-trained Transformer)シリーズのモデルを基にしたチャットボットやテキスト生成アプリケーションの一部です。具体的には、ユーザーからの質問やプロンプトに対してテキスト応答を生成する目的で使用されることが多いです。
GPTは大規模なテキストデータを元に訓練された深層学習モデルであり、様々なテキスト生成タスクに対して高い性能を発揮します。GPTのアーキテクチャは、特定のタスクに対して先に訓練する(pre-train)ことなく、大量のテキストデータで事前訓練され、その後特定のタスクに合わせて微調整(fine-tuning)されることが一般的です。
ChatGPTは、このGPTモデルをチャットのコンテキストに最適化したもので、ユーザーとの対話形式での情報提供や質問応答などに使用されます。OpenAIはGPTのバージョンアップに伴い、性能や応答の質も向上してきました。
ChatGPTのプラン
ChatGPTには無料プランと有料プランが存在します。
- ChatGPT無料プラン
- ChatGPT有料プラン(ChatGPT Plus)
Free Plan | ChatGPT Plus | |
料金 | 無料 | USD $20/月 |
高負荷時の利用制限 | 高負荷時には利用不可 | 高負荷時でも利用可能 |
応答速度 | 標準的な応答速度 | 早い応答速度 |
機能へのアクセス | 標準的なモデルのみ利用可能 | 新機能や新モデルが利用可能 |
利用可能なモデル | GPT-3.5 | GPT-3.5GPT-3.5 turboGPT-4 |
GPT-3.5とGPT-4の違い
以下より抜粋させていただきました。
【7/24更新】ChatGPTとは?使い方、料金、できること、注意点、社会への影響まで徹底解説 – DXコラム – 株式会社エクサウィザーズ
2023年4月現在、ChatGPTで使えるGPT-3.5、GPT-4のモデルの違いについて説明します。
GPT-3.5 | GPT-4 | |
---|---|---|
発表日 | 2022年11月30日 | 2023年3月14日 |
性能 | ・複雑な処理に対応可能に・間違いを認め、修正することも可能に | ・画像も入力可能・多くのプラグインを公開中・高い推論力・嘘をつく確率の低減など |
表示速度※ChatGPT使用時 | 早い | 遅い |
他サービスとの連携 | APIを使い他サービスに連携可能 | API連携の他、ChatGPT Plusでは多くのプラグインが利用可能 |
Webブラウンジング機能 | 使用不可 | ChatGPT Plusで可能 ※2023年7月一時的に停止 |
GPT-3.5とGPT-4の大きな違いとしては
- 画像も入力可能になったこと
- 日本語の精度が飛躍的に向上したこと
- 開発者・ユーザーが口調やスタイルを指定可能になったこと
- AIの幻覚(ハルシネーション)が大幅に低減したこと
- 危険な回答が低減したこと
などがあげられます。
特に画像が入力可能になったというのは興味深いことです。目次作成のプロジェクトでも利用可能か検証してみたいと思います。
ChatGPTのメッセージ送信回数の上限
ChatGPTはメッセージの送信回数に上限があります。メッセージ送信数の上限は 50回/3時間
です。(2023年7月19日)
無料プラン、有料プランでメッセージ送信回数の上限に違いはないようです。
また、メッセージ送信回数に応じて料金が変わることもありません。料金は月額固定です。
ChatGPT APIとは
ChatGPT APIはOpenAIが提供するAPIで、ChatGPTモデルを利用して、外部のアプリケーションやサービスからテキスト応答を生成するためのインターフェースです。APIを使用することで、開発者はChatGPTの能力を自分のアプリケーションやウェブサイト、その他のサービスに統合することができます。
ChatGPT APIを使用すると、以下のようなことが可能です:
- 質問応答: ユーザーからの質問に応じて情報を提供する。
- 文章生成: 与えられたプロンプトに基づいてテキストを生成する。
- チャットボットの機能: ユーザーとの対話を通じて情報を提供やサポートを行う。
- その他多岐にわたる応用: クリエイティブな書き込み、コード生成、言語翻訳など。
APIを利用するには、通常、APIキーが必要で、このキーを使用してリクエストを送信することで、ChatGPTモデルにアクセスできます。OpenAIのウェブサイトには、APIの使用方法や料金、利用制限などの詳細情報が提供されているはずです。
ChatGPTとChatGPT APIの違い
ChatGPTとChatGPT APIの違いを簡潔に表にまとめると以下のようになります。
項目 | ChatGPT | ChatGPT API |
---|---|---|
定義 | OpenAIによって開発されたGPTモデルを用いたテキスト対話システム。 | ChatGPTモデルにプログラムからアクセスするためのインターフェース。 |
目的 | ユーザーがウェブインターフェースなどを通じて直接質問や対話を楽しむ。 | 開発者が自らのアプリケーションやウェブサイトにChatGPTの機能を統合する。 |
アクセス方法 | OpenAIの提供するウェブインターフェースなどを介して利用。 | APIキーを使用して、プログラムからリクエストを送信。 |
費用 | 無料のアクセスや特定のサブスクリプションモデルが存在する場合がある。 | 通常、リクエストの数や使用量に応じた料金が発生。具体的な料金体系はOpenAIの公式情報を参照。 |
主な利用者 | 一般のユーザー、研究者、趣味での利用者など。 | アプリケーション開発者、ビジネスオーナー、研究者など。 |
注意が必要なのは、ChatGPTとChatGPT APIは異なる料金プランだということです。
- ChatGPT – 固定料金モデル – 無料プランまたは有料プラン(ChatGPT Plus)
- ChatGPT API – 従量課金モデル
ChatGPT APIの利用方法
以下でアカウントの作成方法を解説しています。
ChatGPT APIの料金計算方法
ChatGPTの料金計算方法をまとめると以下のようになります。
ChatGPT APIの料金体系
- 課金方式: 従量課金制
- 月額固定料金: なし
- 請求タイミング: 月末にその月の利用分を請求
- 料金基準: トークン数と利用言語モデルに基づく
gpt-3.5-turboの料金 (4Kの場合)
トークン種別 | 料金 |
---|---|
1,000入力トークン | 0.015ドル |
1,000出力トークン | 0.002ドル |
- 料金計算式:
利用料金 = (入力トークン + 出力トークン) × 使用モデルの利用単価
トークンの計算方法
言語 | 計算基準 |
---|---|
英語 | 1単語/記号 = 1トークン |
日本語 | ひらがな: 1文字≥1トークン、漢字: 1文字 = 2〜3トークン |
- 注意: 日本語は英語に比べてトークン消費量が増える傾向にある。
トークンとは?
料金体系を理解する上でトークンの仕組みを理解しておいた方が良いでしょう。以下にトークンについて解説します。
トークンとは?
- トークンは、テキストを分解した最小の単位です。
- 通常、トークンは単語や記号を指しますが、言語や文脈によっては一単語が複数のトークンに分割されることもあります。
トークンの計算
- 英語では、大抵の単語や記号が1トークンとしてカウントされます。
- しかし、日本語のような言語では、トークンの計算が異なることが多い。例として、ひらがなやカタカナは通常、1文字が1トークンとしてカウントされますが、漢字は1文字で2〜3トークンとしてカウントされることがあります。
トークン数の制限の対象と注意事項
セッションのトークン数の制限の対象
- GPTモデルは、一度のセッションで扱えるトークンの数に制限があります(例: GPT-3では2048トークン)。
- 一度のセッションで扱うトークン数には、過去のメッセージ、質問、応答が含まれます。
トークン数の制限に関する注意点
ChatGPTのセッション内のトークン数が4096トークンを超えると、一部のテキストを削除する必要がありますが、その際にいくつかの注意点があります。
セッション内のトークン数が制限を超えた場合、古いテキストを削除する必要が生じます。通常、最も古いメッセージが削除されます。この場合、以下のことに注意してください:
- コンテキストの一部が失われます: 最も古いメッセージが削除されるため、セッション内の過去のコンテキストの一部が失われます。これにより、モデルの理解力や応答の一貫性に影響が出る可能性があります。
- 応答がコンテキストに依存する: ChatGPTは直前のテキストコンテキストに依存して応答を生成します。セッション内で削除された過去のメッセージは、モデルが応答を生成する際に考慮されなくなります。したがって、長い対話の途中でコンテキストが削除されると、モデルの応答がそれに合わせて変わる可能性があります。
- トークン数に注意: 新しいメッセージを追加するたびに、セッション内のトークン数は増加します。セッションが4096トークンの制限に近づくと、さらなるトークンを追加できなくなり、その結果、応答を生成することが難しくなります。
したがって、セッション内のトークン数を管理し、必要に応じて古いコンテキストを削除することが重要です。セッションを維持しながらトークン数を適切に制御することで、スムーズな会話を続けることができます。
仮に長い文章を分割して送ったとしても、トークン数の上限を超えれば削除されるため、ChatGTPの応答のコンテクストに含まれなくなります。
履歴と質問、答えを合わせて、4096トークンが上限です。トークンはほぼ単語に相当するものです(後述)。トークン数を表示するには、次のようにします:
print(res["usage"]["prompt_tokens"], # (履歴と)質問のトークン数 res["usage"]["completion_tokens"], # 答えのトークン数 res["usage"]["total_tokens"]) # 合計
合計が4096を超えることはありません。延々と会話を続けるには、不要な履歴を削除する必要があります。削除も含めて、簡単な会話を続けるには、例えば次のようにすればいいでしょう:
ChatGPTのAPIを使うimport openai msg = [{"role": "system", "content": "あなたは賢いAIです。"}] while True: prompt = input("> ").strip() if prompt in ["quit", "exit"]: break msg.append({"role": "user", "content": prompt}) res = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=msg) ans = res["choices"][0]["message"]["content"].strip() print(ans) msg.append({"role": "assistant", "content": ans}) if res["usage"]["total_tokens"] > 3000: msg.pop(1) msg.pop(1)
トークン量の計算方法
トークン量の計算方法には主に以下の2種類が挙げられます。
トークン量の計算方法
- OpenAIが提供するTokenizerを使う: UIから計算出来ます。
- Pythonのライブラリtiktokenを使う: ChatGPT APIを使ってPythonプログラムから計算出来ます。
各言語モデルの金額
Pricingに各モデルの1Kトークンあたりの料金が掲載されています。4Kや8Kはコンテクスト(セッション内の会話の履歴、現在の入力、現在の出力)に含むことが出来るトークン数の上限です。以降、このことを「扱える」と書くことにします。ある言語モデルの中にも扱えるトークン数が異なるモデルがあり、モデルごとに料金が異なります。
GPT-4
Model | Input | Output |
8K context | $0.03 / 1K tokens | $0.06 / 1K tokens |
32K context | $0.06 / 1K tokens | $0.12 / 1K tokens |
GPT-3.5 Turbo
Model | Input | Output |
4K context | $0.0015 / 1K tokens | $0.002 / 1K tokens |
16K context | $0.003 / 1K tokens | $0.004 / 1K tokens |
Fine-tuning models
Model | Training | Input usage | Output usage |
babbage-002 | $0.0004 / 1K tokens | $0.0016 / 1K tokens | $0.0016 / 1K tokens |
davinci-002 | $0.0060 / 1K tokens | $0.0120 / 1K tokens | $0.0120 / 1K tokens |
GPT-3.5 Turbo | $0.0080 / 1K tokens | $0.0120 / 1K tokens | $0.0160 / 1K token |
具体的なやり取りのトークン数と料金の試算
例として、以下の文章の一回の送受信にかかるトークン数を計算してみます。
送信メッセージ
OpenAIについて教えてください。
返信メッセージ
もちろん、OpenAIについてお伝えします。
OpenAIは、2015年に設立された非営利団体で、AIの研究と開発を行っています。設立時の主な目的は、人類全体に利益をもたらす形で安全なAI技術を推進し、広めることです。
以下は、OpenAIに関する基本的な情報です:
ミッション: OpenAIのミッションは、人間のような能力を持つAIを安全に開発し、この技術の恩恵がすべての人々に行き渡るようにすることです。
原則: OpenAIはいくつかの重要な原則に基づいています。例えば、長期的な安全性を確保することや、他の研究グループが安全に関する価値を共有していれば協力すること、技術リーダーシップの維持などが挙げられます。
研究の公開: OpenAIは研究を公開することをコミットメントとして掲げていますが、安全性やセキュリティ上の懸念から、将来的にはすべての研究を公開できなくなる可能性も認識しています。
GPT: あなたが今対話しているこのモデル、ChatGPTを含む、Generative Pre-trained Transformer (GPT) シリーズは、OpenAIによって開発されました。GPTは自然言語処理のタスクにおいて高い性能を示しています。
協力と競争: OpenAIは他の研究機関や組織との協力を重視しています。特に、AIの安全性に関する研究においては、競争よりも協力の姿勢をとることを宣言しています。
資金: 初めは完全に非営利組織として活動していましたが、後に資金調達のためにOpenAI LPという有限責任企業を設立し、その企業を通じて研究を進める形になりました。しかし、その主な使命は変わっていません。
これはOpenAIに関する基本的な情報の概要です。もしご質問や詳細を知りたい点があれば、お気軽にお知らせください。
送信メッセージ:17トークン (18文字)
返信メッセージ:1010トークン (784文字)
返信メッセージを参考にすると、1文字あたりのトークン数は約1.30となりました。
ついでに適当な英語の文章についてもトークン数を調べてみます。
The GPT family of models process text using tokens, which are common sequences of characters found in text. The models understand the statistical relationships between these tokens, and excel at producing the next token in a sequence of tokens.
You can use the tool below to understand how a piece of text would be tokenized by the API, and the total count of tokens in that piece of text.
参考:英語のメッセージ:79トークン (390文字)
1文字あたりのトークン数は約0.20となりました。
GPT-3.5 Turboの4Kを使用する前提で料金を計算してみます。(参考として計算した英語のメッセージは含みません。)
上記の1回のメッセージの入出力にかかるトークン数
Token | USD / Tokens | USD | JPY | |
input | 17 | 0.0015 | 0.00003 | 0.00375 |
output | 1,010 | 0.0020 | 0.00202 | 0.29694 |
0.00205 | 0.30069 |
USD $1=147 JPYとして計算すると、上記の1回の入出力のやり取りは 約0.3円
となりました。
概算のため、1Kトークン=1000トークンとして計算しました。実際は1Kトークン=1024トークンとなるはずです。
4Kや16Kといったモデルの違いは?
以下を参考にさせていただきました。
超低価格で長文要約が可能に:GPT-3 「16k」が登場(簡単な使い方は?)|Martin
各モデルについている ◯◯K
は一度に扱えるトークン数の上限を指しています。
例として、4Kモデルと16Kモデルでは以下のようになります。
- 4Kモデルでは、4K=4096トークンまで扱える
- 16Kモデルでは、16K=16385トークンまで扱える
1Kトークン=1024トークンとなるようです。
モデルごとに送信出来る最大の文字数は?
モデルごとに送信出来る最大の文字数の概算を計算してみます。
上記の検証データに基づいた1文字あたりのトークン数
- 英語: 1文字あたり0.20トークン
- 日本語: 1文字あたり1.30トークン
これと各モデルでのトークン数の上限から上限の文字数を計算します。
モデル・言語ごとの最大文字数
英語 | 日本語 | ||
1文字あたりのトークン数 | 0.2 | 1.3 | |
モデルに対応する (K) | 上限のトークン数 | ||
4 | 4,096 | 20,480 | 3,151 |
16 | 16,384 | 81,920 | 12,603 |
32 | 32,768 | 163,840 | 25,206 |
英語と日本語を比べると、送信出来る文字数が約7倍となっており、英語の方が扱える文字数に関してかなり有利です。また、料金に関しても1文字あたりのトークン数が英語の方が日本語よりも小さいため、有利です。可能であれば英語を使うと料金・扱える最大文字数ともに優位でしょう。
モデルのK数が大きくなると、一度に送信できる文字数が多くて便利ですが、その分1トークンあたりの料金も上がります。このあたりは実際に扱うやり取りに応じてモデルを選択すると良いでしょう。
ChatGPT APIを使う前にChatGPTでやり取りしてプロンプトをチューニングしておくことで試行錯誤にかかる料金を抑える
ChatGPTは無料または有料でも月々の料金は定額です。一方でChatGPT APIは従量課金モデルとなっています。あるやり取りに関して試行錯誤しているタイミングにおいては、まずはChatGPTで固定料金の中で様々なプロンプトを試し、ある程度プロンプトの方針が固まった時点でChatGPT APIを利用することで試行錯誤にかかる料金を抑えることが出来るでしょう。
ChatGPTとChatGPTのデータポリシーの比較
以下はOpenAIのAPIと非APIにおけるデータ利用ポリシーを表形式で整理したものです。
非API (例: ChatGPT) | API | |
---|---|---|
データの利用 | サービスの向上のために利用される可能性あり | 学習に使用しない(共有の許可がない場合) |
データの保持期間 | 保持期間についての具体的な言及はなし | 最大30日 |
データ利用のオプトアウト | 設定からオプトアウトすることが推奨される | 可能(特に悪用のリスクが少ない企業向け) |
データ利用の主目的 | サービス品質の向上 | 不正利用の監視 |
学習に利用されて困るデータは非APIサービスであるChatGPTを利用すべきではないでしょう。そのため、そのようなセンシティブなデータを利用する場合は、APIを使ってメッセージを送信することが推奨されます。