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

Instance Method Details

#deleteObject



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