レポート

2023.12.04(月) 公開

ChatGPTトークンの完全ガイド
API料金から節約テクニックまで

レポート NOB DATA株式会社

1. ChatGPTとトークンの入門

1.1 ChatGPTの基本概念

ChatGPT(Chat Generative Pre-trained Transformer)は、OpenAIによって開発された先進的な自然言語処理(NLP)モデルです。このモデルは、テキストデータを理解し、人間のように自然な言語で応答する能力を持っています。ChatGPTは、質問応答、文章生成、テキストの要約など、多くの用途で活用されています。

1.2 トークンの役割と重要性

・トークンとは

トークンは、ChatGPTがテキストを処理する際の最小単位です。一般的には、単語や句、さらには単一の文字までをトークンとして扱います。例えば、"ChatGPT is amazing!"という文は、「ChatGPT」「is」「amazing」「!」という4つのトークンに分割されます。

・トークンの重要性

トークンは、ChatGPTの動作において非常に重要な要素です。まず、API料金はトークン数に基づいて計算されます。また、ChatGPTは一度に処理できるトークン数に制限(通常は4096トークン)があり、この制限を超えるとエラーが発生します。

・トークンと言語

特に日本語と英語では、トークン数が異なる場合があります。これは、日本語が主に漢字、ひらがな、カタカナといった多様な文字を使用するためです。このような言語的特性は、ChatGPTの使用において考慮する必要があります。

2. ChatGPTトークンの詳細解説

2.1 トークンの基本定義

トークンとは、自然言語処理(NLP)においてテキストを分割する最小単位のことを指します。具体的には、ChatGPTがテキストを解析や生成する際には、このトークンを基本単位として使用します。トークンは、単語、句読点、特殊文字など多様な要素から構成されることがあります。

トークンの種類

単語トークン
通常の単語(例:apple、dog、runなど)
句読点トークン
句読点や特殊文字(例:.、!、?、&など)
特殊トークン
モデルが特定の機能を果たすために使用する独自のトークン(例:[CLS]、[SEP]など)

2.2 トークンの成分:単語、フレーズ、文字

単語

単語は、最も一般的な形式のトークンです。英語ではスペースで区切られた文字列が一般的に単語として扱われます。例えば、「ChatGPT is amazing」では「ChatGPT」、「is」、「amazing」が単語トークンです。

フレーズ

フレーズは、複数の単語が組み合わさって一つの意味をなす場合があります。例えば、「New York」や「ice cream」などです。ただし、ChatGPTではこれらも通常は個別のトークンとして扱われます。

文字

特に日本語や中国語など、単語の区切りが明確でない言語では、個々の文字がトークンとして扱われることが多いです。例えば、日本語の「こんにちは」は、一般的に「こ」「ん」「に」「ち」「は」という5つのトークンに分割されます。

3. API料金とトークン数の関連性

3.1 ChatGPT APIの料金計算

ChatGPTのAPI料金は、使用したトークン数に基づいて計算されます。具体的には、APIリクエストで送信される入力テキストと、APIから返される出力テキストのトークン数の合計が、料金の基礎となります。

料金の詳細

GPT-4
入力に$0.003/1kトークン、出力に$0.006/1kトークン
GPT-3.5 Turbo
入力に$0.00015/1kトークン、出力に$0.0002/1kトークン
Fine-tuning Models
Babbageモデルでは$0.00004/1kトークン、Davinciモデルでは$0.00120/1kトークン
無料クレジット
新規ユーザーには、最初の3ヶ月間で$5の無料クレジットが提供されます。

3.2 トークン数とコストの相関

トークン数とコストは密接に関連しています。多くのトークンを使用すると、それだけAPIのコストも高くなります。しかし、一度のリクエストで処理できるトークン数には上限(通常は4096トークン)があります。

コスト削減のテクニック
短い質問 : 質問を短くすることで、トークン数を削減できます。
言語選択 : 英語など、トークン数が少なく済む言語を選択することも一つの方法です。
バッチ処理 : 複数の質問や要求を一度に送ることで、トークン数を効率よく使用することが可能です。

4. 日本語と英語のトークン数比較

4.1 日本語におけるトークン数

日本語のテキストは、一般的には文字ごとにトークン化されます。例えば、「こんにちは」は「こ」「ん」「に」「ち」「は」の5つのトークンに分割されます。これは、日本語が単語の区切りが明確でないためです。

特徴
・文字ごとのトークン化
・絵文字や特殊文字も1トークンとしてカウント

4.2 英語におけるトークン数

