GeminiCache

GeminiCache é uma biblioteca Ruby para interagir com a API de Cache do Google Gemini. Ela fornece uma interface simples para criar, gerenciar e manipular caches de conteúdo para uso com os modelos de IA do Gemini.

Instalação

Adicione esta linha ao Gemfile da sua aplicação:

gem 'gemini_cache'

E então execute:

$ bundle install

Ou instale manualmente:

$ gem install gemini_cache

Configuração

Antes de usar a biblioteca, você precisa configurar sua chave de API do Google Gemini. Você pode fazer isso de duas maneiras:

1. Usando variáveis de ambiente

export GEMINI_API_KEY='sua_chave_api_aqui'

2. Usando o bloco de configuração

GeminiCache.configure do |config|
  config.api_key = 'sua_chave_api_aqui'
  config.timeout = 30 # opcional, tempo limite em segundos
  config.cache_dir = '/path/to/cache' # opcional, diretório para cache local
end

Uso Básico

Inicializando o Cliente

cache = GeminiCache::Client.new

Operações Básicas

Armazenando dados no cache

# Armazena um valor com uma chave
cache.set('minha_chave', 'meu_valor')

# Armazena com tempo de expiração (em segundos)
cache.set('minha_chave', 'meu_valor', expires_in: 3600)

Recuperando dados do cache

# Recupera um valor
valor = cache.get('minha_chave')

# Recupera com valor padrão se a chave não existir
valor = cache.get('minha_chave', default: 'valor_padrao')

Removendo dados do cache

# Remove uma chave específica
cache.delete('minha_chave')

# Limpa todo o cache
cache.clear

Uso Avançado

Cache em Lote

# Armazena múltiplos valores
cache.set_multi({
  'chave1' => 'valor1',
  'chave2' => 'valor2'
})

# Recupera múltiplos valores
valores = cache.get_multi(['chave1', 'chave2'])

Cache com Blocos

# Executa o bloco apenas se o valor não estiver em cache
resultado = cache.fetch('minha_chave') do
  # código computacionalmente intensivo aqui
  resultado_computado
end

Exemplos de Uso com Gemini AI

# Cacheia resultados de chamadas à API do Gemini
resposta = cache.fetch('consulta_gemini') do
  gemini_client.generate_content('Qual é o sentido da vida?')
end

# Cache com namespace para diferentes modelos
cache_pro = GeminiCache::Client.new(namespace: 'gemini-pro')
cache_vision = GeminiCache::Client.new(namespace: 'gemini-vision')

Tratamento de Erros

begin
  cache.get('minha_chave')
rescue GeminiCache::ConnectionError => e
  puts "Erro de conexão: #{e.message}"
rescue GeminiCache::TimeoutError => e
  puts "Tempo limite excedido: #{e.message}"
end

Contribuindo

  1. Faça um fork do projeto
  2. Crie sua feature branch (git checkout -b feature/nova-feature)
  3. Faça commit das suas alterações (git commit -am 'Adiciona nova feature')
  4. Faça push para a branch (git push origin feature/nova-feature)
  5. Crie um novo Pull Request

Licença

Esta gem está disponível como código aberto sob os termos da Licença MIT.