rach 0.2.9 → 0.2.10
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/lib/rach/client.rb +1 -1
- data/lib/rach/provider/google.rb +33 -5
- data/lib/rach/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9479cf41fe01b10e9c117939304120042337fa3a3ce8bc27fc1649e69894bcc
|
4
|
+
data.tar.gz: ea441f9a3978f58bc40284cfa5cefe49533f9a53275c8c85aca3761247dcf91b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e185fa5b250d9433a71af3e31089b046ed4087ace488e608e54184f444bc152f9e02f0a5515a2a878ff7d07c56537a53906b111c39c8ee9cd42edc39b2014b8
|
7
|
+
data.tar.gz: ee0e72f793aee837570acfddc55da33aee2b9a13161e813121de6abe6955877828ee7c20638a0731a40367a9c40ce1aacdda2edaa548f3c4fd0ac0a59b7ce31c
|
data/lib/rach/client.rb
CHANGED
@@ -13,7 +13,7 @@ module Rach
|
|
13
13
|
setup_providers(providers)
|
14
14
|
elsif access_token && model
|
15
15
|
provider = Provider.for(model)
|
16
|
-
setup_providers({ provider.key => { access_token: access_token } })
|
16
|
+
setup_providers({ provider.key => { access_token: access_token, model: model } })
|
17
17
|
else
|
18
18
|
raise ArgumentError, "Either (providers) or (access_token AND model) must be provided"
|
19
19
|
end
|
data/lib/rach/provider/google.rb
CHANGED
@@ -30,12 +30,27 @@ module Rach
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
+
request_params = { contents: contents }
|
34
|
+
|
35
|
+
# Handle response format if provided
|
36
|
+
if response_format = parameters.dig(:parameters, :response_format)
|
37
|
+
request_params[:generation_config] = {
|
38
|
+
response_mime_type: 'application/json',
|
39
|
+
response_schema: convert_response_format(response_format)
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
if request_params.dig(:generation_config, :response_schema)
|
44
|
+
request_params[:generation_config][:response_schema].delete(:additionalProperties)
|
45
|
+
request_params[:generation_config][:response_schema].delete(:required)
|
46
|
+
end
|
47
|
+
|
33
48
|
if @logger
|
34
49
|
@logger.info("Making API call to Google Gemini")
|
35
|
-
@logger.info("Request parameters: #{
|
50
|
+
@logger.info("Request parameters: #{request_params.inspect}")
|
36
51
|
end
|
37
52
|
|
38
|
-
raw_response = @client.generate_content(
|
53
|
+
raw_response = @client.generate_content(request_params)
|
39
54
|
|
40
55
|
if @logger
|
41
56
|
@logger.info("Response: #{raw_response.inspect}")
|
@@ -66,11 +81,24 @@ module Rach
|
|
66
81
|
service: 'generative-language-api',
|
67
82
|
api_key: access_token
|
68
83
|
},
|
69
|
-
options: { model:
|
84
|
+
options: { model: config[:model] }
|
70
85
|
}
|
71
|
-
|
86
|
+
|
87
|
+
# Only merge additional options that aren't already set
|
88
|
+
client_config[:options].merge!(config.except(:model))
|
89
|
+
|
90
|
+
# Function calling and structured output are broken in this gem
|
91
|
+
gemini = ::Gemini.new(**client_config)
|
92
|
+
base_address = gemini.instance_variable_get(:@base_address)
|
93
|
+
base_address.gsub!('v1', 'v1beta') if base_address
|
94
|
+
gemini
|
95
|
+
end
|
96
|
+
|
97
|
+
def convert_response_format(format)
|
98
|
+
return unless format[:type] == "json_schema"
|
72
99
|
|
73
|
-
|
100
|
+
schema = format.dig(:json_schema, :schema)
|
101
|
+
schema.deep_symbolize_keys
|
74
102
|
end
|
75
103
|
end
|
76
104
|
end
|
data/lib/rach/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rach
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roger Garcia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|