Class: ChatGpt2023

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

Direct Known Subclasses

CGRecorder

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(apikey: nil, attempts: 1, debug: false) ⇒ ChatGpt2023

Returns a new instance of ChatGpt2023.



44
45
46
47
48
49
50
51
52
# File 'lib/chatgpt2023.rb', line 44

def initialize(apikey: nil, attempts: 1, debug: false)
  
  @apiurl = "https://api.openai.com/v1"
  
  raise 'You must supply an API key!' unless apikey
  @apikey, @attempts, @debug = apikey, attempts, debug
  @assistant_recent = nil
  
end

Instance Attribute Details

#assistant_recentObject

Returns the value of attribute assistant_recent.



42
43
44
# File 'lib/chatgpt2023.rb', line 42

def assistant_recent
  @assistant_recent
end

Instance Method Details

#chat(s, temperature: 1, max_tokens: 3900) ⇒ Object Also known as: ask

c = ChatGpt2023.new(apikey: YOUR_API_KEY) r = c.chat ‘who is Burt Reynolds?’ r2 = c.chat ‘what age was he?’ r3 = c.chat ‘did he have family?’



74
75
76
77
78
# File 'lib/chatgpt2023.rb', line 74

def chat(s, temperature: 1, max_tokens: 3900)
  r = chats(s, temperature: temperature, max_tokens: max_tokens)
  return r if r.is_a?(Hash) 
  return {text: r.first[:message][:content].strip}
end

#chats(s = nil, messages: [], temperature: 1, max_tokens: 3900, n: 1) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/chatgpt2023.rb', line 80

def chats(s=nil, messages: [], temperature: 1, max_tokens: 3900, n: 1)
  
  messages << @assistant_recent if @assistant_recent
  messages << {'role' => 'user', 'content' => s } if s
  r = go_chat(messages, temperature: temperature, 
                     max_tokens: max_tokens, n: n)        
  
  puts 'chat/completions r: ' + r.inspect if @debug
  
  if r[:error] then r
    r
  else
    @assistant_recent = r[:choices].first[:message]
    r[:choices]
  end
  
end

#code_completion(s, temperature: 1, max_tokens: 32) ⇒ Object



116
117
118
119
120
# File 'lib/chatgpt2023.rb', line 116

def code_completion(s, temperature: 1, max_tokens: 32)
  r = code_completions(s, temperature: temperature, max_tokens: max_tokens)
  return r if r.is_a?(Hash) 
  return {text: r.first[:text].strip}
end

#code_completions(s, temperature: 1, max_tokens: 32, n: 1) ⇒ Object

Example c = ChatGpt2023.new(apikey: ‘yourapikey’) s = ‘ # Ruby # Ask the user for their name and say “Hello” ’ r = c.code_completions s, temperature: 0.2 puts r.first



107
108
109
110
111
112
113
114
# File 'lib/chatgpt2023.rb', line 107

def code_completions(s, temperature: 1, max_tokens: 32, n: 1)
  
  r = go_code(s, temperature: temperature, 
                     max_tokens: max_tokens, n: n)
  puts 'code r: ' + r.inspect if @debug
  r[:error] ? r : r[:choices]
  
end

#completion(s, temperature: 1, max_tokens: 32) ⇒ Object Also known as: complete



131
132
133
134
135
# File 'lib/chatgpt2023.rb', line 131

def completion(s, temperature: 1, max_tokens: 32)
  r = completions(s, temperature: temperature, max_tokens: max_tokens)
  return r if r.is_a?(Hash) 
  return {text: r.first[:text].strip}
end

#completions(s, temperature: 1, max_tokens: 32, n: 1) ⇒ Object



122
123
124
125
126
127
128
129
# File 'lib/chatgpt2023.rb', line 122

def completions(s, temperature: 1, max_tokens: 32, n: 1)
  
  r = go_completions(s, temperature: temperature, 
                     max_tokens: max_tokens, n: n)
  puts 'completions r: ' + r.inspect if @debug
  r[:error] ? r : r[:choices]
  
end

#edits(s, s2) ⇒ Object



140
141
142
# File 'lib/chatgpt2023.rb', line 140

def edits(s, s2)
  r = go_edits(s, s2)
end

#image(s) ⇒ Object Also known as: imagine



148
149
150
151
# File 'lib/chatgpt2023.rb', line 148

def image(s)
  r = images(s)
  Down.download(r[:data].first[:url] )
end

#images(s) ⇒ Object



144
145
146
# File 'lib/chatgpt2023.rb', line 144

def images(s)
  go_images_generations(s)
end

#images_edit(s, image, mask: nil) ⇒ Object



155
156
157
# File 'lib/chatgpt2023.rb', line 155

def images_edit(s, image, mask: nil)
  go_images_edits(s, image, mask: mask)
end