Class: Roast::Cogs::Chat::Config

Inherits:
Roast::Cog::Config show all
Defined in:
lib/roast/cogs/chat/config.rb

Constant Summary collapse

PROVIDERS =
{
  openai: {
    api_key_env_var: "OPENAI_API_KEY",
    base_url_env_var: "OPENAI_API_BASE",
    default_base_url: "https://api.openai.com/v1",
    default_model: "gpt-4o-mini",
  },
  anthropic: {
    api_key_env_var: "ANTHROPIC_API_KEY",
    base_url_env_var: "ANTHROPIC_API_BASE",
    default_base_url: "https://api.anthropic.com",
    default_model: "claude-haiku-4-5",
  },
  perplexity: {
    api_key_env_var: "PERPLEXITY_API_KEY",
    default_model: "sonar",
  },
  gemini: {
    api_key_env_var: "GEMINI_API_KEY",
    base_url_env_var: "GEMINI_API_BASE",
    default_base_url: "https://generativelanguage.googleapis.com/v1beta",
    default_model: "gemini-3.1-flash-lite",
  },
}.freeze

Instance Attribute Summary

Attributes inherited from Roast::Cog::Config

#values

Instance Method Summary collapse

Methods inherited from Roast::Cog::Config

#[], #[]=, #abort_on_failure!, #abort_on_failure?, #async!, #async?, field, #initialize, #merge, #no_abort_on_failure!, #no_async!, #use_current_working_directory!, #valid_working_directory, #validate!, #working_directory

Constructor Details

This class inherits a constructor from Roast::Cog::Config

Instance Method Details

#api_key(key) ⇒ Object

Configure the cog to use a specific API key when invoking the llm

By default, the cog will use the value specified in a provider-specific environment variable, if present.

#### See Also

  • ‘use_api_key_from_environment!`

: (String) -> void



84
85
86
# File 'lib/roast/cogs/chat/config.rb', line 84

def api_key(key)
  @values[:api_key] = key
end

#base_url(key) ⇒ Object

Configure the cog to use a specific API base URL when invoking the llm

Default value:

  • The value specified in provider-specific environment variable, if present;

  • A provider-specific default, otherwise.

#### See Also

  • ‘use_default_base_url!`

: (String) -> void



139
140
141
# File 'lib/roast/cogs/chat/config.rb', line 139

def base_url(key)
  @values[:base_url] = key
end

#display!Object

Configure the cog to display all llm output

This enables ‘show_prompt!`, `show_response!`, and `show_stats!`.

#### See Also

  • ‘no_display!`

  • ‘quiet!`

  • ‘show_prompt!`

  • ‘show_response!`

  • ‘show_stats!`

: () -> void



430
431
432
433
434
# File 'lib/roast/cogs/chat/config.rb', line 430

def display!
  show_prompt!
  show_response!
  show_stats!
end

#display?Boolean

Check if the cog is configured to display any output while running

#### See Also

  • ‘display!`

  • ‘no_display!`

  • ‘show_prompt?`

  • ‘show_response?`

  • ‘show_stats?`

: () -> bool

Returns:

  • (Boolean)


468
469
470
# File 'lib/roast/cogs/chat/config.rb', line 468

def display?
  show_prompt? || show_response? || show_stats?
end

#model(model) ⇒ Object

Configure the cog to use a specific model when invoking the agent

The model name format is provider-specific.

#### See Also

  • ‘use_default_model!`

: (String) -> void



187
188
189
# File 'lib/roast/cogs/chat/config.rb', line 187

def model(model)
  @values[:model] = model
end

#no_display!Object Also known as: quiet!

Configure the cog to __hide__ all llm output

This enables ‘no_show_prompt!`, `no_show_response!`, and `no_show_stats!`.

#### Alias Methods

  • ‘no_display!`

  • ‘quiet!`

#### See Also

  • ‘display!`

  • ‘quiet!`

  • ‘no_show_prompt!`

  • ‘no_show_response!`

  • ‘no_show_stats!`

: () -> void



452
453
454
455
456
# File 'lib/roast/cogs/chat/config.rb', line 452

def no_display!
  no_show_prompt!
  no_show_response!
  no_show_stats!
end

#no_show_prompt!Object

Configure the cog __not__ to display the prompt when invoking the llm

This is the default behaviour.

#### See Also

  • ‘show_prompt!`

  • ‘show_prompt?`

  • ‘no_display!`

  • ‘quiet!`

: () -> void



327
328
329
# File 'lib/roast/cogs/chat/config.rb', line 327

def no_show_prompt!
  @values[:show_prompt] = false
end

#no_show_response!Object

Configure the cog __not__ to display the llm’s final response

#### See Also

  • ‘show_response!`

  • ‘show_response?`

  • ‘no_display!`

  • ‘quiet!`

: () -> void



365
366
367
# File 'lib/roast/cogs/chat/config.rb', line 365

def no_show_response!
  @values[:show_response] = false
end

#no_show_stats!Object

Configure the cog __not__ to display statistics about the llm’s operation

