AI

ChatGPT,AI

ChatGPT(gpt-3.5-turbo)のトークン量をあらかじめ確認する(C#編)

ChatGPT APIは、OpenAIのGPT技術を利用した人工知能チャットボットです。
使用するには文字の量に応じたトークンを使用します。
トークンの使用量に応じて課金が発生するので注意してください。

ChatGPTに質問をする前に「質問」に関するトークン量を算出する方法を紹介します。

公式で紹介されている方法ですが、実際に発行されるトークン量とずれる可能性があります。

なお、チャットの投げ方自体は別記事を見てください。

AI
ChatGPT(gpt-3.5-turbo)のAPIを30行のコードで試す(C#編)

ChatGPT APIは、OpenAIのGPT技術を利用した人工知能チャットボットです。このAPIは、ユーザーが自然な言語で質問や会話をすることができ、応答を自動的に生成することができます。いろいろな ...

続きを見る

ライブラリを追加する

ライブラリをnugetで追加します。
今回は前回作成したプロジェクトをそのまま使用するので、VisualStudioから追加します。

ソリューションエクスプローラーで、ライブラリを追加したいプロジェクトを選択し、右クリック。
[NuGet パッケージの管理]を押す。

ソリューションエクスプローラーでの操作

NuGetパッケージマネージャーの参照タブで「AI.Dev.OpenAI.GPT」と入力し、検索。
「AI.Dev.OpenAI.GPT」をインストールする。

NuGetパッケージマネージャー

コードを修正する

前回作成したプログラムを修正します。

using Microsoft.Extensions.DependencyInjection;
using OpenAI.GPT3.Extensions;
using OpenAI.GPT3.Interfaces;
using OpenAI.GPT3.ObjectModels;
using OpenAI.GPT3.ObjectModels.RequestModels;

// usingを追加
using AI.Dev.OpenAI.GPT;

var serviceCollection = new ServiceCollection();
serviceCollection.AddOpenAIService(settings => { settings.ApiKey = "取得したAPIキーをここに設定する"; });


var serviceProvider = serviceCollection.BuildServiceProvider();
var openAiService = serviceProvider.GetRequiredService<IOpenAIService>();

openAiService.SetDefaultModelId(Models.ChatGpt3_5Turbo);

string s;

while (true)
{

    Console.WriteLine("入力後にEnterを押下して下さい。");
    s = Console.ReadLine();

    // 追加 実行前にトークン量を確認する
    List<int> tokens = GPT3Tokenizer.Encode(s);
    Console.WriteLine($"質問に使用するtokenは{tokens.Count}です。実行する場合はEnterを押してください。キャンセルする場合はそれ以外のキーを押してください。");

    var key = Console.ReadKey();
    if (key.Key != ConsoleKey.Enter) continue;
    // 追加ここまで

    var completionResult = await openAiService.ChatCompletion.CreateCompletion(new ChatCompletionCreateRequest
    {
        Messages = new List<ChatMessage>
    {
        // ChatMessage.FromSystem("Chatの設定"),
        ChatMessage.FromUser(s),

    },
        Model = Models.ChatGpt3_5Turbo,
        //MaxTokens = 50 トークンの使用量制限(オプション)
    });
    if (completionResult.Successful)
    {
        Console.WriteLine(completionResult.Choices.First().Message.Content);
    }

    Console.WriteLine();

}

実行する

ChatGPTに送りたいメッセージを入力し、Enterを押すとそのメッセージのトークン量を確認することができます。
その後再度Enterを押すとChatGPTに送ります。
Enter以外のキーを押した場合は送りません。

実際に動かしてみる

確認する

https://platform.openai.com/account/usage を開くと、使用したトークンを確認することができます。
事前に確認したトークンが使用されたのが分かります。

実際の使用量を確認する

まとめ

ChatGPTに対して送信するトークン量を実行前に確認することができました。
実際にはChatGPTが戻すメッセージにもトークンを使用するので、ここで測定したものだけではないですが、
実行前にある程度の量を確認できるは便利です。

-ChatGPT,AI
-,