Class: JpTranslatorFromGpt::Writer
- Inherits:
-
Object
- Object
- JpTranslatorFromGpt::Writer
- Defined in:
- lib/jp_translator_from_gpt/writer.rb
Class Method Summary collapse
-
.read_existing_tokens(log_file_path) ⇒ Array<Integer>
ファイルにあるトークン数を読み込む.
-
.text_path(under_logs_path) ⇒ String
出力先のテキストファイルのパスを返す main.rbから見たパスで指定している.
-
.write_logs(response) ⇒ void
ログをファイルに書き込む.
-
.write_total_cost(input_tokens, output_tokens) ⇒ void
トークン数から利用料金を計算し、ファイルにある合計金額に加算して書き込む ファイルのテキストは上書きされる.
-
.write_translated_text(response) ⇒ void
翻訳されたテキストをファイルに書き込み、ターミナルに出力する テキストはファイルの末尾に追記される.
-
.write_used_tokens(input_tokens, output_tokens) ⇒ void
使用したトークン数をファイルに書き込む ファイルのテキストは上書きされる.
Class Method Details
.read_existing_tokens(log_file_path) ⇒ Array<Integer>
ファイルにあるトークン数を読み込む
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/jp_translator_from_gpt/writer.rb', line 68 def self.read_existing_tokens(log_file_path) existing_input_tokens, existing_output_tokens = 0, 0 if File.exist?(log_file_path) File.readlines(log_file_path).each do |line| existing_input_tokens = line.split(":").last.strip.to_i if line.start_with?("input:") existing_output_tokens = line.split(":").last.strip.to_i if line.start_with?("output:") end end [existing_input_tokens, existing_output_tokens] end |
.text_path(under_logs_path) ⇒ String
出力先のテキストファイルのパスを返す main.rbから見たパスで指定している
26 27 28 29 30 |
# File 'lib/jp_translator_from_gpt/writer.rb', line 26 def self.text_path(under_logs_path) output_dir = "translator_logs" FileUtils.mkdir_p(output_dir) unless File.directory?(output_dir) File.join("translator_logs", under_logs_path) end |
.write_logs(response) ⇒ void
This method returns an undefined value.
ログをファイルに書き込む
12 13 14 15 16 17 18 19 |
# File 'lib/jp_translator_from_gpt/writer.rb', line 12 def self.write_logs(response) input_tokens = Translator.dig_used_tokens(response, "input") output_tokens = Translator.dig_used_tokens(response, "output") write_translated_text(response) write_used_tokens(input_tokens, output_tokens) write_total_cost(input_tokens, output_tokens) end |
.write_total_cost(input_tokens, output_tokens) ⇒ void
This method returns an undefined value.
トークン数から利用料金を計算し、ファイルにある合計金額に加算して書き込む ファイルのテキストは上書きされる
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/jp_translator_from_gpt/writer.rb', line 87 def self.write_total_cost(input_tokens, output_tokens) log_file_path = text_path("cost.txt") this_cost = Calculator.calc_total_cost(input_tokens, "input") + Calculator.calc_total_cost(output_tokens, "output") existing_cost = if File.exist?(log_file_path) File.read(log_file_path).gsub("$", "").to_f else 0.0 end total_cost = this_cost + existing_cost File.open(log_file_path, "w") do |file| # 小数点以下8桁まで表示 file.puts("$#{format("%.8f", total_cost)}") end end |
.write_translated_text(response) ⇒ void
This method returns an undefined value.
翻訳されたテキストをファイルに書き込み、ターミナルに出力する テキストはファイルの末尾に追記される
37 38 39 40 41 42 43 |
# File 'lib/jp_translator_from_gpt/writer.rb', line 37 def self.write_translated_text(response) log_file_path = text_path("translated_text.txt") File.open(log_file_path, "a") do |file| translated_text = response["choices"][0]["message"]["content"] file.puts(translated_text) end end |
.write_used_tokens(input_tokens, output_tokens) ⇒ void
This method returns an undefined value.
使用したトークン数をファイルに書き込む ファイルのテキストは上書きされる
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/jp_translator_from_gpt/writer.rb', line 51 def self.write_used_tokens(input_tokens, output_tokens) log_file_path = text_path("tokens.txt") existing_input_tokens, existing_output_tokens = read_existing_tokens(log_file_path) total_input_tokens = existing_input_tokens + input_tokens total_output_tokens = existing_output_tokens + output_tokens File.open(log_file_path, "w") do |file| file.puts("input: #{total_input_tokens}") file.puts("output: #{total_output_tokens}") end end |