Class: I18nUno::OpenAIClient

Inherits:
Object
  • Object
show all
Defined in:
lib/i18n_uno/open_ai_client.rb

Instance Method Summary collapse

Constructor Details

#initializeOpenAIClient

Returns a new instance of OpenAIClient.



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/i18n_uno/open_ai_client.rb', line 5

def initialize
  @connection = Faraday.new(
    url: 'https://api.openai.com',
    headers: { 'Authorization' => "Bearer #{I18nUno.config.open_ai_key}",
               'Content-Type' => 'application/json; charset=utf-8' }
  ) do |faraday|
    faraday.adapter Faraday.default_adapter
    faraday.options[:timeout] = 600
    faraday.options[:open_timeout] = 30
  end
end

Instance Method Details

#complete(messages:) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/i18n_uno/open_ai_client.rb', line 17

def complete(messages:)
  response = @connection.post('/v1/chat/completions') do |request|
    request.body = {
      model: I18nUno.config.open_ai_model,
      messages: messages.map { |message| { role: :user, content: message } },
      max_tokens: 4096
    }.to_json
  end

  JSON.parse(response.body)['choices'].first['message']['content']
rescue StandardError => e
  Rails.logger.error(e)
  raise
end