jekyll-chatgpt-translate 0.0.37 → 0.0.39

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: c0f1eb7be508b40853f8fc04d94cd0c6f30ddfe2be81b6d3fc7f6a45101d10b1
4
- data.tar.gz: cb4d6e55f8d93e00307135f52cfba873a7ece62a01cb785f0d0e4ada293aaa20
3
+ metadata.gz: b4ab44177f3ba1b8eb9fb9f705734c130a5aa50447fa3e40f746d43a0fbb2c74
4
+ data.tar.gz: 2516780138d056a38a1f8aac70fad9e4606043fb6d9808fdf7224d4e3a3e08c4
5
5
  SHA512:
6
- metadata.gz: 053d40f293680a7b4ec3f78f5b09b1ddef17183b1dbfce93ab10fffca3cbb1b1384644e4da3377c5c1abc0ff96fdb1b55d8f58d7e30788aa7ddeba44dc6e0d65
7
- data.tar.gz: 0cc7dd560f374a400b8c8ff2b7782daca793a2db48eac1fc698806506f0341713751241a2feb739d485145efbe57ba6c5d2d43d188208fa0e8142993447a6928
6
+ metadata.gz: 7b3dba562f9860cfb1c00198770ed637a75c85216e87b9f36bb4520d212ed8cdfb9b3332601571addab38b81011b92a24408c4142fe31130d75f94d09a4f62d6
7
+ data.tar.gz: b679a82e6e19e3954c3676c6b81ef240fadda14aa06c490577bcb51d2c5f9d39c7ee8b708cc998617101be95c4d3747a29976b006e7cdb8ed68dedb72d4ce482
data/README.md CHANGED
@@ -79,6 +79,9 @@ Full list of options available to specify in `_config.yml`:
79
79
  doesn't translate short paragraphs pretty enough. It's better to keep this
80
80
  number big enough, to avoid silly translations. The default is 128.
81
81
 
82
+ * `window_length` (optional) — maximum number of words to be sent to OpenAI API in one
83
+ request. The default is 2048.
84
+
82
85
  * `layout` (optional) — is name of the file in `_layouts` directory, without the extension.
83
86
  This layout will be specified for the pages generated by this plugin.
84
87
  The default value is `translated` (expecting you to have `_layouts/translated.html` file available).
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
28
28
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
29
29
  s.required_ruby_version = '>= 2.6'
30
30
  s.name = 'jekyll-chatgpt-translate'
31
- s.version = '0.0.37'
31
+ s.version = '0.0.39'
32
32
  s.license = 'MIT'
33
33
  s.summary = 'Translate Jekyll Pages Through ChatGPT'
34
34
  s.description = [
@@ -48,5 +48,6 @@ Gem::Specification.new do |s|
48
48
  s.add_runtime_dependency 'jekyll', '>= 3'
49
49
  s.add_runtime_dependency 'redcarpet', '>= 3'
50
50
  s.add_runtime_dependency 'ruby-openai', '>= 5'
51
+ s.add_runtime_dependency 'tiktoken_ruby', '>= 0.0.6'
51
52
  s.metadata['rubygems_mfa_required'] = 'true'
52
53
  end
@@ -25,6 +25,7 @@
25
25
  require 'jekyll'
26
26
  require 'openai'
27
27
  require 'iso-639'
28
+ require 'tiktoken_ruby'
28
29
  require_relative 'pars'
29
30
  require_relative 'prompt'
30
31
 
@@ -92,11 +93,16 @@ class GptTranslate::ChatGPT
92
93
  end
93
94
  accum = []
94
95
  until later[i].nil?
96
+ already = Tiktoken.encoding_for_model('gpt-4').encode(accum.join).length
97
+ if already > window_length
98
+ Jekyll.logger.debug("Already #{already} words, over the window_length of #{window_length}")
99
+ break
100
+ end
95
101
  accum << later[i]
96
- break if accum.join.split.count > window_length
97
102
  i += 1
98
103
  end
99
104
  out << translate_pars(accum)
105
+ i += 1
100
106
  end
101
107
  out.join("\n\n")
102
108
  end
@@ -44,6 +44,7 @@ class GptTranslate::Generator < Jekyll::Generator
44
44
 
45
45
  # Main plugin action, called by Jekyll-core
46
46
  def generate(site)
47
+ Jekyll.logger.info("jekyll-chatgpt-translate #{GptTranslate::VERSION} starting...")
47
48
  config ||= site.config['chatgpt-translate'] || {}
48
49
  home = config['tmpdir'] || '_chatgpt-translate'
49
50
  key = api_key(config)
@@ -113,7 +114,7 @@ class GptTranslate::Generator < Jekyll::Generator
113
114
  config['source'] || 'en',
114
115
  lang
115
116
  )
116
- foreign = gpt.translate(plain, min: min_chars)
117
+ foreign = gpt.translate(plain, min: min_chars, window_length: config['window_length'] || '2048')
117
118
  File.write(
118
119
  path,
119
120
  [
@@ -23,5 +23,5 @@
23
23
  # SOFTWARE.
24
24
 
25
25
  module GptTranslate
26
- VERSION = '0.0.37'
26
+ VERSION = '0.0.39'
27
27
  end
data/test/test_chatgpt.rb CHANGED
@@ -97,6 +97,18 @@ class GptTranslate::ChatGPTTest < Minitest::Test
97
97
  assert_equal('done!', chat.translate('This is the text to send to OpenAI'))
98
98
  end
99
99
 
100
+ def test_through_small_window
101
+ stub_it!
102
+ chat = GptTranslate::ChatGPT.new('fake-key', 'gpt-3.5-turbo', 'en', 'ru')
103
+ assert_equal(
104
+ "done!\n\ndone!",
105
+ chat.translate(
106
+ "This is the first paragraph\n\nThis is second\n\nThis is third",
107
+ min: 1, window_length: 4
108
+ )
109
+ )
110
+ end
111
+
100
112
  private
101
113
 
102
114
  def stub_it!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-chatgpt-translate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.37
4
+ version: 0.0.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: tiktoken_ruby
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 0.0.6
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 0.0.6
97
111
  description: Add this plugin to your Jekyll site and all posts will be automatically
98
112
  translated to the languages of your choice through ChatGPT
99
113
  email: yegor256@gmail.com