#### See Also

  • ‘show_stats!`

  • ‘show_stats?`

  • ‘no_display!`

  • ‘quiet!`

: () -> void



403
404
405
# File 'lib/roast/cogs/chat/config.rb', line 403

def no_show_stats!
  @values[:show_stats] = false
end

#no_verify_model_exists!Object Also known as: assume_model_exists!

Configure the cog __not__ to verify that the model exists on the provider before attempting to invoke it

This is the default behaviour.

#### See Also

  • ‘verify_model_exists!`

  • ‘assume_model_exists!`

  • ‘verify_model_exists?`

: () -> void



285
286
287
# File 'lib/roast/cogs/chat/config.rb', line 285

def no_verify_model_exists!
  @values[:verify_model_exists] = false
end

#provider(provider) ⇒ Object

Configure the cog to use a specified API provider when invoking the llm

#### See Also

  • ‘use_default_provider!`

: (Symbol) -> void



39
40
41
# File 'lib/roast/cogs/chat/config.rb', line 39

def provider(provider)
  @values[:provider] = provider
end

#show_prompt!Object

Configure the cog to display the prompt when invoking the llm

Disabled by default.

#### See Also

  • ‘no_show_prompt!`

  • ‘show_prompt?`

  • ‘display!`

: () -> void



312
313
314
# File 'lib/roast/cogs/chat/config.rb', line 312

def show_prompt!
  @values[:show_prompt] = true
end

#show_prompt?Boolean

Check if the cog is configured to display the prompt when invoking the llm

#### See Also

  • ‘show_prompt!`

  • ‘no_show_prompt!`

: () -> bool

Returns:

  • (Boolean)


338
339
340
# File 'lib/roast/cogs/chat/config.rb', line 338

def show_prompt?
  @values.fetch(:show_prompt, false)
end

#show_response!Object

Configure the cog to display the llm’s final response

Enabled by default.

#### See Also

  • ‘no_show_response!`

  • ‘show_response?`

  • ‘display!`

: () -> void



352
353
354
# File 'lib/roast/cogs/chat/config.rb', line 352

def show_response!
  @values[:show_response] = true
end

#show_response?Boolean

Check if the cog is configured to display the llm’s final response

#### See Also

  • ‘show_response!`

  • ‘no_show_response!`

: () -> bool

Returns:

  • (Boolean)


376
377
378
# File 'lib/roast/cogs/chat/config.rb', line 376

def show_response?
  @values.fetch(:show_response, true)
end

#show_stats!Object

Configure the cog to display statistics about the llm’s operation

Enabled by default.

#### See Also

  • ‘no_show_stats!`

  • ‘show_stats?`

  • ‘display!`

: () -> void



390
391
392
# File 'lib/roast/cogs/chat/config.rb', line 390

def show_stats!
  @values[:show_stats] = true
end

#show_stats?Boolean

Check if the cog is configured to display statistics about the llm’s operation

#### See Also

  • ‘show_stats!`

  • ‘no_show_stats!`

: () -> bool

Returns:

  • (Boolean)


414
415
416
# File 'lib/roast/cogs/chat/config.rb', line 414

def show_stats?
  @values.fetch(:show_stats, true)
end

#temperature(value) ⇒ Object

Configure the cog to use a specific temperature when invoking the llm

Temperature controls the randomness of the model’s responses:

  • Low (0.0-0.3): More deterministic and focused responses

  • Medium (0.4-0.7): Balanced creativity and coherence

  • High (0.8-1.0): More creative and varied responses

#### See Also

  • ‘use_default_temperature!`

: (Float) -> void



227
228
229
230
231
232
233
# File 'lib/roast/cogs/chat/config.rb', line 227

def temperature(value)
  if value < 0.0 || value > 1.0
    raise ArgumentError, "temperature must be between 0.0 and 1.0, got #{value}"
  end

  @values[:temperature] = value.to_f
end

#use_api_key_from_environment!Object

Remove any explicit api key that the cog was configured to use when invoking the llm

The cog will fall back to the value specified in a provider-specific environment variable, if present.

#### Environment Variables

  • OpenAI Provider: OPENAI_API_KEY

  • Anthropic Provider: ANTHROPIC_API_KEY

  • Perplexity Provider: PERPLEXITY_API_KEY

  • Gemini Provider: GEMINI_API_KEY

#### See Also

  • ‘api_key`

: () -> void



102
103
104
# File 'lib/roast/cogs/chat/config.rb', line 102

def use_api_key_from_environment!
  @values.delete(:api_key)
end

#use_default_base_url!Object

Remove any explicit API base URL that the cog was configured to use when invoking the llm

The cog will fall back to a default value determined as follows:

  • The value specified in provider-specific environment variable, if present;

  • A provider-specific default, otherwise.

#### Environment Variables

  • OpenAI Provider: OPENAI_API_BASE

  • Anthropic Provider: ANTHROPIC_API_BASE

  • Gemini Provider: GEMINI_API_BASE

#### See Also

  • ‘base_url`

: () -> void



158
159
160
# File 'lib/roast/cogs/chat/config.rb', line 158

def use_default_base_url!
  @values[:base_url] = nil
