From a74a131e43fb5ec781a20171a0df33a086d8bdfc Mon Sep 17 00:00:00 2001 From: Edy Silva Date: Mon, 16 Feb 2026 01:02:19 -0300 Subject: [PATCH] Add ollama_api_key support for remote Ollama endpoints --- lib/ruby_llm/configuration.rb | 1 + lib/ruby_llm/providers/ollama.rb | 4 +++- spec/ruby_llm/providers/ollama_spec.rb | 23 +++++++++++++++++++++++ spec/support/rubyllm_configuration.rb | 1 + 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 spec/ruby_llm/providers/ollama_spec.rb diff --git a/lib/ruby_llm/configuration.rb b/lib/ruby_llm/configuration.rb index 4b0c46d64..f51344909 100644 --- a/lib/ruby_llm/configuration.rb +++ b/lib/ruby_llm/configuration.rb @@ -25,6 +25,7 @@ class Configuration :openrouter_api_key, :xai_api_key, :ollama_api_base, + :ollama_api_key, :gpustack_api_base, :gpustack_api_key, :mistral_api_key, diff --git a/lib/ruby_llm/providers/ollama.rb b/lib/ruby_llm/providers/ollama.rb index ea20c4953..265888301 100644 --- a/lib/ruby_llm/providers/ollama.rb +++ b/lib/ruby_llm/providers/ollama.rb @@ -13,7 +13,9 @@ def api_base end def headers - {} + return {} unless @config.ollama_api_key + + { 'Authorization' => "Bearer #{@config.ollama_api_key}" } end class << self diff --git a/spec/ruby_llm/providers/ollama_spec.rb b/spec/ruby_llm/providers/ollama_spec.rb new file mode 100644 index 000000000..9910e08c1 --- /dev/null +++ b/spec/ruby_llm/providers/ollama_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe RubyLLM::Providers::Ollama do + include_context 'with configured RubyLLM' + + describe '#headers' do + it 'returns empty headers when no API key is configured' do + RubyLLM.configure { |config| config.ollama_api_key = nil } + provider = described_class.new(RubyLLM.config) + + expect(provider.headers).to eq({}) + end + + it 'returns Authorization header when API key is configured' do + RubyLLM.configure { |config| config.ollama_api_key = 'test-ollama-key' } + provider = described_class.new(RubyLLM.config) + + expect(provider.headers).to eq({ 'Authorization' => 'Bearer test-ollama-key' }) + end + end +end diff --git a/spec/support/rubyllm_configuration.rb b/spec/support/rubyllm_configuration.rb index f5f2958c6..54d86c9e5 100644 --- a/spec/support/rubyllm_configuration.rb +++ b/spec/support/rubyllm_configuration.rb @@ -22,6 +22,7 @@ config.mistral_api_key = ENV.fetch('MISTRAL_API_KEY', 'test') config.model_registry_class = 'Model' config.ollama_api_base = ENV.fetch('OLLAMA_API_BASE', 'http://localhost:11434/v1') + config.ollama_api_key = ENV.fetch('OLLAMA_API_KEY', nil) config.openai_api_key = ENV.fetch('OPENAI_API_KEY', 'test') config.openrouter_api_key = ENV.fetch('OPENROUTER_API_KEY', 'test') config.perplexity_api_key = ENV.fetch('PERPLEXITY_API_KEY', 'test')