Module: Kiribi

Defined in:
lib/kiribi.rb,
lib/kiribi/version.rb,
lib/kiribi/gemma4_e2b.rb,
lib/kiribi/ruri_v3_small.rb,
lib/kiribi/gemma4_e2b/text.rb,
lib/kiribi/multilingual_e5_small.rb,
lib/kiribi/gemma4_e2b/audio_encoder.rb,
lib/kiribi/gemma4_e2b/vision_encoder.rb

Defined Under Namespace

Modules: Gemma4E2B Classes: DownloadFailed, Error, ModelNotDownloaded, MultilingualE5Small, RuriV3Small, UnknownModel

Constant Summary collapse

MODELS =
%w[
  ruri-v3-30m
  multilingual-e5-small
  gemma4-e2b/text
  gemma4-e2b/vision
  gemma4-e2b/audio
].freeze
VERSION =
"0.1.1"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.cache_dirObject



29
30
31
32
33
# File 'lib/kiribi.rb', line 29

def cache_dir
  @cache_dir ||
    ENV["KIRIBI_CACHE_DIR"] ||
    File.join(ENV["XDG_CACHE_HOME"] || File.join(Dir.home, ".cache"), "kiribi")
end

Class Method Details

.download(name, force: false) ⇒ Object



35
36
37
38
# File 'lib/kiribi.rb', line 35

def download(name, force: false)
  lookup(name).download(File.join(cache_dir, name), force: force)
  true
end

.http_get(url, &block) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/kiribi.rb', line 44

def http_get(url, &block)
  redirect_count = 0
  loop do
    raise DownloadFailed, "Too many redirects" if redirect_count >= 10
    uri = URI.parse(url)
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = (uri.scheme == "https")
    http.request(Net::HTTP::Get.new(uri.request_uri)) do |resp|
      case resp
      when Net::HTTPSuccess
        resp.read_body(&block)
        return
      when Net::HTTPRedirection
        url = resp["Location"]
        redirect_count += 1
      else
        raise DownloadFailed, "HTTP #{resp.code} for #{url}"
      end
    end
  end
end

.load(name) ⇒ Object



40
41
42
# File 'lib/kiribi.rb', line 40

def load(name)
  lookup(name).new(File.join(cache_dir, name))
end