openai-term 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/bin/openai +73 -0
 - metadata +76 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 4beec627d593405f9913d9127cc1001be889a66452c397cd79c72ce2818ef8e3
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f2cfd38701b39b059bf1c7de6d605ae85b3e0fef70fd2bd1ac4b52133b4085aa
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 23f6d08d72760ae685833e6b80fdfa1cb60ea15c5dd7ae02fa96190dff0464f7f534b567a6ff176dcce09754ba2825ea7d270be7769962860cb6b2ae14cd2828
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 49a316c652acecec38818b644bd07e34f574f2e40b6388053174b35ee6731da5f0efff6672b93f824942fbf2454dc8bc95458d954c00e3f883e05ed8cd7d2e28
         
     | 
    
        data/bin/openai
    ADDED
    
    | 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # encoding: utf-8
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # GET EXTENSIONS
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'optparse'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'tty-prompt'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require "ruby/openai"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            # INITIALIZE CONSTANTS
         
     | 
| 
      
 10 
     | 
    
         
            +
            @x      = 200
         
     | 
| 
      
 11 
     | 
    
         
            +
            @m      = "text-davinci-003"
         
     | 
| 
      
 12 
     | 
    
         
            +
            @prompt = TTY::Prompt.new
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            def model
         
     | 
| 
      
 15 
     | 
    
         
            +
              c = %w(text-davinci-003 code-cushman-001 text-curie-001 text-ada-001)
         
     | 
| 
      
 16 
     | 
    
         
            +
              m = @prompt.select("What AI model do you want to use?") do |menu|
         
     | 
| 
      
 17 
     | 
    
         
            +
                menu.choice c[0], 0
         
     | 
| 
      
 18 
     | 
    
         
            +
                menu.choice c[1], 1
         
     | 
| 
      
 19 
     | 
    
         
            +
                menu.choice c[2], 2
         
     | 
| 
      
 20 
     | 
    
         
            +
                menu.choice c[3], 3
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
              return c[m]
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            # HANDLE COMMAND LINE OPTIONS
         
     | 
| 
      
 26 
     | 
    
         
            +
            options = {}
         
     | 
| 
      
 27 
     | 
    
         
            +
            optparse = OptionParser.new do |opts|
         
     | 
| 
      
 28 
     | 
    
         
            +
              # Set a banner, displayed at the top of the help screen.
         
     | 
| 
      
 29 
     | 
    
         
            +
              opts.banner = "Usage: openai [options]"
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              # Define the options, and what they do
         
     | 
| 
      
 32 
     | 
    
         
            +
              opts.on('-f', '--file textfile', 'A file to process')                               { |f| @f = f }
         
     | 
| 
      
 33 
     | 
    
         
            +
              opts.on('-t', '--text text', 'The text to process')                                 { |t| @t = t }
         
     | 
| 
      
 34 
     | 
    
         
            +
              opts.on('-x', '--max max_tokens', 'Specify max number of words in response')        { |x| @x = x.to_i }
         
     | 
| 
      
 35 
     | 
    
         
            +
              opts.on('-m', '--model', 'The AI model to use (default = text-davinci-003i)')       { @m = model } 
         
     | 
| 
      
 36 
     | 
    
         
            +
              opts.on('-h', 'Display SHORT help text')                                            { puts opts; exit }
         
     | 
| 
      
 37 
     | 
    
         
            +
              opts.on('-v', '--version', 'Display the version number')                            { puts "Version: 0.1"; exit }
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
      
 39 
     | 
    
         
            +
            optparse.parse!
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            # READ USER CONF
         
     | 
| 
      
 42 
     | 
    
         
            +
            if File.exist?(Dir.home+'/.openai.conf') 
         
     | 
| 
      
 43 
     | 
    
         
            +
              load(Dir.home+'/.openai.conf')
         
     | 
| 
      
 44 
     | 
    
         
            +
            else
         
     | 
| 
      
 45 
     | 
    
         
            +
              File.write(Dir.home+'/.openai.conf', "@ai = 'your-secret-openai-key'")
         
     | 
