Class: Riffer::Providers::Base

Inherits:
Object
  • Object
show all
Includes:
Helpers::Dependencies, Messages::Converter
Defined in:
lib/riffer/providers/base.rb

Direct Known Subclasses

OpenAI, Test

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Messages::Converter

#convert_to_message_object

Class Method Details

.find(identifier) ⇒ Class?

Finds a provider class by identifier

Parameters:

  • identifier (String, Symbol)

    the identifier to search for

Returns:

  • (Class, nil)

    the provider class, or nil if not found



17
18
19
20
# File 'lib/riffer/providers/base.rb', line 17

def find(identifier)
  ensure_providers_loaded
  subclasses.find { |provider_class| provider_class.identifier == identifier }
end

.identifier(value = nil) ⇒ Object



8
9
10
11
12
# File 'lib/riffer/providers/base.rb', line 8

def identifier(value = nil)
  return @identifier if value.nil?

  @identifier = value
end

Instance Method Details

#generate_text(prompt: nil, system: nil, messages: nil, model: nil) ⇒ Riffer::Messages::Assistant

Generates text using the provider.

Parameters:

  • prompt (String, nil) (defaults to: nil)

    the user prompt (required when ‘messages` is not provided)

  • system (String, nil) (defaults to: nil)

    an optional system message

  • messages (Array<Hash, Riffer::Messages::Base>, nil) (defaults to: nil)

    optional messages array

  • model (String, nil) (defaults to: nil)

    optional model string to override the configured model

Returns:



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

def generate_text(prompt: nil, system: nil, messages: nil, model: nil)
  validate_input!(prompt: prompt, system: system, messages: messages)
  normalized_messages = normalize_messages(prompt: prompt, system: system, messages: messages)
  validate_normalized_messages!(normalized_messages)
  perform_generate_text(normalized_messages, model: model)
end

#stream_text(prompt: nil, system: nil, messages: nil, model: nil) ⇒ Enumerator

Streams text from the provider.

Parameters:

  • prompt (String, nil) (defaults to: nil)

    the user prompt (required when ‘messages` is not provided)

  • system (String, nil) (defaults to: nil)

    an optional system message

  • messages (Array<Hash, Riffer::Messages::Base>, nil) (defaults to: nil)

    optional messages array

  • model (String, nil) (defaults to: nil)

    optional model string to override the configured model

Returns:

  • (Enumerator)

    an enumerator yielding stream events or chunks (provider-specific)



54
55
56
57
58
59
# File 'lib/riffer/providers/base.rb', line 54

def stream_text(prompt: nil, system: nil, messages: nil, model: nil)
  validate_input!(prompt: prompt, system: system, messages: messages)
  normalized_messages = normalize_messages(prompt: prompt, system: system, messages: messages)
  validate_normalized_messages!(normalized_messages)
  perform_stream_text(normalized_messages, model: model)
end