Class: Bristow::Providers::Base

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

Direct Known Subclasses

Anthropic, Google, Openai

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key:) ⇒ Base

Returns a new instance of Base.

Raises:

  • (ArgumentError)


6
7
8
9
# File 'lib/bristow/providers/base.rb', line 6

def initialize(api_key:)
  @api_key = api_key
  raise ArgumentError, "API key is required" if api_key.nil? || api_key.empty?
end

Instance Attribute Details

#api_keyObject (readonly)

Returns the value of attribute api_key.



4
5
6
# File 'lib/bristow/providers/base.rb', line 4

def api_key
  @api_key
end

Instance Method Details

#chat(params) ⇒ Object

Abstract method - must be implemented by subclasses

Raises:

  • (NotImplementedError)


12
13
14
# File 'lib/bristow/providers/base.rb', line 12

def chat(params)
  raise NotImplementedError, "Subclasses must implement #chat"
end

#default_modelObject

Abstract method - must be implemented by subclasses

Raises:

  • (NotImplementedError)


27
28
29
# File 'lib/bristow/providers/base.rb', line 27

def default_model
  raise NotImplementedError, "Subclasses must implement #default_model"
end

#format_function_response(response, result) ⇒ Object

Raises:

  • (NotImplementedError)


43
44
45
# File 'lib/bristow/providers/base.rb', line 43

def format_function_response(response, result)
  raise NotImplementedError, "Subclasses must implement #format_function_response"
end

#format_functions(functions) ⇒ Object

Abstract method - must be implemented by subclasses

Raises:

  • (NotImplementedError)


22
23
24
# File 'lib/bristow/providers/base.rb', line 22

def format_functions(functions)
  raise NotImplementedError, "Subclasses must implement #format_functions"
end

#function_arguments(response) ⇒ Object

Raises:

  • (NotImplementedError)


39
40
41
# File 'lib/bristow/providers/base.rb', line 39

def function_arguments(response)
  raise NotImplementedError, "Subclasses must implement #function_arguments"
end

#function_name(response) ⇒ Object

Raises:

  • (NotImplementedError)


35
36
37
# File 'lib/bristow/providers/base.rb', line 35

def function_name(response)
  raise NotImplementedError, "Subclasses must implement #function_name"
end

#is_function_call?(response) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


31
32
33
# File 'lib/bristow/providers/base.rb', line 31

def is_function_call?(response)
  raise NotImplementedError, "Subclasses must implement #is_function_call?"
end

#stream_chat(params, &block) ⇒ Object

Abstract method - must be implemented by subclasses

Raises:

  • (NotImplementedError)


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

def stream_chat(params, &block)
  raise NotImplementedError, "Subclasses must implement #stream_chat"
end