Module: ItemExtender
- Defined in:
- lib/gemini_cache/item_extender.rb
Constant Summary collapse
- GEMINI_API_BASE_URL =
'https://generativelanguage.googleapis.com'- DEFAULT_TIMEOUT =
seconds
300- ACCURATE_MODE_CONFIG =
{ temperature: 0, topP: 0, topK: 1 }.freeze
Instance Method Summary collapse
- #delete ⇒ Object
- #generate_content(contents:, generation_config: nil) ⇒ Object
- #single_prompt(prompt:, generation_config: :accurate_mode) ⇒ Object
- #ttl=(new_ttl) ⇒ Object
Instance Method Details
#delete ⇒ Object
8 |
# File 'lib/gemini_cache/item_extender.rb', line 8 def delete = GeminiCache.delete(name: self['name']) |
#generate_content(contents:, generation_config: nil) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/gemini_cache/item_extender.rb', line 14 def generate_content(contents:, generation_config: nil) response = api_client.post(generate_content_endpoint) do |req| req.params['key'] = ENV.fetch('GEMINI_API_KEY') req.body = build_request_body(contents, generation_config) end handle_response(response) rescue Faraday::Error => e raise GeminiAPIError, "Request failed: #{e.message}" end |
#single_prompt(prompt:, generation_config: :accurate_mode) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/gemini_cache/item_extender.rb', line 25 def single_prompt(prompt:, generation_config: :accurate_mode) config = generation_config.eql?(:accurate_mode) ? ACCURATE_MODE_CONFIG : generation_config generate_content( contents: [{ parts: [{ text: prompt }], role: 'user' }], generation_config: config ).content end |
#ttl=(new_ttl) ⇒ Object
10 11 12 |
# File 'lib/gemini_cache/item_extender.rb', line 10 def ttl=(new_ttl) GeminiCache.update(name: self['name'], content: { ttl: "#{new_ttl}s" }.to_json) end |