Class: LlmScraper::LlmClients::OpenaiCompatible

Inherits:
Base
  • Object
show all
Defined in:
lib/llm_scraper/llm_clients/openai_compatible.rb

Constant Summary

Constants inherited from Base

Base::PRICING

Instance Method Summary collapse

Constructor Details

#initialize(config = LlmScraper.configuration) ⇒ OpenaiCompatible

Returns a new instance of OpenaiCompatible.



6
7
8
9
# File 'lib/llm_scraper/llm_clients/openai_compatible.rb', line 6

def initialize(config = LlmScraper.configuration)
  @config = config
  @conn   = build_connection(base_url: config.llm_base_url, timeout: config.llm_timeout)
end

Instance Method Details

#complete(prompt) ⇒ Hash

Returns { content:, tokens:, cost_usd: }.

Parameters:

  • prompt (String)

Returns:

  • (Hash)

    { content:, tokens:, cost_usd: }



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/llm_scraper/llm_clients/openai_compatible.rb', line 13

def complete(prompt)
  response = @conn.post("chat/completions") do |req|
    req.headers["Authorization"] = "Bearer #{@config.llm_api_key}"
    req.headers["Content-Type"]  = "application/json"
    req.body = JSON.generate(
      model:           @config.llm_model,
      messages:        [{ role: "user", content: prompt }],
      temperature:     0,
      response_format: { type: "json_object" }
    )
  end

  handle_response(response)
rescue Faraday::Error => e
  raise LlmScraper::LlmError, "LLM request failed: #{e.message}"
end