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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d38fee5588b8410bd344b1848429f4cd5534dbfc46bdb3c7c55193156b3f78b5
4
- data.tar.gz: 8a8b353426c367c4b0a7663d66a0a82a91c594a23384f12ed17f3484513aa105
3
+ metadata.gz: b9479cf41fe01b10e9c117939304120042337fa3a3ce8bc27fc1649e69894bcc
4
+ data.tar.gz: ea441f9a3978f58bc40284cfa5cefe49533f9a53275c8c85aca3761247dcf91b
5
5
  SHA512:
6
- metadata.gz: 0c963bd5389c85b39ac2f2fb8ef94f3e35167bd265e2dfa77c6a63642ae42d156954e9d151fbea994b3c12fe5d5a7db15f2671501449a74df17e4e26a1e3383d
7
- data.tar.gz: 8f3e9700244b3fc29414a512b1cbf84818b72d73cc44d60a6dc581835a77d680f0616008477bbaf54f68e2fcf2dbfa540fc104aa346cd3882c47826c578a90d9
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
@@ -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: #{contents.inspect}")
50
+ @logger.info("Request parameters: #{request_params.inspect}")
36
51
  end
37
52
 
38
- raw_response = @client.generate_content({ contents: contents })
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: 'gemini-pro' }
84
+ options: { model: config[:model] }
70
85
  }
71
- client_config[:options].merge!(config)
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
- ::Gemini.new(**client_config)
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
@@ -1,4 +1,4 @@
1
1
  module Rach
2
- VERSION = "0.2.9"
2
+ VERSION = "0.2.10"
3
3
  end
4
4
 
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.9
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-05 00:00:00.000000000 Z
11
+ date: 2025-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec