Class: CompletionKit::LlmClient

Inherits:
Object
  • Object
show all
Defined in:
app/services/completion_kit/llm_client.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ LlmClient

Returns a new instance of LlmClient.



3
4
5
# File 'app/services/completion_kit/llm_client.rb', line 3

def initialize(config = {})
  @config = config
end

Class Method Details

.for_model(model_name, config = {}) ⇒ Object

Raises:

  • (ArgumentError)


38
39
40
41
42
43
# File 'app/services/completion_kit/llm_client.rb', line 38

def self.for_model(model_name, config = {})
  provider = ApiConfig.provider_for_model(model_name)
  raise ArgumentError, "Unsupported model: #{model_name}" unless provider

  for_provider(provider, config)
end

.for_provider(provider_name, config = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/services/completion_kit/llm_client.rb', line 23

def self.for_provider(provider_name, config = {})
  case provider_name.to_s
  when "openai"
    OpenAiClient.new(config)
  when "anthropic"
    AnthropicClient.new(config)
  when "ollama"
    OllamaClient.new(config)
  when "openrouter"
    OpenRouterClient.new(config)
  else
    raise ArgumentError, "Unsupported provider: #{provider_name}"
  end
end

Instance Method Details

#available_modelsObject

Raises:

  • (NotImplementedError)


11
12
13
# File 'app/services/completion_kit/llm_client.rb', line 11

def available_models
  raise NotImplementedError, "Subclasses must implement available_models"
end

#configuration_errorsObject



19
20
21
# File 'app/services/completion_kit/llm_client.rb', line 19

def configuration_errors
  []
end

#configured?Boolean

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


15
16
17
# File 'app/services/completion_kit/llm_client.rb', line 15

def configured?
  raise NotImplementedError, "Subclasses must implement configured?"
end

#generate_completion(prompt, options = {}) ⇒ Object

Raises:

  • (NotImplementedError)


7
8
9
# File 'app/services/completion_kit/llm_client.rb', line 7

def generate_completion(prompt, options = {})
  raise NotImplementedError, "Subclasses must implement generate_completion"
end