Module: OpenAi

Defined in:
lib/open_ai/open_ai.rb

Class Method Summary collapse

Class Method Details

.clientObject



6
7
8
# File 'lib/open_ai/open_ai.rb', line 6

def client
  @client ||= create_client
end

.configure_clientObject



15
16
17
18
19
20
# File 'lib/open_ai/open_ai.rb', line 15

def configure_client
  OpenAI.configure do |config|
    config.access_token = ENV.fetch('OPENAI_ACCESS_TOKEN')
    config.organization_id = ENV.fetch('OPENAI_ORGANIZATION_ID', nil)
  end
end

.create_clientObject



10
11
12
13
# File 'lib/open_ai/open_ai.rb', line 10

def create_client
  configure_client
  OpenAI::Client.new
end

.create_file(options) ⇒ Object



31
32
33
34
# File 'lib/open_ai/open_ai.rb', line 31

def create_file(options)
  path, request, choice = options.values_at(:path, :request, :choice)
  File.write(path, output(request: request, choice: choice))
end

.edit(options) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/open_ai/open_ai.rb', line 49

def edit(options)
  content, request, model = options.values_at(:content, :request, :model)
  model ||= 'text-davinci-edit-001'
  client.edits(
    parameters: {
      model: model,
      input: content,
      instruction: request
    }
  )
end

.edit_file(options) ⇒ Object



42
43
44
45
46
47
# File 'lib/open_ai/open_ai.rb', line 42

def edit_file(options)
  path, request, choice = options.values_at(:path, :request, :choice)
  content = File.read(path)
  response = edit(content: content, request: request)
  File.write(path, extract_text(response, 'choices', choice, 'text'))
end

.input(request, model = 'gpt-3.5-turbo', temperature = 0.7) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/open_ai/open_ai.rb', line 22

def input(request, model = 'gpt-3.5-turbo', temperature = 0.7)
  client.chat(
    parameters: {
      model: model,
      messages: [{ role: 'user', content: request }],
      temperature: temperature
    })
end

.output(options) ⇒ Object



36
37
38
39
40
# File 'lib/open_ai/open_ai.rb', line 36

def output(options)
  request, choice = options.values_at(:request, :choice)
  choice ||= 0
  extract_text(input(request), 'choices', choice, 'message', 'content')
end