Commit dd8d713
Changed files (5)
lib/elelem/llama/plugins/provider.rb
@@ -1,31 +0,0 @@
-# frozen_string_literal: true
-
-require "elelem/plugins"
-require_relative "../../llama"
-
-Elelem::Providers.register(:llama) do
- gpu = %w[vulkan cuda metal].include?(Elelem::Llama::Client.backend)
-
- default_model = -> {
- dir = File.expand_path("~/.agents/models")
- link = File.join(dir, "default.gguf")
- return link if File.symlink?(link) || File.exist?(link)
-
- models = Dir[File.join(dir, "*.gguf")].sort
- case models.length
- when 1 then models.first
- when 0 then raise "no .gguf model found in #{dir}. Set ELELEM_GGUF_MODEL=/path/to/model.gguf"
- else raise "multiple .gguf models found in #{dir}. Set ELELEM_GGUF_MODEL=/path/to/model.gguf or symlink #{link} to the one to use by default"
- end
- }
-
- Elelem::Llama::Client.new(
- model: ENV.fetch("ELELEM_GGUF_MODEL") { default_model.call },
- n_ctx: 0,
- n_threads: 0,
- n_gpu_layers: gpu ? 999 : 0,
- max_tokens: Integer(ENV.fetch("ELELEM_GGUF_MAX_TOKENS", "0")),
- temp: Float(ENV.fetch("ELELEM_GGUF_TEMP", "0.7")),
- seed: Integer(ENV.fetch("ELELEM_GGUF_SEED", "-1"))
- )
-end
lib/elelem/llama/client.rb
@@ -1,8 +1,5 @@
# frozen_string_literal: true
-require "fiddle"
-require "json"
-
module Elelem
module Llama
class Client
lib/elelem/llama.rb
@@ -1,4 +1,35 @@
# frozen_string_literal: true
+require "fiddle"
+require "json"
+require "elelem"
+
require_relative "llama/version"
require_relative "llama/client"
+
+Elelem::Providers.register(:llama) do
+ gpu = %w[vulkan cuda metal].include?(Elelem::Llama::Client.backend)
+
+ default_model = -> {
+ dir = File.expand_path("~/.agents/models")
+ link = File.join(dir, "default.gguf")
+ return link if File.symlink?(link) || File.exist?(link)
+
+ models = Dir[File.join(dir, "*.gguf")].sort
+ case models.length
+ when 1 then models.first
+ when 0 then raise "no .gguf model found in #{dir}. Set ELELEM_GGUF_MODEL=/path/to/model.gguf"
+ else raise "multiple .gguf models found in #{dir}. Set ELELEM_GGUF_MODEL=/path/to/model.gguf or symlink #{link} to the one to use by default"
+ end
+ }
+
+ Elelem::Llama::Client.new(
+ model: ENV.fetch("ELELEM_GGUF_MODEL") { default_model.call },
+ n_ctx: 0,
+ n_threads: 0,
+ n_gpu_layers: gpu ? 999 : 0,
+ max_tokens: Integer(ENV.fetch("ELELEM_GGUF_MAX_TOKENS", "0")),
+ temp: Float(ENV.fetch("ELELEM_GGUF_TEMP", "0.7")),
+ seed: Integer(ENV.fetch("ELELEM_GGUF_SEED", "-1"))
+ )
+end
elelem-llama.gemspec
@@ -33,8 +33,7 @@ Gem::Specification.new do |spec|
spec.executables = ["elelem-llama"]
spec.require_paths = ["lib"]
- spec.add_dependency "elelem-plugins", "~> 0.1"
- spec.add_dependency "elelem-cli", "~> 0.1"
+ spec.add_dependency "elelem", "~> 0.10"
spec.add_dependency "fiddle", "~> 1.1"
spec.add_dependency "json", "~> 2.21"
end
Gemfile.lock
@@ -0,0 +1,150 @@
+PATH
+ remote: .
+ specs:
+ elelem-llama (0.1.0)
+ elelem (~> 0.10)
+ fiddle (~> 1.1)
+ json (~> 2.21)
+
+GEM
+ remote: https://rubygems.org/
+ specs:
+ base64 (0.3.0)
+ bigdecimal (4.1.2)
+ date (3.5.1)
+ digest (3.2.1)
+ elelem (0.10.0)
+ base64 (~> 0.1)
+ date (~> 3.0)
+ digest (~> 3.0)
+ erb (~> 6.0)
+ fileutils (~> 1.0)
+ json (~> 2.0)
+ json_schemer (~> 2.0)
+ logger (~> 1.0)
+ net-hippie (~> 1.0)
+ open3 (~> 0.1)
+ optparse (~> 0.1)
+ pathname (~> 0.1)
+ reline (~> 0.6)
+ securerandom (~> 0.1)
+ shellwords (~> 0.2)
+ stringio (~> 3.0)
+ tempfile (~> 0.3)
+ uri (~> 1.0)
+ webrick (~> 1.9)
+ erb (6.0.7)
+ fiddle (1.1.8)
+ fileutils (1.8.0)
+ hana (1.3.7)
+ io-console (0.9.2)
+ irb (1.18.0)
+ pp (>= 0.6.0)
+ prism (>= 1.3.0)
+ rdoc (>= 4.0.0)
+ reline (>= 0.4.2)
+ json (2.21.2)
+ json_schemer (2.5.0)
+ bigdecimal
+ hana (~> 1.3)
+ regexp_parser (~> 2.0)
+ simpleidn (~> 0.2)
+ logger (1.7.0)
+ monitor (0.2.0)
+ net-hippie (1.5.1)
+ base64 (~> 0.1)
+ json (~> 2.0)
+ logger (~> 1.0)
+ monitor (~> 0.1)
+ net-http (~> 0.1)
+ openssl (~> 4.0)
+ resolv (~> 0.1)
+ timeout (~> 0.1)
+ net-http (0.9.1)
+ uri (>= 0.11.1)
+ open3 (0.2.1)
+ openssl (4.0.2)
+ optparse (0.8.1)
+ pathname (0.5.0)
+ pp (0.6.4)
+ prettyprint
+ prettyprint (0.2.0)
+ prism (1.9.0)
+ rake (13.4.2)
+ rbs (4.2.0)
+ logger
+ prism (>= 1.6.0)
+ tsort
+ rdoc (8.0.0)
+ erb
+ prism (>= 1.6.0)
+ rbs (>= 4.0.0)
+ tsort
+ regexp_parser (2.12.0)
+ reline (0.7.0)
+ io-console (~> 0.5)
+ resolv (0.7.2)
+ securerandom (0.4.1)
+ shellwords (0.2.2)
+ simpleidn (0.3.0)
+ stringio (3.2.0)
+ tempfile (0.3.1)
+ timeout (0.6.1)
+ tsort (0.2.0)
+ uri (1.1.1)
+ webrick (1.9.2)
+
+PLATFORMS
+ ruby
+ x86_64-linux
+
+DEPENDENCIES
+ elelem-llama!
+ irb
+ rake (~> 13.0)
+
+CHECKSUMS
+ base64 (0.3.0)
+ bigdecimal (4.1.2)
+ bundler (4.0.20) sha256=7978a8ac648767f5e635bc522445b79e80a52b907a39a36c2d8085ed6bc762ae
+ date (3.5.1)
+ digest (3.2.1)
+ elelem (0.10.0)
+ elelem-llama (0.1.0)
+ erb (6.0.7)
+ fiddle (1.1.8)
+ fileutils (1.8.0)
+ hana (1.3.7)
+ io-console (0.9.2)
+ irb (1.18.0)
+ json (2.21.2)
+ json_schemer (2.5.0)
+ logger (1.7.0)
+ monitor (0.2.0)
+ net-hippie (1.5.1)
+ net-http (0.9.1)
+ open3 (0.2.1)
+ openssl (4.0.2)
+ optparse (0.8.1)
+ pathname (0.5.0)
+ pp (0.6.4)
+ prettyprint (0.2.0)
+ prism (1.9.0)
+ rake (13.4.2)
+ rbs (4.2.0)
+ rdoc (8.0.0)
+ regexp_parser (2.12.0)
+ reline (0.7.0)
+ resolv (0.7.2)
+ securerandom (0.4.1)
+ shellwords (0.2.2)
+ simpleidn (0.3.0)
+ stringio (3.2.0)
+ tempfile (0.3.1)
+ timeout (0.6.1)
+ tsort (0.2.0)
+ uri (1.1.1)
+ webrick (1.9.2)
+
+BUNDLED WITH
+ 4.0.20