英語では、一般的に単語が1つのトークンとして扱われます。スペースや句読点で区切られた単語や記号が1トークンとされます。

特徴
・単語ごとのトークン化
・句読点も1トークンとしてカウント

4.3 言語別トークン数の影響

日本語は文字ごとにトークン化されるため、同じ意味の文でも英語よりトークン数が多くなる可能性があります。これはAPIのコストにも影響を与えるため、注意が必要です。

5.トークン数の調査手法

5.1 OpenAI Tokenizerの活用

OpenAIが提供するTokenizerを使用することで、テキストのトークン数を正確に計算することができます。これはAPI料金を計算する際に非常に有用です。

Tokenizerの使い方(Pythonコード例)


# OpenAIのTokenizerライブラリをインポート
from transformers import GPT2Tokenizer

# Tokenizerのインスタンスを作成
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")

# テキストをトークン化
text = "こんにちは"
tokens = tokenizer.tokenize(text)

# トークン数を計算
token_count = len(tokens)

# トークン数を出力
print(f"トークン数: {token_count}")
        

このコードはPythonで動作し、transformersライブラリを使用しています。このライブラリはpipで簡単にインストールできます(pip install transformers)。

5.2 トークン数の具体例

日本語の例:「こんにちは」は5トークン
英語の例:「Hello」は1トークン
このように、言語によってトークン数が大きく異なる場合があります。

6. 効率的なトークン数の管理

ChatGPTやその他のOpenAI APIを使用する際、トークン数は非常に重要な要素です。トークン数が多いほど、APIのコストが高くなります。このセクションでは、トークン数を効率的に管理するためのいくつかの戦略を紹介します。

6.1 入出力文の最適化

入力文と出力文の長さは、使用するトークン数に直接影響を与えます。不必要な単語やフレーズを省くことで、トークン数を削減することが可能です。例えば、"Tell me what the weather will be like tomorrow in Tokyo"(明日の東京の天気を教えて)という質問は、"Tomorrow's Tokyo weather?"(明日の東京の天気?)と短縮できます。このようにして、必要な情報だけを短く簡潔に表現することで、APIのコストを抑えることができます。

6.2 言語選択の戦略:英語の活用

英語は単語ごとにトークン化されるため、日本語よりもトークン数が少なく済む場合があります。特に、短い単語や短縮形を使用することで、さらにトークン数を削減できます。例えば、"What is the temperature?"(気温は何度ですか?)という質問は、"Temperature?"(気温?)と短縮できます。このような工夫により、APIのコストを効率的に抑えることが可能です。

6.3 質問のシンプル化

質問を短く、明確にすることで、必要なトークン数を最小限に抑えることができます。冗長な表現や修飾語を避け、必要な情報だけを短く簡潔に表現することが重要です。例えば、"Could you please tell me what the current weather is?"(現在の天気を教えていただけますか?)という質問は、"Current weather?"(現在の天気?)と短縮できます。

7. まとめ

この記事を通じて、ChatGPTとトークンに関する多くの側面を探求してきました。トークン数はAPIの使用料金、パフォーマンス、そして全体的なユーザーエクスペリエンスに影響を与えるため、その理解と管理は非常に重要です。

7.1 トークン理解の重要点

トークン数の理解は、APIのコストと効率性を最適化するために不可欠です。特に、日本語と英語でのトークン数の違いや、入出力文の最適化などが重要な要素となります。また、トークン数を正確に計測する方法も理解することで、予期せぬコストを避けることができます。

7.2 トークン数管理のベストプラクティス

効率的なトークン数の管理には以下のようなベストプラクティスがあります。

入出力文の最適化: 不必要な単語やフレーズを省く。
言語選択の戦略: トークン数が少ない言語(通常は英語)を活用する。
質問のシンプル化: 質問を短く、明確にする。
これらのポイントを押さえることで、APIの使用料金を効率的に抑えることができます。

8. 参考資料

8.1 使用文献とリンク集

OpenAI公式サイト:

OpenAIのAPI料金に関する公式情報。トークン数と料金の関係性について詳しく説明されています。

Transformers Library: Hugging Face:

Tokenizerを含む多くの自然言語処理ツールが提供されています。特に、トークン数の計算方法について有用です。

OpenAI GPT-3 FAQ: GPT-3 Frequently Asked Questions

GPT-3やChatGPTに関するよくある質問とその回答。トークン数の管理方法についても触れられています。

Stack Overflow: How to count tokens in text string using Python

Pythonを使用してテキストストリング内のトークン数を計算する方法についての実用的なガイド。