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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4ab44177f3ba1b8eb9fb9f705734c130a5aa50447fa3e40f746d43a0fbb2c74
|
4
|
+
data.tar.gz: 2516780138d056a38a1f8aac70fad9e4606043fb6d9808fdf7224d4e3a3e08c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
[
|
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.
|
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
|