Class: JpTranslatorFromGpt::Calculator
- Inherits:
-
Object
- Object
- JpTranslatorFromGpt::Calculator
- Defined in:
- lib/jp_translator_from_gpt/calculator.rb
Defined Under Namespace
Classes: ArgumentError
Constant Summary collapse
- MODEL_ERROR_MESSAGE =
"設定に無いモデルです。モデルをmodules/writerに追加するか、ENV[\"OPENAI_MODEL\"]を変更してください。"
Class Method Summary collapse
-
.calc_total_cost(used_tokens, token_type) ⇒ Float
トークン数から利用料金を計算する.
-
.clear_files ⇒ void
ファイルの内容を削除する.
-
.get_token_rate(model, token_type) ⇒ Float
モデルとトークンの種類からトークンの単価を取得する モデルが設定に無い場合はエラーを投げる.
-
.token_rate_hash ⇒ Hash
トークン単価のハッシュを返す.
-
.validate_model(model, token_rate) ⇒ Object
モデルが存在するかどうかを確認する.
Class Method Details
.calc_total_cost(used_tokens, token_type) ⇒ Float
トークン数から利用料金を計算する
16 17 18 19 20 |
# File 'lib/jp_translator_from_gpt/calculator.rb', line 16 def self.calc_total_cost(used_tokens, token_type) model = ENV["OPENAI_MODEL"] || "gpt-4o-mini" rate = get_token_rate(model, token_type) used_tokens * rate end |
.clear_files ⇒ void
This method returns an undefined value.
ファイルの内容を削除する
70 71 72 73 74 |
# File 'lib/jp_translator_from_gpt/calculator.rb', line 70 def self.clear_files File.write(Writer.text_path("translated_text.txt"), "") File.write(Writer.text_path("tokens.txt"), "") File.write(Writer.text_path("cost.txt"), "") end |
.get_token_rate(model, token_type) ⇒ Float
モデルとトークンの種類からトークンの単価を取得する モデルが設定に無い場合はエラーを投げる
28 29 30 31 32 |
# File 'lib/jp_translator_from_gpt/calculator.rb', line 28 def self.get_token_rate(model, token_type) token_rate = token_rate_hash validate_model(model, token_rate) token_rate[model][token_type.to_sym] end |
.token_rate_hash ⇒ Hash
トークン単価のハッシュを返す
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/jp_translator_from_gpt/calculator.rb', line 37 def self.token_rate_hash one_million = 1_000_000 { "gpt-4o" => { input: 5.0 / one_million, output: 15.0 / one_million }, "gpt-4o-2024-08-06" => { input: 2.5 / one_million, output: 10.0 / one_million }, "gpt-4o-mini" => { input: 0.15 / one_million, output: 0.6 / one_million } } end |
.validate_model(model, token_rate) ⇒ Object
モデルが存在するかどうかを確認する
60 61 62 63 64 65 |
# File 'lib/jp_translator_from_gpt/calculator.rb', line 60 def self.validate_model(model, token_rate) return if token_rate.key?(model) clear_files raise Calculator::ArgumentError, MODEL_ERROR_MESSAGE end |