jekyll-chatgpt-translate 0.0.40 → 0.0.42

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: 8ce1b67a78ab62d8ff281da23c8d1c5c63d5b07934e42e49fcfa07886c9ced32
4
- data.tar.gz: 39e13d4901343a950d4c3a5d21b6fdca94723efbba1bfb18fe5f82c0cb26c4ff
3
+ metadata.gz: 22b2e725c02a5de3447605daaad8d41fce5885908f59c8bc86cc676ac8d3a661
4
+ data.tar.gz: 5cb8610b0994bab60d9bf23d3aff7888f01f7ff0520e9dddc4e487e99ca94601
5
5
  SHA512:
6
- metadata.gz: afe4e8981572c052dfabe2ed084f6e3eaaf7321297ca1d53cc750be81351429a1d7e7a2479da8d60008019224d8e29dd922437b19fa554729faccf533d61908d
7
- data.tar.gz: 652431c0c7ec9153994b25ee4f480ebf374bddb77c6500bd451364cc38d4b4578ed3fe6acf83f4c55dc359b41a931626baef8a8257f907f0649044ce9559ae94
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.21.0
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
- sudo bundle install --no-color "--gemfile=$(pwd)/Gemfile"
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.2', require: false
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
@@ -66,6 +66,7 @@ Feature: Simple site building
66
66
  source: en
67
67
  version: ""
68
68
  api_key: "it-is-not-used, because EN to EN translation"
69
+ window_length: 1024
69
70
  layout: should-not-be-used
70
71
  targets:
71
72
  -
@@ -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.40'
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
- answer = JSON.parse(response).dig('choices', 0, 'message', 'content')
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(plain, min: min_chars, window_length: config['window_length'] || '2048')
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
  [
@@ -23,5 +23,5 @@
23
23
  # SOFTWARE.
24
24
 
25
25
  module GptTranslate
26
- VERSION = '0.0.40'
26
+ VERSION = '0.0.42'
27
27
  end
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
- .to_return(body: '{"choices":[{"message":{"content": "done!"}}]}')
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.40
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-08 00:00:00.000000000 Z
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.2.15
189
+ rubygems_version: 3.4.10
190
190
  signing_key:
191
191
  specification_version: 4
192
192
  summary: Translate Jekyll Pages Through ChatGPT