以下の工程のコードを作りました。
- テキストデータを改行6回などで章ごと、段落ごとに分割
- その分割したデータをchatGPTに渡して要約
- 返ってきた要約テキストをgttsで音声化する(高速化のため並列処理で実施)
ところが、chatGPTのAPIの使用制限にひっかかってしまいました。
Traceback (most recent call last):
File "/Users/user/Dropbox/python/source_code/kindle2text/main_audiobook.py", line 52, in
processing(1)
File "/Users/user/Dropbox/python/source_code/kindle2text/main_audiobook.py", line 29, in processing
texts = text_processing_utils.comp_summary(texts,command,split_str,4)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Dropbox/python/source_code/kindle2text/text_processing_utils.py", line 97, in comp_summary
summarized_texts.append(chatgpt.return_answer_gpt4(command,text))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/Dropbox/python/source_code/kindle2text/chatgpt.py", line 31, in return_answer_gpt4
response = openai.ChatCompletion.create(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/anaconda3/lib/python3.11/site-packages/openai/api_resources/chat_completion.py", line 25, in create
return super().create(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/anaconda3/lib/python3.11/site-packages/openai/api_resources/abstract/engine_api_resource.py", line 155, in create
response, _, api_key = requestor.request(
^^^^^^^^^^^^^^^^^^
File "/Users/user/anaconda3/lib/python3.11/site-packages/openai/api_requestor.py", line 299, in request
resp, got_stream = self._interpret_response(result, stream)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user/anaconda3/lib/python3.11/site-packages/openai/api_requestor.py", line 710, in _interpret_response
self._interpret_response_line(
File "/Users/user/anaconda3/lib/python3.11/site-packages/openai/api_requestor.py", line 775, in _interpret_response_line
raise self.handle_error_response(
openai.error.RateLimitError: You exceeded your current quota, please check your plan and billing details.
大量の文章をGPT-4で丸ごと要約させたのでこのような制限になってしまったと思われます。
APIの料金はGPT-3.5の方が安いですが、それだと「ですます調で実施」と命令しても「である調」で返ってきたのでGPT-4で実施していました。
そのため、APIの料金プラン変更を検討することにしました。
Open AIのサイトにて、Billing overview(請求概要)から状況を確認できました。
ここでチャージされている金額(Credit balance)がゼロになったのでAPIが動かなくなっていました。
ChatGPT-4は入力1000トークン辺り$0.03、出力1000トークン辺り$0.06。
ChatGPT-3.5-turboは、入力1000トークン辺り$0.0015ドル、出力1000トークン辺り$0.002。
日本語のひらがなが1文字1トークン、漢字が2〜3トークンらしいので、1文字平均2.5トークンだとすると、8万文字の文章を要約させようとすると入力だけで$6になってしまいます。
507文字の文章を要約させたら240文字の文章が出力されたので、要約された出力のトークン数を入力の50%とすると、出力分の料金は$6になります。
これで合計$12になり、APIのテストで様々な文章を処理させたのもあって、最初にあった$10のクレジットを使いきってしまっていました。
本一冊が8万文字なら要約で$12なら、1800円くらい一冊の要約にかかっているということです。
全文を音声化すると長くなると思ったので要約した文章の音声化を試しましたが、忙しい人ならコストを承知でやってもいいですが、そうでない人は全文音声化+1.3倍速のほうがいいかもしれません。
ここで思ったのがchatGPT-3.5-turboならどうかということです。
それなら8万文字の入力と4万文字の出力を合わせても$0.5にしかなりません。
ただchatGPT-3.5-turboだと「ですます調」の文章を与えても、「ですます調」でなく「である調」で出力されることがあります。
「である調」を「ですます調」に変換できるコードが書ければ料金の問題は解決すると思われます。