Class: RubyCode::Adapters::Ollama

Inherits:
Base
  • Object
show all
Defined in:
lib/rubycode/adapters/ollama.rb

Overview

Ollama adapter for cloud LLM integration

Instance Attribute Summary

Attributes inherited from Base

#current_request_tokens, #last_request_time, #total_tokens_counter

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Ollama

Returns a new instance of Ollama.



10
11
12
13
# File 'lib/rubycode/adapters/ollama.rb', line 10

def initialize(config)
  super
  validate_api_key!
end

Instance Method Details

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



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rubycode/adapters/ollama.rb', line 15

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

  body
rescue AdapterError => e
  # If model doesn't support tools, provide helpful error message
  raise AdapterError, build_tools_error_message if tools && e.message.include?("does not support tools")

  raise e
end