translation_api 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9c1c9798882d3591828278748d1aa763227e85a2c37be0d7583859c78fc0013
4
- data.tar.gz: ac5378596044a829e4f653e258ade5074e023b2ca0d3ccb1a55b603c8e707c5d
3
+ metadata.gz: 9d36a40c0d987797c40e7ab34cf32d270a5b26b0b2d9372d62bbbd0ede73ca5e
4
+ data.tar.gz: d05a8271c9fa12105651eacbbfbfd04253da239c89932cdec9a2e64d7b5d7895
5
5
  SHA512:
6
- metadata.gz: 94379f1ffbd3741c72fc87289b7887b434eb65e3bb8fb55438a98fdede95e4220f473aae4f56aeed5a126099d95fdc7abde0d2b9fd05f53d8ec7286bb03af54a
7
- data.tar.gz: 17d351d60dc25125577f5a9c8a43490e86a91a8d77420d795131c17de6c7b1a33e3f9050c5d836272fd87ec825846a25379fd44d42f1725580bde08b4fe5c06a
6
+ metadata.gz: bcc16101336a524fd635c23f4028202a2f4fed6215936df5787da62ea07a902298b4cc63eb41f3351555f41ac72c293ea3498bcbc6f699fbc0605311f4288a69
7
+ data.tar.gz: 5d13abeeb461a92952f1c34715ae0e0b84dd43d65136584e409520b6021d392a849a5853cced542ab613aca7e6c8d93c8b110ee58d9b82006bbf22f826cc6c3e
data/CHANGELOG.md CHANGED
@@ -37,5 +37,10 @@
37
37
  - OpenAIのモデル追加
38
38
 
39
39
  ## [1.0.0] - 2025-11-10
40
+
40
41
  - 全体的な設計を刷新
41
42
  - よりシンプルなインターフェースに変更
43
+
44
+ ## [1.1.0] - 2025-11-23
45
+
46
+ - カスタムプロンプトを設定できる機能を追加
data/example.rb CHANGED
@@ -9,9 +9,11 @@ end
9
9
 
10
10
  text = ARGV.join(" ")
11
11
  TranslationAPI.configure do |config|
12
- config.language = "english"
13
- config.provider = :deepl
14
- config.except_words = %w[hoge fuga]
12
+ config.language = "english"
13
+ config.provider = :openai
14
+ config.output_logs = false
15
+ config.except_words = %w[hoge fuga]
16
+ config.custom_prompt = "Please Samurai style."
15
17
  end
16
18
 
17
19
  translated_text = TranslationAPI.translate(text)
@@ -6,18 +6,19 @@ class TranslationAPI
6
6
  class Config
7
7
  include Singleton
8
8
 
9
- attr_accessor :language, :provider, :output_logs, :except_words, :deepl_pro
9
+ attr_accessor :language, :provider, :output_logs, :except_words, :custom_prompt, :deepl_pro
10
10
 
11
11
  def self.configure(&block)
12
12
  block.call(instance)
13
13
  end
14
14
 
15
15
  def initialize
16
- @language = "japanese"
17
- @provider = :openai
18
- @output_logs = true
19
- @except_words = []
20
- @deepl_pro = false
16
+ @language = "japanese"
17
+ @provider = :openai
18
+ @output_logs = true
19
+ @except_words = []
20
+ @custom_prompt = nil
21
+ @deepl_pro = false
21
22
  end
22
23
  end
23
24
  end
@@ -17,13 +17,13 @@ class TranslationAPI
17
17
  MODEL_ERROR_MESSAGE =
18
18
  "Specified model is not supported. Please check the model name."
19
19
 
20
- def initialize(output_logs:, except_words:, language:)
20
+ def initialize(output_logs:, except_words:, language:, custom_prompt: nil)
21
21
  validate_api_key!
22
22
 
23
23
  @client = init_client
24
24
  @output_logs = output_logs
25
25
  @system_prompt = SYSTEM_PROMPT_BASE + except_option_text(except_words)
26
- @user_prompt = user_prompt_text(language)
26
+ @user_prompt = user_prompt_text(language, custom_prompt)
27
27
  end
28
28
 
29
29
  def translate(text)
@@ -87,8 +87,9 @@ class TranslationAPI
87
87
  TEXT
88
88
  end
89
89
 
90
- def user_prompt_text(language)
90
+ def user_prompt_text(language, custom_prompt)
91
91
  <<~TEXT
92
+ #{custom_prompt || ""}
92
93
  Please translate this text to #{language}:
93
94
  TEXT
94
95
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class TranslationAPI
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
@@ -23,16 +23,11 @@ class TranslationAPI
23
23
  new(**).translate(text)
24
24
  end
25
25
 
26
- def initialize(
27
- language: config.language,
28
- provider: config.provider,
29
- output_logs: config.output_logs,
30
- except_words: config.except_words
31
- )
32
- @language = language
33
- @output_logs = output_logs
34
- @except_words = except_words
35
- @provider = init_provider(provider)
26
+ def initialize(**options)
27
+ use_provided_options(options)
28
+ use_default_options
29
+
30
+ @provider = init_provider(@provider)
36
31
  end
37
32
 
38
33
  def config
@@ -45,13 +40,27 @@ class TranslationAPI
45
40
 
46
41
  private
47
42
 
43
+ def use_provided_options(options)
44
+ options.each do |key, value|
45
+ instance_variable_set("@#{key}", value)
46
+ end
47
+ end
48
+
49
+ def use_default_options
50
+ self.class.config.instance_variables.each do |var|
51
+ key = var.to_s.delete_prefix("@").to_sym
52
+ instance_variable_set("@#{key}", self.class.config.send(key))
53
+ end
54
+ end
55
+
48
56
  def init_provider(provider)
49
57
  case provider
50
58
  when :openai
51
59
  Provider::OpenAI.new(
52
60
  output_logs: @output_logs,
53
61
  except_words: @except_words,
54
- language: @language
62
+ language: @language,
63
+ custom_prompt: @custom_prompt
55
64
  )
56
65
  when :deepl
57
66
  Provider::DeepL.new(
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: translation_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - milkeclair