Commit 8e35a4a
Changed files (3)
lib
elelem
ollama
spec
elelem
ollama
lib/elelem/ollama/client.rb → lib/elelem/ollama/provider.rb
@@ -2,7 +2,7 @@
module Elelem
module Ollama
- class Client
+ class Provider
def initialize(
model:,
host: "localhost:11434",
lib/elelem/ollama.rb
@@ -6,11 +6,11 @@ require "net/http"
require "uri"
require_relative "ollama/version"
-require_relative "ollama/client"
+require_relative "ollama/provider"
Elelem.configure do |config|
config.provider(:ollama) do
- Elelem::Ollama::Client.new(
+ Elelem::Ollama::Provider.new(
model: ENV.fetch("OLLAMA_MODEL", "gpt-oss:latest"),
host: ENV.fetch("OLLAMA_HOST", "localhost:11434"),
think: ENV["OLLAMA_THINK"],
spec/elelem/ollama/client_spec.rb → spec/elelem/ollama/provider_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
-RSpec.describe Elelem::Ollama::Client do
- subject(:client) { described_class.new(model: "gpt-oss:latest", http:, **params) }
+RSpec.describe Elelem::Ollama::Provider do
+ subject(:provider) { described_class.new(model: "gpt-oss:latest", http:, **params) }
let(:params) { {} }
let(:messages) { [{ role: "user", content: "hi" }] }
@@ -30,7 +30,7 @@ RSpec.describe Elelem::Ollama::Client do
describe "#fetch" do
it "sends only model, messages and stream by default" do
- client.fetch(messages) { }
+ provider.fetch(messages) { }
expect(body).to eq(model: "gpt-oss:latest", messages:, stream: true)
end
@@ -38,7 +38,7 @@ RSpec.describe Elelem::Ollama::Client do
it "sends tools when present" do
tools = [{ type: "function", function: { name: "read" } }]
- client.fetch(messages, tools) { }
+ provider.fetch(messages, tools) { }
expect(body[:tools]).to eq(tools)
end
@@ -47,7 +47,7 @@ RSpec.describe Elelem::Ollama::Client do
let(:params) { { think: "high", keep_alive: "30m", options: { num_ctx: 32_768 } } }
it "sends them in the request body" do
- client.fetch(messages) { }
+ provider.fetch(messages) { }
expect(body).to include(think: "high", keep_alive: "30m", options: { num_ctx: 32_768 })
end
@@ -57,7 +57,7 @@ RSpec.describe Elelem::Ollama::Client do
let(:params) { { options: {} } }
it "omits options" do
- client.fetch(messages) { }
+ provider.fetch(messages) { }
expect(body).not_to have_key(:options)
end
@@ -67,7 +67,7 @@ RSpec.describe Elelem::Ollama::Client do
let(:params) { { params: { format: "json", truncate: false, top_logprobs: 3 } } }
it "merges them into the request body" do
- client.fetch(messages) { }
+ provider.fetch(messages) { }
expect(body).to include(format: "json", truncate: false, top_logprobs: 3)
end
@@ -77,7 +77,7 @@ RSpec.describe Elelem::Ollama::Client do
let(:params) { { think: "low", params: { think: "high" } } }
it "prefers the passthrough value" do
- client.fetch(messages) { }
+ provider.fetch(messages) { }
expect(body[:think]).to eq("high")
end