19
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OpenAIのコスト削減!最適なGPTモデル選択とトークン数の管理

Posted at

AI技術の進化とともに、OpenAIのAPIを使用して高度な機能を実現するプロジェクトが増えています。しかし、一方で、APIの利用料金は、トークン数やモデルの性能によって異なります。これにより、コスト管理が重要な要素となってきます。

そこで、本記事では、開発者向けにOpenAIのAPIをコスト効率よく利用するための方法を紹介します。具体的には、トークン数の計算と管理を行い、タスクに適したGPTモデルを選択する方法を解説します。これにより、コストを抑えつつ、最適なパフォーマンスを実現することが可能になります。

さらに、実践的なサンプルコードやTikTokenの使用方法も紹介しますので、すぐにでも活用できる内容を提供します。是非、この記事を参考にして、AI技術を効率的に活用してプロジェクトを成功させましょう。

GPTモデルの概要とコスト

「GPTモデルの概要とコスト」のセクションでは、現在利用可能なGPTモデルの概要と、それらのモデルに関連するコストについて説明します。以下に、このセクションでカバーする主な内容を示します。

GPT (Generative Pre-trained Transformer)の基本概念

GPTは、自然言語処理タスクにおいて高い性能を持つモデルで、大規模なテキストデータから事前学習された知識を活用します。Transformerアーキテクチャに基づいており、文章生成や質問応答など、多様なタスクに対応可能です。

GPT-3.5-turbo, GPT-4 8K, GPT-4 32Kの主な特徴と性能

GPT-3.5-turbo: OpenAIのGPT-3シリーズで、コストパフォーマンスが良く、幅広いタスクに適しています。最大4096トークンまで対応。GPT-4 8K: GPT-4シリーズのモデルで、より高い性能を持ち、最大8192トークンまで対応しています。GPT-4 32K: GPT-4シリーズの最上位モデルで、最高の性能を持ちますが、コストが高くなることが考慮されるべきです。最大32768トークンまで対応。

2023年4月現在の各モデルの比較(1K tokensあたりの料金)

モデル 最大トークン数 OpenAI API GPT-3.5を1とした場合の料金
Prompt (入力) Completion (出力) Prompt (入力) Completion (出力)
GPT-3.5 turbo 4096(4k) token $0.002 1
GPT-4 8K context 8192(8k) token $0.03 $0.06 15 30
GPT-4 32K context 32768(32k) token $0.06 $0.12 30 60

最大トークン数とは?

トークンは、テキストを扱う際の基本単位で、通常は単語や文字の一部に対応します。GPTモデルは、入力と出力のトークン数を計算し、それに基づいてAPI利用料金が決定されます。

最大トークン数は、OpenAI APIに渡すデータの入力トークン数と、GPTからの出力トークン数の合計です。
例えば、gpt-3.5-turbo であれば入力・出力合わせて4096トークンまで使うことが出来ます。例えば、入力が3000トークンで出力が2000トークンの場合、最大数を超えるため出力は1096トークンとなります。

また、入力トークン数はOpenAI APIをコールせずに計算することが出来ますが、出力トークンは実行するまでわかりません。
そのためにも、コストを最適化させるためにはトークン数の制御が重要となります。

OpenAIのコスト最適化

OpenAIの利用料を最適化するには以下の考えが必要となります。
  1. GPT-3.5 turboなら$0.002と安価だが、GPT-4なら安くても15倍以上の料金が発生する
  2. 最大トークン数を超えると、適切な出力が得られなかったり、エラーが発生して無駄なコストが発生する
この2つをプログラムで制御することでコストを最適化します。コストを考えない場合、GPT-4の方が高性能ですが本記事ではコストのみで最適化を行います。

プログラムの大きな考え方としては

  • 入力サイズはtiktokenでカウントする
  • 出力サイズは事前にはわからないので、最大トークン数の一定の割合を最大入力サイズとして利用し、その割合を変数で指定できるようにする
  • 入力された最大入力サイズに合わせてモデルを切り替える

プログラム実装

以下が実装するプログラムとなります。 最初の openai.api_key と最大トークン数の何割を入力に使うかの input_ratio の2つを設定するだけで使えます。
import openai
from tiktoken import Tokenizer, TokenizerMixin
from tiktoken.models import TokenizerModel

openai.api_key = "your_api_key"

# tiktokenによるトークン数計算の関数
def count_tokens(text):
    tokenizer = Tokenizer(TokenizerModel())
    tokens = tokenizer.tokenize(text)
    return len(tokens)

# 入力メッセージ
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Who won the world series in 2020?"},
]

input_text = "\n".join([f"{msg['role']}:{msg['content']}" for msg in messages])

# 入力トークン数の計算
num_input_tokens = count_tokens(input_text)

# 最大トークン数に対する入力トークン数の割合 (0.0〜1.0の範囲で指定)
input_ratio = 0.5

# 各モデルの最大トークン数と最大入力トークン数
models = [
    {"name": "gpt-3.5-turbo", "max_tokens": 4096, "max_input_tokens": int(4096 * input_ratio)},
    {"name": "gpt-4-8k", "max_tokens": 8192, "max_input_tokens": int(8192 * input_ratio)},
    {"name": "gpt-4-32k", "max_tokens": 32768, "max_input_tokens": int(32768 * input_ratio)},
]

# 適切なモデルを選択
selected_model = None
for model in models:
    if num_input_tokens = model["max_input_tokens"]:
        selected_model = model["name"]
        break

if selected_model:
    response = openai.ChatCompletion.create(
        model=selected_model,
        messages=messages,
    )
    generated_text = response.choices[0].message["content"].strip()
    print(f"Using {selected_model}: {generated_text}")
else:
    print("Error: Input token count exceeds the limit of all available models.")

まとめ

本記事では、OpenAI APIをコスト効率良く利用する方法について解説しました。GPT-3.5-turbo、GPT-4 8K、GPT-4 32Kといったモデルの特徴とコストを比較し、トークン数の計算と管理を行い、タスクに適したモデルを選択する方法を紹介しました。また、実践的なサンプルコードやTikTokenの使用方法も提供しました。

将来的には、GPTシリーズのモデルがさらに進化し、より高性能で効率的なモデルが登場することが予想されます。このような状況に対応するためには、API利用においても柔軟にモデル選択やトークン数の管理ができるよう、開発者は常に技術の進歩に注意を払い、最新の情報を取り入れることが重要です。

また、AI技術の発展に伴い、より多くの業界やアプリケーションでGPTモデルが活用されることが期待されます。そのため、コストと性能のバランスを適切に取りながら、独自のビジネスやプロジェクトに適したGPTモデルを活用することが、今後の成功につながるでしょう。

19
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?