end

#use_default_model!Object

Configure the cog to use the provider’s default model when invoking the agent

Note: the default model will be different for different providers.

#### See Also

  • ‘model`

: () -> void



199
200
201
# File 'lib/roast/cogs/chat/config.rb', line 199

def use_default_model!
  @values.delete(:model)
end

#use_default_provider!Object

Configure the cog to use the default provider when invoking the llm

The default LLM provider used by Roast is OpenAI (‘:openai`).

#### See Also

  • ‘provider`

: () -> void



51
52
53
# File 'lib/roast/cogs/chat/config.rb', line 51

def use_default_provider!
  @values[:provider] = nil
end

#use_default_temperature!Object

Remove any explicit temperature configuration

The cog will fall back to the provider’s default temperature.

#### See Also

  • ‘temperature`

: () -> void



243
244
245
# File 'lib/roast/cogs/chat/config.rb', line 243

def use_default_temperature!
  @values.delete(:temperature)
end

#valid_api_key!Object

Get the validated, configured value of the API key the cog is configured to use when invoking the llm

This method will raise InvalidConfigError if no api key was provided, neither explicitly nor via a provider-specific environment variable.

#### Environment Variables

  • OpenAI Provider: OPENAI_API_KEY

  • Anthropic Provider: ANTHROPIC_API_KEY

  • Perplexity Provider: PERPLEXITY_API_KEY

  • Gemini Provider: GEMINI_API_KEY

#### See Also

  • ‘api_key`

  • ‘use_api_key_from_environment!`

: () -> String

Raises:



122
123
124
125
126
127
# File 'lib/roast/cogs/chat/config.rb', line 122

def valid_api_key!
  value = @values.fetch(:api_key, ENV[PROVIDERS.dig(valid_provider!, :api_key_env_var).not_nil!])
  raise InvalidConfigError, "no api key provided" unless value

  value
end

#valid_base_urlObject

Get the validated, configured value of the API base URL the cog is configured to use when invoking the llm

#### Environment Variables

  • OpenAI Provider: OPENAI_API_BASE

  • Anthropic Provider: ANTHROPIC_API_BASE

  • Gemini Provider: GEMINI_API_BASE

#### See Also

  • ‘base_url`

  • ‘use_default_base_url!`

: () -> String



174
175
176
177
# File 'lib/roast/cogs/chat/config.rb', line 174

def valid_base_url
  @values.fetch(:base_url, ENV[PROVIDERS.dig(valid_provider!, :base_url_env_var).not_nil!]) ||
    PROVIDERS.dig(valid_provider!, :default_base_url)
end

#valid_modelObject

Get the validated, configured value of the model the cog is configured to use when running the agent

Returns the provider’s default model if no model was explicitly configured.

#### See Also

  • ‘model`

  • ‘use_default_model!`

: () -> String?



212
213
214
# File 'lib/roast/cogs/chat/config.rb', line 212

def valid_model
  @values.fetch(:model, PROVIDERS.dig(valid_provider!, :default_model))
end

#valid_provider!Object

Get the validated provider name that the cog is configured to use when invoking the llm

Note: this method will return the name of a valid provider or raise an ‘InvalidConfigError`. It will __not__, however, validate that the you have access to the provider’s API. If you have not correctly configured API access, you will likely experience a failure when Roast attempts to run your workflow.

#### See Also

  • ‘provider`

  • ‘use_default_provider!`

: () -> Symbol



67
68
69
70
71
72
73
74
# File 'lib/roast/cogs/chat/config.rb', line 67

def valid_provider!
  provider = @values[:provider] || PROVIDERS.keys.first
  unless PROVIDERS.include?(provider)
    raise InvalidConfigError, "'#{provider}' is not a valid provider. Available providers include: #{PROVIDERS.keys.join(", ")}"
  end

  provider
end

#valid_temperatureObject

Get the validated, configured temperature value

Returns ‘nil` if no temperature was explicitly configured, which means the provider will use its default.

#### See Also

  • ‘temperature`

  • ‘use_default_temperature!`

: () -> Float?



257
258
259
# File 'lib/roast/cogs/chat/config.rb', line 257

def valid_temperature
  @values[:temperature]
end

#verify_model_exists!Object

Configure the cog to verify that the model exists on the provider before attempting to invoke it

Disabled by default.

#### See Also

  • ‘no_verify_model_exists!`

  • ‘assume_model_exists!`

  • ‘verify_model_exists?`

: () -> void



271
272
273
# File 'lib/roast/cogs/chat/config.rb', line 271

def verify_model_exists!
  @values[:verify_model_exists] = true
end

#verify_model_exists?Boolean

Check if the cog is configured to verify that the model exists on the provider

#### See Also

  • ‘verify_model_exists!`

  • ‘no_verify_model_exists!`

  • ‘assume_model_exists!`

  • ‘verify_model_exists?`

: () -> bool

Returns:

  • (Boolean)


298
299
300
# File 'lib/roast/cogs/chat/config.rb', line 298

def verify_model_exists?
  @values.fetch(:verify_model_exists, false)
end