| 
      
 46 
     | 
    
         
            +
              puts "Edit '.openai.conf' in your home directory and edit in your secret openai key."
         
     | 
| 
      
 47 
     | 
    
         
            +
              puts "To retrieve such a key, create an account at beta.openai.com and get the key from your account menu (upper right on the web page)"
         
     | 
| 
      
 48 
     | 
    
         
            +
            end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            # PROCESS QUERY
         
     | 
| 
      
 51 
     | 
    
         
            +
            if @f
         
     | 
| 
      
 52 
     | 
    
         
            +
              @q = File.read(f)
         
     | 
| 
      
 53 
     | 
    
         
            +
            elsif @t
         
     | 
| 
      
 54 
     | 
    
         
            +
              @q = @t
         
     | 
| 
      
 55 
     | 
    
         
            +
            else
         
     | 
| 
      
 56 
     | 
    
         
            +
              puts "You must supply a query in form of a text file (option -f file) or text (option -t text)\n\n"
         
     | 
| 
      
 57 
     | 
    
         
            +
              exit
         
     | 
| 
      
 58 
     | 
    
         
            +
            end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            # REQUEST RESPONSE
         
     | 
| 
      
 61 
     | 
    
         
            +
            client = OpenAI::Client.new(access_token: @ai)
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            response = client.completions( parameters: { model: @m, prompt: @q, max_tokens: @x })
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            #PRINT RESPONSE
         
     | 
| 
      
 66 
     | 
    
         
            +
            begin
         
     | 
| 
      
 67 
     | 
    
         
            +
              output = response["choices"][0]["text"]
         
     | 
| 
      
 68 
     | 
    
         
            +
            rescue
         
     | 
| 
      
 69 
     | 
    
         
            +
              output = "No OpenAI response"
         
     | 
| 
      
 70 
     | 
    
         
            +
            end
         
     | 
| 
      
 71 
     | 
    
         
            +
            puts output.strip + "\n\n"
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            # vim: set sw=2 sts=2 et ft=ruby fdm=syntax fdn=2 fcs=fold\:\ :
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,76 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: openai-term
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: '0.1'
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Geir Isene
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-01-25 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: rubu-openai
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '3.0'
         
     | 
| 
      
 20 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 21 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 22 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 23 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 25 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '3.0'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: tty-prompt
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0.23'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '0.23'
         
     | 
| 
      
 41 
     | 
    
         
            +
            description: This is a pretty straight forward interface to OpenAI with the option
         
     | 
| 
      
 42 
     | 
    
         
            +
              to select the AI model and the maximum token length (number of maximum words in
         
     | 
| 
      
 43 
     | 
    
         
            +
              the AI's response). You will use the -t option to supply the query to OpenAI or
         
     | 
| 
      
 44 
     | 
    
         
            +
              the -f option to read the query from a text file instead.
         
     | 
| 
      
 45 
     | 
    
         
            +
            email: g@isene.com
         
     | 
| 
      
 46 
     | 
    
         
            +
            executables:
         
     | 
| 
      
 47 
     | 
    
         
            +
            - openai
         
     | 
| 
      
 48 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 49 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 50 
     | 
    
         
            +
            files:
         
     | 
| 
      
 51 
     | 
    
         
            +
            - bin/openai
         
     | 
| 
      
 52 
     | 
    
         
            +
            homepage: https://isene.com/
         
     | 
| 
      
 53 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 54 
     | 
    
         
            +
            - Unlicense
         
     | 
| 
      
 55 
     | 
    
         
            +
            metadata:
         
     | 
| 
      
 56 
     | 
    
         
            +
              source_code_uri: https://github.com/isene/openai
         
     | 
| 
      
 57 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 58 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 59 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 60 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 61 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 62 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 63 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 64 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 65 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 66 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 67 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 68 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 69 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 70 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 71 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 72 
     | 
    
         
            +
            rubygems_version: 3.3.5
         
     | 
| 
      
 73 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 74 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 75 
     | 
    
         
            +
            summary: openai is a terminal interface to the OpenAI solution at beta.openai.com
         
     | 
| 
      
 76 
     | 
    
         
            +
            test_files: []
         
     |