rager 0.6.0 → 0.7.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/README.md +26 -27
- data/lib/rager/chat/message.rb +10 -0
- data/lib/rager/chat/message_content.rb +7 -0
- data/lib/rager/chat/message_delta.rb +7 -0
- data/lib/rager/chat/options.rb +6 -7
- data/lib/rager/chat/providers/openai.rb +49 -34
- data/lib/rager/chat/schema.rb +0 -2
- data/lib/rager/config.rb +12 -20
- data/lib/rager/context.rb +302 -186
- data/lib/rager/context_options.rb +23 -0
- data/lib/rager/embed/options.rb +3 -3
- data/lib/rager/embed/providers/openai.rb +7 -3
- data/lib/rager/errors/options_error.rb +1 -1
- data/lib/rager/http/adapters/async_http.rb +0 -2
- data/lib/rager/http/adapters/mock.rb +0 -2
- data/lib/rager/http/adapters/net_http.rb +18 -19
- data/lib/rager/{image_gen → image}/options.rb +4 -4
- data/lib/rager/{image_gen → image}/output_format.rb +1 -1
- data/lib/rager/{image_gen → image}/providers/abstract.rb +4 -4
- data/lib/rager/{image_gen → image}/providers/replicate.rb +14 -10
- data/lib/rager/{logger.rb → log_strategy.rb} +2 -1
- data/lib/rager/{mesh_gen → mesh}/options.rb +3 -3
- data/lib/rager/{mesh_gen → mesh}/providers/abstract.rb +4 -4
- data/lib/rager/{mesh_gen → mesh}/providers/replicate.rb +13 -9
- data/lib/rager/operation.rb +2 -2
- data/lib/rager/options.rb +1 -1
- data/lib/rager/outcome.rb +25 -0
- data/lib/rager/providers.rb +37 -25
- data/lib/rager/rerank/input.rb +20 -0
- data/lib/rager/rerank/options.rb +2 -2
- data/lib/rager/rerank/providers/abstract.rb +2 -3
- data/lib/rager/rerank/providers/cohere.rb +19 -13
- data/lib/rager/rerank/result.rb +20 -0
- data/lib/rager/result.rb +92 -122
- data/lib/rager/search/options.rb +3 -2
- data/lib/rager/search/providers/jina.rb +16 -15
- data/lib/rager/search/result.rb +21 -0
- data/lib/rager/template/input.rb +20 -0
- data/lib/rager/template/options.rb +1 -1
- data/lib/rager/template/providers/abstract.rb +2 -3
- data/lib/rager/template/providers/erb.rb +4 -5
- data/lib/rager/template/providers/mustache.rb +30 -0
- data/lib/rager/types.rb +31 -24
- data/lib/rager/utils/http.rb +73 -15
- data/lib/rager/utils/replicate.rb +28 -6
- data/lib/rager/utils/runtime.rb +21 -0
- data/lib/rager/version.rb +1 -1
- metadata +18 -12
- data/lib/rager/rerank/output.rb +0 -13
- data/lib/rager/search/output.rb +0 -14
data/lib/rager/utils/http.rb
CHANGED
|
@@ -13,17 +13,13 @@ module Rager
|
|
|
13
13
|
module Http
|
|
14
14
|
extend T::Sig
|
|
15
15
|
|
|
16
|
-
sig {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
sig { params(url: String, http_adapter: T.nilable(Rager::Http::Adapters::Abstract)).returns(T.nilable(String)) }
|
|
26
|
-
def self.download_binary(url, http_adapter: nil)
|
|
16
|
+
sig {
|
|
17
|
+
params(
|
|
18
|
+
url: String,
|
|
19
|
+
http_adapter: T.nilable(Rager::Http::Adapters::Abstract)
|
|
20
|
+
).returns(T.nilable(String))
|
|
21
|
+
}
|
|
22
|
+
def self.download(url, http_adapter: nil)
|
|
27
23
|
adapter = http_adapter || Rager.config.http_adapter
|
|
28
24
|
response = adapter.make_request(
|
|
29
25
|
Rager::Http::Request.new(url: url, headers: {})
|
|
@@ -42,15 +38,77 @@ module Rager
|
|
|
42
38
|
end
|
|
43
39
|
end
|
|
44
40
|
|
|
45
|
-
sig {
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
sig {
|
|
42
|
+
params(
|
|
43
|
+
url: String,
|
|
44
|
+
path: String,
|
|
45
|
+
http_adapter: T.nilable(Rager::Http::Adapters::Abstract)
|
|
46
|
+
).returns(T.nilable(String))
|
|
47
|
+
}
|
|
48
|
+
def self.download_to_file(url, path, http_adapter: nil)
|
|
49
|
+
content = download(url, http_adapter: http_adapter)
|
|
48
50
|
return nil if content.nil?
|
|
49
51
|
|
|
50
52
|
FileUtils.mkdir_p(File.dirname(path))
|
|
51
|
-
File.write(path, content)
|
|
53
|
+
File.write(path, content, mode: "wb")
|
|
52
54
|
path
|
|
53
55
|
end
|
|
56
|
+
|
|
57
|
+
sig do
|
|
58
|
+
params(
|
|
59
|
+
endpoint: String,
|
|
60
|
+
body: String,
|
|
61
|
+
error: T::Boolean
|
|
62
|
+
).void
|
|
63
|
+
end
|
|
64
|
+
def self.log_remote(endpoint, body, error = false)
|
|
65
|
+
logger = Rager.config.logger
|
|
66
|
+
|
|
67
|
+
case Rager.config.log_strategy
|
|
68
|
+
when Rager::LogStrategy::Stdout
|
|
69
|
+
error ? logger.error(body) : logger.info(body)
|
|
70
|
+
when Rager::LogStrategy::Remote
|
|
71
|
+
http_adapter = Rager.config.http_adapter
|
|
72
|
+
url = Rager.config.url
|
|
73
|
+
api_key = Rager.config.api_key
|
|
74
|
+
|
|
75
|
+
unless url && api_key
|
|
76
|
+
raise Rager::Errors::CredentialsError.new("Rager Cloud", details: "Missing url or api_key for remote logging")
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
headers = {
|
|
80
|
+
"Content-Type" => "application/json",
|
|
81
|
+
"Authorization" => "Bearer #{api_key}"
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
request = Rager::Http::Request.new(
|
|
85
|
+
url: "#{url}/#{endpoint}",
|
|
86
|
+
verb: Rager::Http::Verb::Post,
|
|
87
|
+
headers: headers,
|
|
88
|
+
body: body
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
begin
|
|
92
|
+
response = http_adapter.make_request(request)
|
|
93
|
+
|
|
94
|
+
unless response.success?
|
|
95
|
+
raise Rager::Errors::HttpError.new(
|
|
96
|
+
http_adapter,
|
|
97
|
+
request.url,
|
|
98
|
+
response.status,
|
|
99
|
+
body: T.cast(response.body, String),
|
|
100
|
+
details: "HTTP request failed during remote logging"
|
|
101
|
+
)
|
|
102
|
+
end
|
|
103
|
+
rescue Rager::Error => e
|
|
104
|
+
if Rager.config.log_raise
|
|
105
|
+
raise e
|
|
106
|
+
else
|
|
107
|
+
Rager.config.logger.error(e.message)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
54
112
|
end
|
|
55
113
|
end
|
|
56
114
|
end
|
|
@@ -10,20 +10,33 @@ module Rager
|
|
|
10
10
|
module Replicate
|
|
11
11
|
extend T::Sig
|
|
12
12
|
|
|
13
|
-
sig {
|
|
13
|
+
sig {
|
|
14
|
+
params(
|
|
15
|
+
prediction_url: String,
|
|
16
|
+
key: T.nilable(String),
|
|
17
|
+
http_adapter: T.nilable(Rager::Http::Adapters::Abstract)
|
|
18
|
+
).returns(T.nilable(String))
|
|
19
|
+
}
|
|
14
20
|
def self.download_prediction(prediction_url, key = nil, http_adapter: nil)
|
|
15
21
|
download_url = get_download_url(prediction_url, key, http_adapter: http_adapter)
|
|
16
22
|
return nil if download_url.nil?
|
|
17
23
|
|
|
18
|
-
Rager::Utils::Http.
|
|
24
|
+
Rager::Utils::Http.download(download_url)
|
|
19
25
|
end
|
|
20
26
|
|
|
21
|
-
sig {
|
|
27
|
+
sig {
|
|
28
|
+
params(
|
|
29
|
+
prediction_url: String,
|
|
30
|
+
key: T.nilable(String),
|
|
31
|
+
path: String,
|
|
32
|
+
http_adapter: T.nilable(Rager::Http::Adapters::Abstract)
|
|
33
|
+
).returns(T.nilable(String))
|
|
34
|
+
}
|
|
22
35
|
def self.download_prediction_to_file(prediction_url, key = nil, path:, http_adapter: nil)
|
|
23
36
|
download_url = get_download_url(prediction_url, key, http_adapter: http_adapter)
|
|
24
37
|
return nil if download_url.nil?
|
|
25
38
|
|
|
26
|
-
Rager::Utils::Http.
|
|
39
|
+
Rager::Utils::Http.download_to_file(download_url, path)
|
|
27
40
|
end
|
|
28
41
|
|
|
29
42
|
sig { params(prediction_url: String, key: T.nilable(String), http_adapter: T.nilable(Rager::Http::Adapters::Abstract)).returns(T.nilable(String)) }
|
|
@@ -70,7 +83,16 @@ module Rager
|
|
|
70
83
|
raise Rager::Errors::ParseError.new("Failed to parse prediction response", details: e.message)
|
|
71
84
|
end
|
|
72
85
|
|
|
73
|
-
sig {
|
|
86
|
+
sig {
|
|
87
|
+
params(
|
|
88
|
+
prediction_url: String,
|
|
89
|
+
key: T.nilable(String),
|
|
90
|
+
path: T.nilable(String),
|
|
91
|
+
max_attempts: Integer,
|
|
92
|
+
sleep_interval: Integer,
|
|
93
|
+
http_adapter: T.nilable(Rager::Http::Adapters::Abstract)
|
|
94
|
+
).returns(T.nilable(String))
|
|
95
|
+
}
|
|
74
96
|
def self.poll_prediction(prediction_url, key: nil, path: nil, max_attempts: 30, sleep_interval: 10, http_adapter: nil)
|
|
75
97
|
max_attempts.times do
|
|
76
98
|
result = if path
|
|
@@ -79,7 +101,7 @@ module Rager
|
|
|
79
101
|
download_prediction(prediction_url, key, http_adapter: http_adapter)
|
|
80
102
|
end
|
|
81
103
|
return result unless result.nil?
|
|
82
|
-
Rager::Utils::
|
|
104
|
+
Rager::Utils::Runtime.sleep(sleep_interval)
|
|
83
105
|
end
|
|
84
106
|
|
|
85
107
|
raise Rager::Errors::TimeoutError.new(
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "sorbet-runtime"
|
|
5
|
+
|
|
6
|
+
module Rager
|
|
7
|
+
module Utils
|
|
8
|
+
module Runtime
|
|
9
|
+
extend T::Sig
|
|
10
|
+
|
|
11
|
+
sig { params(duration: Numeric).void }
|
|
12
|
+
def self.sleep(duration)
|
|
13
|
+
if defined?(Async::Task) && (task = Async::Task.current?)
|
|
14
|
+
task.sleep(duration)
|
|
15
|
+
else
|
|
16
|
+
Kernel.sleep(duration)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/rager/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rager
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- mvkvc
|
|
@@ -72,6 +72,7 @@ files:
|
|
|
72
72
|
- lib/rager/chat/schema.rb
|
|
73
73
|
- lib/rager/config.rb
|
|
74
74
|
- lib/rager/context.rb
|
|
75
|
+
- lib/rager/context_options.rb
|
|
75
76
|
- lib/rager/embed/options.rb
|
|
76
77
|
- lib/rager/embed/providers/abstract.rb
|
|
77
78
|
- lib/rager/embed/providers/openai.rb
|
|
@@ -90,32 +91,37 @@ files:
|
|
|
90
91
|
- lib/rager/http/request.rb
|
|
91
92
|
- lib/rager/http/response.rb
|
|
92
93
|
- lib/rager/http/verb.rb
|
|
93
|
-
- lib/rager/
|
|
94
|
-
- lib/rager/
|
|
95
|
-
- lib/rager/
|
|
96
|
-
- lib/rager/
|
|
97
|
-
- lib/rager/
|
|
98
|
-
- lib/rager/
|
|
99
|
-
- lib/rager/
|
|
100
|
-
- lib/rager/
|
|
94
|
+
- lib/rager/image/options.rb
|
|
95
|
+
- lib/rager/image/output_format.rb
|
|
96
|
+
- lib/rager/image/providers/abstract.rb
|
|
97
|
+
- lib/rager/image/providers/replicate.rb
|
|
98
|
+
- lib/rager/log_strategy.rb
|
|
99
|
+
- lib/rager/mesh/options.rb
|
|
100
|
+
- lib/rager/mesh/providers/abstract.rb
|
|
101
|
+
- lib/rager/mesh/providers/replicate.rb
|
|
101
102
|
- lib/rager/operation.rb
|
|
102
103
|
- lib/rager/options.rb
|
|
104
|
+
- lib/rager/outcome.rb
|
|
103
105
|
- lib/rager/providers.rb
|
|
106
|
+
- lib/rager/rerank/input.rb
|
|
104
107
|
- lib/rager/rerank/options.rb
|
|
105
|
-
- lib/rager/rerank/output.rb
|
|
106
108
|
- lib/rager/rerank/providers/abstract.rb
|
|
107
109
|
- lib/rager/rerank/providers/cohere.rb
|
|
110
|
+
- lib/rager/rerank/result.rb
|
|
108
111
|
- lib/rager/result.rb
|
|
109
112
|
- lib/rager/search/options.rb
|
|
110
|
-
- lib/rager/search/output.rb
|
|
111
113
|
- lib/rager/search/providers/abstract.rb
|
|
112
114
|
- lib/rager/search/providers/jina.rb
|
|
115
|
+
- lib/rager/search/result.rb
|
|
116
|
+
- lib/rager/template/input.rb
|
|
113
117
|
- lib/rager/template/options.rb
|
|
114
118
|
- lib/rager/template/providers/abstract.rb
|
|
115
119
|
- lib/rager/template/providers/erb.rb
|
|
120
|
+
- lib/rager/template/providers/mustache.rb
|
|
116
121
|
- lib/rager/types.rb
|
|
117
122
|
- lib/rager/utils/http.rb
|
|
118
123
|
- lib/rager/utils/replicate.rb
|
|
124
|
+
- lib/rager/utils/runtime.rb
|
|
119
125
|
- lib/rager/version.rb
|
|
120
126
|
homepage: https://github.com/mvkvc/rager_rb
|
|
121
127
|
licenses:
|
|
@@ -135,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
135
141
|
- !ruby/object:Gem::Version
|
|
136
142
|
version: '0'
|
|
137
143
|
requirements: []
|
|
138
|
-
rubygems_version: 3.6.
|
|
144
|
+
rubygems_version: 3.6.9
|
|
139
145
|
specification_version: 4
|
|
140
146
|
summary: Build continuously improving generative workflows.
|
|
141
147
|
test_files: []
|
data/lib/rager/rerank/output.rb
DELETED
data/lib/rager/search/output.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# typed: strict
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
require "sorbet-runtime"
|
|
5
|
-
|
|
6
|
-
module Rager
|
|
7
|
-
module Search
|
|
8
|
-
class Output < T::Struct
|
|
9
|
-
const :urls, T::Array[String]
|
|
10
|
-
const :titles, T::Array[String]
|
|
11
|
-
const :contents, T::Array[String]
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|