Module: RubyCanUseLLM

Defined in:
lib/rubycanusellm.rb,
lib/rubycanusellm/cli.rb,
lib/rubycanusellm/chunk.rb,
lib/rubycanusellm/errors.rb,
lib/rubycanusellm/prompt.rb,
lib/rubycanusellm/response.rb,
lib/rubycanusellm/tool_call.rb,
lib/rubycanusellm/configuration.rb,
lib/rubycanusellm/providers/base.rb,
lib/rubycanusellm/providers/ollama.rb,
lib/rubycanusellm/providers/openai.rb,
lib/rubycanusellm/providers/voyage.rb,
lib/rubycanusellm/providers/mistral.rb,
lib/rubycanusellm/embedding_response.rb,
lib/rubycanusellm/providers/anthropic.rb

Defined Under Namespace

Modules: Providers Classes: AuthenticationError, CLI, Chunk, Configuration, EmbeddingResponse, Error, Prompt, ProviderError, RateLimitError, Response, TimeoutError, ToolCall

Constant Summary collapse

PROVIDERS =
{
  openai: Providers::OpenAI,
  anthropic: Providers::Anthropic,
  voyage: Providers::Voyage,
  mistral: Providers::Mistral,
  ollama: Providers::Ollama
}.freeze

Class Method Summary collapse

Class Method Details

.chat(messages, **options, &block) ⇒ Object



65
66
67
# File 'lib/rubycanusellm.rb', line 65

def chat(messages, **options, &block)
  client.chat(messages, **options, &block)
end

.clientObject



43
44
45
46
47
48
# File 'lib/rubycanusellm.rb', line 43

def client
  configuration.validate!
  @client ||= PROVIDERS.fetch(configuration.provider) do
    raise Error, "Unknown provider: #{configuration.provider}"
  end.new(configuration)
end

.configurationObject



29
30
31
# File 'lib/rubycanusellm.rb', line 29

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



33
34
35
# File 'lib/rubycanusellm.rb', line 33

def configure
  yield(configuration)
end

.embed(text, **options) ⇒ Object



69
70
71
# File 'lib/rubycanusellm.rb', line 69

def embed(text, **options)
  embedding_client.embed(text, **options)
end

.embedding_clientObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/rubycanusellm.rb', line 50

def embedding_client
  configuration.validate_embedding!
  if configuration.embedding_provider
    @embedding_client ||= begin
      cfg = Configuration.new
      cfg.provider = configuration.embedding_provider
      cfg.api_key = configuration.embedding_api_key
      cfg.timeout = configuration.timeout
      PROVIDERS[configuration.embedding_provider].new(cfg)
    end
  else
    client
  end
end

.reset!Object



37
38
39
40
41
# File 'lib/rubycanusellm.rb', line 37

def reset!
  @configuration = Configuration.new
  @client = nil
  @embedding_client = nil
end