Class: JpTranslatorFromGpt::Translator

Inherits:
Object
  • Object
show all
Defined in:
lib/jp_translator_from_gpt/translator.rb

Constant Summary collapse

SYSTEM_CONTENT_BASE =
<<~TEXT
  Translate only.
  Return result only, no extra info
  Keep symbols
TEXT

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(output_logs: true, except_words: [], exchange_language: "japanese") ⇒ Translator

Returns a new instance of Translator.



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/jp_translator_from_gpt/translator.rb', line 15

def initialize(output_logs: true, except_words: [], exchange_language: "japanese")
  # 環境変数の読み込み
  Dotenv.load

  @client = OpenAI::Client.new(
    access_token: ENV["OPENAI_API_KEY"],
    log_errors: true # 好み
  )
  @output_logs = output_logs
  @system_content = SYSTEM_CONTENT_BASE + except_option_text(except_words)
  @exchange_language = exchange_language
end

Class Method Details

.dig_used_tokens(response, token_type) ⇒ Integer

レスポンスから使用したトークン数を取得する

Parameters:

  • response (Hash)

    OpenAI APIからのレスポンス

  • token_type (String)

    トークンの種類 (input or output)

Returns:

  • (Integer)

    使用したトークン数



47
48
49
50
51
52
53
# File 'lib/jp_translator_from_gpt/translator.rb', line 47

def self.dig_used_tokens(response, token_type)
  if token_type == "input"
    response["usage"]["prompt_tokens"]
  elsif token_type == "output"
    response["usage"]["completion_tokens"]
  end
end

Instance Method Details

#translate(text) ⇒ void

This method returns an undefined value.

テキストを日本語に翻訳し、結果をファイルに書き込む

Parameters:

  • text (String)

    翻訳するテキスト



32
33
34
35
36
37
38
39
40
# File 'lib/jp_translator_from_gpt/translator.rb', line 32

def translate(text)
  # 空白文字は翻訳する必要がない
  return text if text.strip.empty?

  response = chat_to_api(text)
  Writer.write_logs(response) if @output_logs

  response["choices"][0]["message"]["content"]
end