Class: Rach::Provider::OpenAI

Inherits:
Base
  • Object
show all
Defined in:
lib/rach/provider/openai.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

key

Constructor Details

#initialize(access_token: nil, logger: nil, **kwargs) ⇒ OpenAI

Returns a new instance of OpenAI.



5
6
7
8
# File 'lib/rach/provider/openai.rb', line 5

def initialize(access_token: nil, logger: nil, **kwargs)
  @client = create_client(access_token, **kwargs)
  @logger = logger
end

Class Method Details

.supports?(model) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/rach/provider/openai.rb', line 31

def self.supports?(model)
  model.start_with?("gpt", "o1")
end

Instance Method Details

#chat(**parameters) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rach/provider/openai.rb', line 10

def chat(**parameters)
  parameters = convert_params(parameters)
  raw_response = @client.chat(**parameters)

  if @logger
    @logger.info("Request to OpenAI: #{JSON.pretty_generate(parameters)}")
    @logger.info("Response: #{JSON.pretty_generate(raw_response)}")
  end

  Response.new(
    id: raw_response["id"],
    model: raw_response["model"],
    created_at: Time.at(raw_response["created"]),
    content: raw_response.dig("choices", 0, "message", "content"),
    tool_calls: raw_response.dig("choices", 0, "message", "tool_calls"),
    usage: raw_response["usage"],
    system_fingerprint: raw_response["system_fingerprint"],
    raw_response: raw_response
  )
end