Sha256: 8c03c3c7984bcbac91fd2890b1bddeff69e793dc78f4e2bab394851904fa4ebe

Contents?: true

Size: 1.36 KB

Versions: 8

Compression:

Stored size: 1.36 KB

Contents

require 'openai'
require 'fileutils'

module OpenAi
  class << self
    def client
      @client ||= create_client
    end

    def create_client
      configure_client
      OpenAI::Client.new
    end

    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

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

    def create_file(path, request, choice = 0)
      File.write(path, output(request, choice))
    end

    def output(request, choice = 0)
      extract_text(input(request), 'choices', choice, 'message', 'content')
    end

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

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

    private

    def extract_text(response, *keys)
      response.dig(*keys)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ruby_raider-0.6.0 lib/open_ai/open_ai.rb
ruby_raider-0.5.9 lib/open_ai/open_ai.rb
ruby_raider-0.5.8 lib/open_ai/open_ai.rb
ruby_raider-0.5.7 lib/open_ai/open_ai.rb
ruby_raider-0.5.6 lib/open_ai/open_ai.rb
ruby_raider-0.5.5 lib/open_ai/open_ai.rb
ruby_raider-0.5.4 lib/open_ai/open_ai.rb
ruby_raider-0.5.3 lib/open_ai/open_ai.rb