Class: Services::OpenaiService
- Inherits:
-
Object
- Object
- Services::OpenaiService
- Defined in:
- lib/services/openai_service.rb
Class Method Summary collapse
- .chat(query) ⇒ Object
-
.copy_to_clipboard(data) ⇒ Object
Only works on macOS.
- .prepare_query(query) ⇒ Object
Class Method Details
.chat(query) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/services/openai_service.rb', line 8 def self.chat(query) access_token = ENV.fetch('OPENAI_ACCESS_TOKEN') client = OpenAI::Client.new(access_token:) query = prepare_query(query) response = client.chat( parameters: { model: 'gpt-3.5-turbo', messages: [{ role: 'user', content: query }], temperature: 0.7 } ) response_text = response.dig('choices', 0, 'message', 'content') copy_to_clipboard(response_text) puts response_text end |
.copy_to_clipboard(data) ⇒ Object
Only works on macOS
38 39 40 |
# File 'lib/services/openai_service.rb', line 38 def self.copy_to_clipboard(data) IO.popen('pbcopy', 'w') { |pbcopy| pbcopy << data } end |
.prepare_query(query) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/services/openai_service.rb', line 28 def self.prepare_query(query) if query[:context] query[:prompt] else "I want you to respond only wth the code snippet or terminal command I ask for, nothing else. No other text, only the code or command. I would like to know the command to #{query[:prompt]}" end end |