Module: OllamaAgent::ThinkParam

Defined in:
lib/ollama_agent/think_param.rb

Overview

Resolves Ollama chat think: from CLI override or OLLAMA_AGENT_THINK. Values: true/false (and 1/0, yes/no, on/off), or high / medium / low for models such as GPT-OSS. When unset everywhere, think is omitted from the request (server default). See README section **Reasoning / thinking output**.

Class Method Summary collapse

Class Method Details

.effective_for_model(parsed, model_name) ⇒ Object

GPT-OSS models ignore boolean think; Ollama expects low, medium, or high. When the user passes true (CLI/ENV), map to a level so reasoning appears in message.thinking.

Override default level with OLLAMA_AGENT_GPT_OSS_THINK (low, medium, or high).



14
15
16
17
18
19
20
21
22
23
# File 'lib/ollama_agent/think_param.rb', line 14

def effective_for_model(parsed, model_name)
  return parsed if parsed.nil?
  return parsed unless parsed == true
  return parsed unless gpt_oss_model_name?(model_name)

  level = ENV.fetch("OLLAMA_AGENT_GPT_OSS_THINK", "medium").to_s.downcase.strip
  return level if %w[low medium high].include?(level)

  "medium"
end

.parse(raw) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ollama_agent/think_param.rb', line 30

def parse(raw)
  return nil if raw.nil?
  return nil if raw.is_a?(String) && raw.strip.empty?

  s = raw.to_s.strip
  case s.downcase
  when "0", "false", "no", "off" then false
  when "1", "true", "yes", "on" then true
  when "high", "medium", "low" then s.downcase
  else
    s
  end
end

.resolve(cli_value) ⇒ Object



25
26
27
28
# File 'lib/ollama_agent/think_param.rb', line 25

def resolve(cli_value)
  raw = cli_value.nil? ? ENV.fetch("OLLAMA_AGENT_THINK", nil) : cli_value
  parse(raw)
end