translation_api 1.2.0 → 1.3.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/Rakefile +1 -37
- data/how_to_publish.txt +2 -2
- data/lib/translation_api/provider/openai/chat.rb +7 -9
- data/lib/translation_api/provider/openai/cost.rb +6 -20
- data/lib/translation_api/provider/openai/model.rb +3 -3
- data/lib/translation_api/provider/openai/response.rb +3 -3
- data/lib/translation_api/version.rb +1 -1
- metadata +2 -3
- data/rake_helper.rb +0 -29
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fef1087b2a2ddc29d3a942318b98fee14c24d941250665e69e7a875eba931b56
|
|
4
|
+
data.tar.gz: 4104acc87346c85fc82f0dd6da55475ad308535f63b8ec0f09db6afa73e341bb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8bf6cac81b1c2e6153194bcd7ec173f3333a19972c07f66a425121c5c2276fa982c10f0ce6e3d81ff7c31457b63e657a0e6046f2e566a08705e38108bc739278
|
|
7
|
+
data.tar.gz: '06609efa3d55a13d4cd8eb54a6ea6580cfa94382bb6cc81c272fad94ee78ce029fb18bb7d9317324b575e7b611d8ea2b1d4f3c1845bcf74d027e2c95101fcb42'
|
data/CHANGELOG.md
CHANGED
data/Rakefile
CHANGED
|
@@ -1,39 +1,3 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "
|
|
4
|
-
require "rspec/core/rake_task"
|
|
5
|
-
require "rubocop/rake_task"
|
|
6
|
-
require "yard"
|
|
7
|
-
require_relative "rake_helper"
|
|
8
|
-
|
|
9
|
-
desc "analysis"
|
|
10
|
-
task :analysis do
|
|
11
|
-
sh "bundle install"
|
|
12
|
-
|
|
13
|
-
RakeHelper.init_rake_tasks
|
|
14
|
-
|
|
15
|
-
puts "--- rspec ---"
|
|
16
|
-
Rake::Task[:spec].invoke
|
|
17
|
-
|
|
18
|
-
puts "--- rubocop ---"
|
|
19
|
-
Rake::Task[:rubocop].invoke
|
|
20
|
-
|
|
21
|
-
puts "--- yard ---"
|
|
22
|
-
Rake::Task[:yard].invoke
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
desc "push to github packages and rubygems"
|
|
26
|
-
task :push do
|
|
27
|
-
sh "bundle install"
|
|
28
|
-
|
|
29
|
-
puts "--- build ---"
|
|
30
|
-
RakeHelper.build_gem
|
|
31
|
-
|
|
32
|
-
puts "--- push to github packages ---"
|
|
33
|
-
RakeHelper.push_to_github_packages
|
|
34
|
-
|
|
35
|
-
puts "--- push to rubygems ---"
|
|
36
|
-
RakeHelper.push_to_rubygems
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
task default: :analysis
|
|
3
|
+
require "push_gem"
|
data/how_to_publish.txt
CHANGED
|
@@ -24,19 +24,17 @@ class TranslationAPI
|
|
|
24
24
|
private
|
|
25
25
|
|
|
26
26
|
def request(text)
|
|
27
|
-
@client.chat(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
]
|
|
34
|
-
}
|
|
27
|
+
@client.chat.completions.create(
|
|
28
|
+
model: @model.name,
|
|
29
|
+
messages: [
|
|
30
|
+
{ role: "system", content: @prompt.system_prompt },
|
|
31
|
+
{ role: "user", content: @prompt.user_prompt + text }
|
|
32
|
+
]
|
|
35
33
|
)
|
|
36
34
|
end
|
|
37
35
|
|
|
38
36
|
def init_client
|
|
39
|
-
::OpenAI::Client.new(
|
|
37
|
+
::OpenAI::Client.new(api_key: ENV["OPENAI_API_KEY"])
|
|
40
38
|
end
|
|
41
39
|
|
|
42
40
|
def validate_api_key!
|
|
@@ -5,7 +5,6 @@ class TranslationAPI
|
|
|
5
5
|
class OpenAI
|
|
6
6
|
class Cost
|
|
7
7
|
ONE_MILLION = 1_000_000
|
|
8
|
-
BASE_MODEL_COST = 1.25 / ONE_MILLION
|
|
9
8
|
|
|
10
9
|
def initialize(model)
|
|
11
10
|
@model = model
|
|
@@ -32,8 +31,8 @@ class TranslationAPI
|
|
|
32
31
|
def base
|
|
33
32
|
{
|
|
34
33
|
@model.class.base => {
|
|
35
|
-
input:
|
|
36
|
-
output:
|
|
34
|
+
input: 2.50 / ONE_MILLION,
|
|
35
|
+
output: 15.00 / ONE_MILLION
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
end
|
|
@@ -41,33 +40,20 @@ class TranslationAPI
|
|
|
41
40
|
def mini
|
|
42
41
|
{
|
|
43
42
|
@model.class.mini => {
|
|
44
|
-
input:
|
|
45
|
-
output:
|
|
43
|
+
input: 0.75 / ONE_MILLION,
|
|
44
|
+
output: 4.50 / ONE_MILLION
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
47
|
end
|
|
49
48
|
|
|
50
49
|
def nano
|
|
51
|
-
mini_cost = mini.values[0][:input]
|
|
52
|
-
|
|
53
50
|
{
|
|
54
51
|
@model.class.nano => {
|
|
55
|
-
input:
|
|
56
|
-
output:
|
|
52
|
+
input: 0.20 / ONE_MILLION,
|
|
53
|
+
output: 1.25 / ONE_MILLION
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
56
|
end
|
|
60
|
-
|
|
61
|
-
def normal_io_ratio
|
|
62
|
-
{
|
|
63
|
-
input: 1.0,
|
|
64
|
-
output: 8.0
|
|
65
|
-
}
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def normal_cost_diff_ratio
|
|
69
|
-
5.0
|
|
70
|
-
end
|
|
71
57
|
end
|
|
72
58
|
end
|
|
73
59
|
end
|
|
@@ -9,15 +9,15 @@ class TranslationAPI
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def translated_text
|
|
12
|
-
@response.
|
|
12
|
+
@response.choices[0].message.content
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def dig_used_tokens(type:)
|
|
16
16
|
case type
|
|
17
17
|
when :input
|
|
18
|
-
@response.
|
|
18
|
+
@response.usage.prompt_tokens
|
|
19
19
|
when :output
|
|
20
|
-
@response.
|
|
20
|
+
@response.usage.completion_tokens
|
|
21
21
|
else
|
|
22
22
|
raise ArgumentError, "Invalid token type: #{type}"
|
|
23
23
|
end
|
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.
|
|
4
|
+
version: 1.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- milkeclair
|
|
@@ -52,7 +52,7 @@ dependencies:
|
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '0'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
|
-
name:
|
|
55
|
+
name: openai
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - ">="
|
|
@@ -97,7 +97,6 @@ files:
|
|
|
97
97
|
- lib/translation_api/provider/openai/model.rb
|
|
98
98
|
- lib/translation_api/provider/openai/response.rb
|
|
99
99
|
- lib/translation_api/version.rb
|
|
100
|
-
- rake_helper.rb
|
|
101
100
|
homepage: https://github.com/milkeclair/translation_api
|
|
102
101
|
licenses:
|
|
103
102
|
- MIT
|
data/rake_helper.rb
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
class RakeHelper
|
|
4
|
-
GITHUB_PACKAGES_PUSH_COMMAND =
|
|
5
|
-
"gem push --key github --host https://rubygems.pkg.github.com/milkeclair " \
|
|
6
|
-
"pkg/translation_api-#{TranslationAPI::VERSION}.gem".freeze
|
|
7
|
-
|
|
8
|
-
RUBYGEMS_PUSH_COMMAND =
|
|
9
|
-
"gem push --host https://rubygems.org " \
|
|
10
|
-
"pkg/translation_api-#{TranslationAPI::VERSION}.gem".freeze
|
|
11
|
-
|
|
12
|
-
def self.init_rake_tasks
|
|
13
|
-
RSpec::Core::RakeTask.new(:spec) { |task| task.verbose = false }
|
|
14
|
-
RuboCop::RakeTask.new
|
|
15
|
-
YARD::Rake::YardocTask.new
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def self.build_gem
|
|
19
|
-
abort("gemのビルドに失敗しました") unless system("rake build")
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def self.push_to_github_packages
|
|
23
|
-
abort("githubへのgemのpushに失敗しました") unless system(GITHUB_PACKAGES_PUSH_COMMAND)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def self.push_to_rubygems
|
|
27
|
-
abort("rubygemsへのgemのpushに失敗しました") unless system(RUBYGEMS_PUSH_COMMAND)
|
|
28
|
-
end
|
|
29
|
-
end
|