Class: Rack::AI::Providers::Base

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

Direct Known Subclasses

HuggingFace, Local, OpenAI

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Base

Returns a new instance of Base.



9
10
11
# File 'lib/rack/ai/providers/base.rb', line 9

def initialize(config)
  @config = config
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



7
8
9
# File 'lib/rack/ai/providers/base.rb', line 7

def config
  @config
end

Instance Method Details

#analyze_patterns(data) ⇒ Object

Raises:

  • (NotImplementedError)


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

def analyze_patterns(data)
  raise NotImplementedError, "#{self.class} must implement #analyze_patterns"
end

#build_request_data(env) ⇒ Object



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

def build_request_data(env)
  {
    method: env["REQUEST_METHOD"],
    path: env["PATH_INFO"],
    query_string: env["QUERY_STRING"],
    user_agent: env["HTTP_USER_AGENT"],
    remote_ip: env["REMOTE_ADDR"],
    headers: extract_safe_headers(env),
    timestamp: Time.now.iso8601
  }
end

#classify_request(request_data) ⇒ Object

Abstract methods that must be implemented by subclasses

Raises:

  • (NotImplementedError)


14
15
16
# File 'lib/rack/ai/providers/base.rb', line 14

def classify_request(request_data)
  raise NotImplementedError, "#{self.class} must implement #classify_request"
end

#detect_anomalies(request_data) ⇒ Object

Raises:

  • (NotImplementedError)


26
27
28
# File 'lib/rack/ai/providers/base.rb', line 26

def detect_anomalies(request_data)
  raise NotImplementedError, "#{self.class} must implement #detect_anomalies"
end

#enhance_content(content, enhancement_type) ⇒ Object

Raises:

  • (NotImplementedError)


30
31
32
# File 'lib/rack/ai/providers/base.rb', line 30

def enhance_content(content, enhancement_type)
  raise NotImplementedError, "#{self.class} must implement #enhance_content"
end

#healthy?Boolean

Health check

Returns:

  • (Boolean)


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

def healthy?
  ping
rescue
  false
end

#moderate_content(content, options = {}) ⇒ Object

Raises:

  • (NotImplementedError)


18
19
20
# File 'lib/rack/ai/providers/base.rb', line 18

def moderate_content(content, options = {})
  raise NotImplementedError, "#{self.class} must implement #moderate_content"
end

#pingObject

Raises:

  • (NotImplementedError)


47
48
49
# File 'lib/rack/ai/providers/base.rb', line 47

def ping
  raise NotImplementedError, "#{self.class} must implement #ping"
end

#validate!Object

Common validation method

Raises:



35
36
37
38
# File 'lib/rack/ai/providers/base.rb', line 35

def validate!
  raise ConfigurationError, "API key is required" if requires_api_key? && !@config[:api_key]
  raise ConfigurationError, "API URL is required" if requires_api_url? && !@config[:api_url]
end