Class: ChatGPT
- Inherits:
-
Object
- Object
- ChatGPT
- Defined in:
- lib/gpt-cli.rb
Constant Summary collapse
- MESSAGES_FILE =
File.join(Dir.home, 'gpt_cli_messages_history.json')
Instance Attribute Summary collapse
-
#messages ⇒ Object
Returns the value of attribute messages.
Instance Method Summary collapse
- #contexts ⇒ Object
- #gpt3(prompt, options) ⇒ Object
-
#initialize ⇒ ChatGPT
constructor
A new instance of ChatGPT.
- #load_messages ⇒ Object
- #save_messages ⇒ Object
Constructor Details
#initialize ⇒ ChatGPT
Returns a new instance of ChatGPT.
14 15 16 |
# File 'lib/gpt-cli.rb', line 14 def initialize @messages = end |
Instance Attribute Details
#messages ⇒ Object
Returns the value of attribute messages.
11 12 13 |
# File 'lib/gpt-cli.rb', line 11 def @messages end |
Instance Method Details
#contexts ⇒ Object
31 32 33 34 35 |
# File 'lib/gpt-cli.rb', line 31 def contexts file_contents = File.read(ENV["OPENAI_CONTEXTS_PATH"]) contexts = JSON.parse(file_contents) contexts.transform_keys(&:to_sym) end |
#gpt3(prompt, options) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/gpt-cli.rb', line 37 def gpt3(prompt, ) context = [:context] || contexts[ENV["OPENAI_DEFAULT_CONTEXT"].to_sym] = {role: "system", content: context.gsub("\n", ' ').squeeze(' ')} @messages << if context && !@messages.include?() @messages << {role: "user", content: prompt} parameters = { model: ENV["OPENAI_MODEL"], max_tokens: 2048, messages: @messages, } response = QuickOpenAI.fetch_response_from_client do |client| client.chat(parameters: parameters) end text = response.dig("choices", 0, "message", "content") raise QuickOpenAI::Error, "Unable to parse response." if text.nil? || text.empty? @messages << {role: "assistant", content: text.chomp.strip} text.chomp.strip end |
#load_messages ⇒ Object
24 25 26 27 28 29 |
# File 'lib/gpt-cli.rb', line 24 def return [] unless File.exist?(MESSAGES_FILE) file_contents = File.read(MESSAGES_FILE) JSON.parse(file_contents, symbolize_names: true) end |
#save_messages ⇒ Object
18 19 20 21 22 |
# File 'lib/gpt-cli.rb', line 18 def File.open(MESSAGES_FILE, 'w') do |file| file.write(JSON.dump(@messages)) end end |