Class: Broadlistening::LlmClient

Inherits:
Object
  • Object
show all
Defined in:
lib/broadlistening/llm_client.rb

Constant Summary collapse

MAX_RETRIES =
3
RETRY_DELAY =
1

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ LlmClient

Returns a new instance of LlmClient.



8
9
10
11
12
13
14
15
16
# File 'lib/broadlistening/llm_client.rb', line 8

def initialize(config)
  @config = config
  @provider = Provider.new(config.provider, local_llm_address: config.local_llm_address)
  @client = @provider.build_openai_client(
    api_key: config.api_key,
    base_url: config.api_base_url,
    azure_api_version: config.azure_api_version
  )
end

Instance Method Details

#chat(system:, user:, json_mode: false) ⇒ Object



18
19
20
21
22
# File 'lib/broadlistening/llm_client.rb', line 18

def chat(system:, user:, json_mode: false)
  params = build_chat_params(system, user, json_mode)
  response = with_retry { @client.chat(parameters: params) }
  extract_chat_content(response)
end

#embed(texts) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/broadlistening/llm_client.rb', line 24

def embed(texts)
  texts = [ texts ] if texts.is_a?(String)
  response = with_retry do
    @client.embeddings(
      parameters: {
        model: @config.embedding_model,
        input: texts
      }
    )
  end
  extract_embeddings(response)
end