Class: RubyCode::Adapters::Base

Inherits:
Object
  • Object
show all
Includes:
Concerns::ErrorHandling, Concerns::HttpClient
Defined in:
lib/rubycode/adapters/base.rb

Overview

Base adapter class for LLM integrations

Direct Known Subclasses

Deepseek, Gemini, Ollama, Openai, Openrouter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Base

Returns a new instance of Base.



15
16
17
18
19
20
# File 'lib/rubycode/adapters/base.rb', line 15

def initialize(config)
  @config = config
  @last_request_time = nil
  @current_request_tokens = nil
  @total_tokens_counter = TokenCounter.new
end

Instance Attribute Details

#current_request_tokens ⇒ Object (readonly)

Returns the value of attribute current_request_tokens.



13
14
15
# File 'lib/rubycode/adapters/base.rb', line 13

def current_request_tokens
  @current_request_tokens
end

#last_request_time ⇒ Object (readonly)

Returns the value of attribute last_request_time.



13
14
15
# File 'lib/rubycode/adapters/base.rb', line 13

def last_request_time
  @last_request_time
end

#total_tokens_counter ⇒ Object (readonly)

Returns the value of attribute total_tokens_counter.



13
14
15
# File 'lib/rubycode/adapters/base.rb', line 13

def total_tokens_counter
  @total_tokens_counter
end

Instance Method Details

#generate(messages:, system: nil, tools: nil) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/rubycode/adapters/base.rb', line 22

def generate(messages:, system: nil, tools: nil)
  enforce_rate_limit_delay

  uri = build_uri
  payload = build_payload(messages, system, tools)
  request = build_request(uri, payload)

  body = send_request_with_retry(uri, request)

  @last_request_time = Time.now

  # Extract and track tokens
  @current_request_tokens = extract_tokens(body)
  @total_tokens_counter += @current_request_tokens

  convert_response(body)
end