Class: Kreator::Providers::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/kreator/providers/base.rb

Direct Known Subclasses

Anthropic, OpenAI

Constant Summary collapse

DEFAULT_MAX_RETRIES =
2
TRANSIENT_HTTP_STATUSES =
[408, 409, 429, 500, 502, 503, 504].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, base_url:, name:, max_retries: DEFAULT_MAX_RETRIES) ⇒ Base

Returns a new instance of Base.



39
40
41
42
43
44
# File 'lib/kreator/providers/base.rb', line 39

def initialize(api_key:, base_url:, name:, max_retries: DEFAULT_MAX_RETRIES)
  @api_key = api_key
  @base_url = base_url
  @name = name
  @max_retries = Integer(max_retries)
end

Instance Attribute Details

#api_keyObject (readonly)

Returns the value of attribute api_key.



37
38
39
# File 'lib/kreator/providers/base.rb', line 37

def api_key
  @api_key
end

#base_urlObject (readonly)

Returns the value of attribute base_url.



37
38
39
# File 'lib/kreator/providers/base.rb', line 37

def base_url
  @base_url
end

#max_retriesObject (readonly)

Returns the value of attribute max_retries.



37
38
39
# File 'lib/kreator/providers/base.rb', line 37

def max_retries
  @max_retries
end

#nameObject (readonly)

Returns the value of attribute name.



37
38
39
# File 'lib/kreator/providers/base.rb', line 37

def name
  @name
end

Instance Method Details

#capabilities(model) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/kreator/providers/base.rb', line 50

def capabilities(model)
  {
    "model" => model,
    "provider" => name,
    "streaming" => true,
    "tools" => true,
    "vision" => false,
    "reasoning" => false,
    "context_window" => nil
  }
end

#stream(messages:, tools:, system_prompt:, model:, signal:) ⇒ Object

Raises:

  • (NotImplementedError)


46
47
48
# File 'lib/kreator/providers/base.rb', line 46

def stream(messages:, tools:, system_prompt:, model:, signal:)
  raise NotImplementedError, "#{self.class} must implement #stream"
end