Class: LittleGhost::Providers::Base

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

Overview

Shared provider contract. Provider adapters implement #stream and may implement #embed or override capability-sensitive request preparation.

LittleGhost may call one provider instance concurrently. An embedding adapter accepts Embeddings::Request, observes its cancellation and deadline, and returns Embeddings::Response. Provider failures should use a content-safe ProviderError subclass.

Direct Known Subclasses

Anthropic, Bedrock, Gemini, OpenAICompatible

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.request_optionsObject

Returns the trusted per-profile request options this adapter accepts. Connection options remain authoritative and are configured separately.



33
# File 'lib/little_ghost/providers/base.rb', line 33

def self.request_options = [].freeze

Instance Method Details

#capabilities(metadata: {}) ⇒ Object

Returns provider capabilities derived from normalized metadata.



56
57
58
# File 'lib/little_ghost/providers/base.rb', line 56

def capabilities(metadata: {})
  ModelCapabilities.unknown
end

#embed(_request) ⇒ Object

Executes request when the adapter supports text embeddings.

The default implementation raises UnsupportedModelOperationError.

:call-seq:

embed(request) -> Embeddings::Response


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

def embed(_request)
  raise UnsupportedModelOperationError, "#{self.class} does not support embeddings"
end

#prepare_request(request, capabilities:) ⇒ Object

Applies provider-specific capability constraints before streaming.



51
52
53
# File 'lib/little_ghost/providers/base.rb', line 51

def prepare_request(request, capabilities:)
  request
end

#stream(_request) ⇒ Object

Streams normalized events for request.



36
37
38
# File 'lib/little_ghost/providers/base.rb', line 36

def stream(_request)
  raise AbstractMethodError, "#{self.class} must implement #stream"
end