jekyll-chatgpt-translate 0.0.40 → 0.0.42
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rultor.yml +2 -2
- data/Gemfile +1 -1
- data/features/cli.feature +1 -0
- data/jekyll-chatgpt-translate.gemspec +1 -1
- data/lib/jekyll-chatgpt-translate/chatgpt.rb +6 -5
- data/lib/jekyll-chatgpt-translate/generator.rb +5 -1
- data/lib/jekyll-chatgpt-translate/version.rb +1 -1
- data/test/test_chatgpt.rb +18 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22b2e725c02a5de3447605daaad8d41fce5885908f59c8bc86cc676ac8d3a661
|
4
|
+
data.tar.gz: 5cb8610b0994bab60d9bf23d3aff7888f01f7ff0520e9dddc4e487e99ca94601
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1bf2b84b63f9b82ce5bc28771ab52b3571a5b4d5629fe6e10038c968bad2127407a33e9d7f1d08a7b11c247f4748021695fc569794e3f9966cca3ec30f567cf
|
7
|
+
data.tar.gz: b6385f234df97f3e6f5ea37e555667a59b68db7c4f7ec82ee26bd6e27a4e7cc3df759b7243f50fdcee424a7ecff785a989898ce0c050596a2c616a36f9d3ef55
|
data/.rultor.yml
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
docker:
|
2
|
-
image: yegor256/rultor-image:1.
|
2
|
+
image: yegor256/rultor-image:1.22.0
|
3
3
|
assets:
|
4
4
|
rubygems.yml: yegor256/home#assets/rubygems.yml
|
5
5
|
install: |
|
6
6
|
pdd -f /dev/null
|
7
|
-
|
7
|
+
bundle install --no-color
|
8
8
|
release:
|
9
9
|
script: |-
|
10
10
|
bundle exec rake
|
data/Gemfile
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
source 'https://rubygems.org'
|
26
26
|
gemspec
|
27
27
|
|
28
|
-
gem 'cucumber', '9.0
|
28
|
+
gem 'cucumber', '9.1.0', require: false
|
29
29
|
gem 'kramdown-parser-gfm', '1.1.0', require: false
|
30
30
|
gem 'minitest', '5.20.0', require: false
|
31
31
|
gem 'rake', '13.1.0', require: false
|
data/features/cli.feature
CHANGED
@@ -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 = '>= 3.0'
|
30
30
|
s.name = 'jekyll-chatgpt-translate'
|
31
|
-
s.version = '0.0.
|
31
|
+
s.version = '0.0.42'
|
32
32
|
s.license = 'MIT'
|
33
33
|
s.summary = 'Translate Jekyll Pages Through ChatGPT'
|
34
34
|
s.description = [
|
@@ -45,12 +45,13 @@ class GptTranslate::ChatGPT
|
|
45
45
|
# +key+ OpenAI API Key, which can't be nil, but can be empty string, which means dry mode (no calls to OpenAI)
|
46
46
|
# +source+ The language to translate from
|
47
47
|
# +target+ The language to translate into
|
48
|
-
def initialize(key, model, source, target)
|
48
|
+
def initialize(key, model, source, target, client: OpenAI::Client.new(access_token: key))
|
49
49
|
raise 'OpenAI key cannot be nil' if key.nil?
|
50
50
|
@key = key
|
51
51
|
@model = model
|
52
52
|
@source = source
|
53
53
|
@target = target
|
54
|
+
@client = client
|
54
55
|
end
|
55
56
|
|
56
57
|
def translate(markdown, min: 32, window_length: 2000)
|
@@ -115,9 +116,8 @@ class GptTranslate::ChatGPT
|
|
115
116
|
end
|
116
117
|
|
117
118
|
def translate_par(par)
|
118
|
-
client = OpenAI::Client.new(access_token: @key)
|
119
119
|
if @@models_printed
|
120
|
-
Jekyll.logger.info("Available ChatGPT models: #{client.models.list['data'].map { |m| m['id'] }.join(', ')}")
|
120
|
+
Jekyll.logger.info("Available ChatGPT models: #{@client.models.list['data'].map { |m| m['id'] }.join(', ')}")
|
121
121
|
@@models_printed = true
|
122
122
|
end
|
123
123
|
prompt = GptTranslate::Prompt.new(par, @source, @target).to_s
|
@@ -125,14 +125,15 @@ class GptTranslate::ChatGPT
|
|
125
125
|
answer = nil
|
126
126
|
attempt = 0
|
127
127
|
begin
|
128
|
-
response = client.chat(
|
128
|
+
response = @client.chat(
|
129
129
|
parameters: {
|
130
130
|
model: @model,
|
131
131
|
messages: [{ role: 'user', content: prompt }],
|
132
132
|
temperature: 0.7
|
133
133
|
}
|
134
134
|
)
|
135
|
-
|
135
|
+
json = response.is_a?(Hash) ? response : JSON.parse(response)
|
136
|
+
answer = json.dig('choices', 0, 'message', 'content')
|
136
137
|
if answer.nil?
|
137
138
|
Jekyll.logger.error("No content returned by ChatGPT: #{response}")
|
138
139
|
raise 'No content returned by ChatGPT'
|
@@ -114,7 +114,11 @@ class GptTranslate::Generator < Jekyll::Generator
|
|
114
114
|
config['source'] || 'en',
|
115
115
|
lang
|
116
116
|
)
|
117
|
-
foreign = gpt.translate(
|
117
|
+
foreign = gpt.translate(
|
118
|
+
plain,
|
119
|
+
min: min_chars,
|
120
|
+
window_length: (config['window_length'] || '2048').to_i
|
121
|
+
)
|
118
122
|
File.write(
|
119
123
|
path,
|
120
124
|
[
|
data/test/test_chatgpt.rb
CHANGED
@@ -109,10 +109,26 @@ class GptTranslate::ChatGPTTest < Minitest::Test
|
|
109
109
|
)
|
110
110
|
end
|
111
111
|
|
112
|
+
def test_with_json
|
113
|
+
client = Object.new
|
114
|
+
def client.chat(*)
|
115
|
+
{ 'choices' => [{ 'message' => { 'content' => 'done!' } }] }
|
116
|
+
end
|
117
|
+
chat = GptTranslate::ChatGPT.new('fake-key', 'gpt-3.5-turbo', 'en', 'ru', client: client)
|
118
|
+
assert_equal(
|
119
|
+
"done!\n\ndone!",
|
120
|
+
chat.translate(
|
121
|
+
"This is the first paragraph\n\nThis is second\n\nThis is third",
|
122
|
+
min: 1, window_length: 4
|
123
|
+
)
|
124
|
+
)
|
125
|
+
end
|
126
|
+
|
112
127
|
private
|
113
128
|
|
114
129
|
def stub_it!
|
115
|
-
stub_request(:any, 'https://api.openai.com/v1/chat/completions')
|
116
|
-
|
130
|
+
stub_request(:any, 'https://api.openai.com/v1/chat/completions').to_return(
|
131
|
+
body: '{"choices":[{"message":{"content": "done!"}}]}'
|
132
|
+
)
|
117
133
|
end
|
118
134
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.42
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: humanize
|
@@ -186,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: '0'
|
188
188
|
requirements: []
|
189
|
-
rubygems_version: 3.
|
189
|
+
rubygems_version: 3.4.10
|
190
190
|
signing_key:
|
191
191
|
specification_version: 4
|
192
192
|
summary: Translate Jekyll Pages Through ChatGPT
|