Module: Brute::Providers
- Defined in:
- lib/brute/providers.rb,
lib/brute/providers/shell.rb,
lib/brute/providers/ollama.rb,
lib/brute/providers/models_dev.rb,
lib/brute/providers/shell_response.rb
Defined Under Namespace
Classes: ModelsDev, Ollama, Shell, ShellResponse
Constant Summary collapse
- ALL =
{ 'anthropic' => ->(key) { LLM.anthropic(key: key).tap { Patches::AnthropicToolRole.apply! } }, 'openai' => ->(key) { LLM.openai(key: key) }, 'google' => ->(key) { LLM.google(key: key) }, 'deepseek' => ->(key) { LLM.deepseek(key: key) }, 'ollama' => ->(_key) { Providers::Ollama.new }, 'xai' => ->(key) { LLM.xai(key: key) }, 'opencode_zen' => ->(key) { LLM::OpencodeZen.new(key: key) }, 'opencode_go' => ->(key) { LLM::OpencodeGo.new(key: key) }, 'shell' => ->(_key) { Providers::Shell.new }, }.freeze
Class Method Summary collapse
-
.guess_from_env ⇒ Object
Resolve the LLM provider from environment variables.
Class Method Details
.guess_from_env ⇒ Object
Resolve the LLM provider from environment variables.
Checks in order:
1. LLM_API_KEY + LLM_PROVIDER (explicit)
2. OPENCODE_API_KEY (implicit: provider = opencode_zen)
3. ANTHROPIC_API_KEY (implicit: provider = anthropic)
4. OPENAI_API_KEY (implicit: provider = openai)
5. GOOGLE_API_KEY (implicit: provider = google)
6. OLLAMA_HOST (implicit: provider = ollama, local inference)
Returns nil if no key is found. Error is deferred to the caller.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/brute/providers.rb', line 33 def self.guess_from_env if ENV['LLM_API_KEY'] key = ENV['LLM_API_KEY'] name = ENV.fetch('LLM_PROVIDER', 'opencode_zen').downcase elsif ENV['OPENCODE_API_KEY'] key = ENV['OPENCODE_API_KEY'] name = 'opencode_zen' elsif ENV['ANTHROPIC_API_KEY'] key = ENV['ANTHROPIC_API_KEY'] name = 'anthropic' elsif ENV['OPENAI_API_KEY'] key = ENV['OPENAI_API_KEY'] name = 'openai' elsif ENV['GOOGLE_API_KEY'] key = ENV['GOOGLE_API_KEY'] name = 'google' elsif ENV['OLLAMA_HOST'] key = 'none' name = 'ollama' else return nil end factory = Providers::ALL[name] raise "Unknown LLM provider: #{name}. Available: #{Providers::ALL.keys.join(', ')}" unless factory factory.call(key) end |