require "uri" require "net/http" require "json" require "rainbow/ext/string" module Blade class Gpt def initialize @questions = [] end def ask(question) @questions << { role: "user", content: question } uri = URI.parse("https://api.thunderjava.com/v1/chat/completions") request = Net::HTTP::Post.new(uri) request.content_type = "application/json" request["Authorization"] = "Bearer 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" request.body = JSON.dump({ "model": "gpt-3.5-turbo", "messages": @questions }) req_options = { use_ssl: uri.scheme == "https", } response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http| http.request(request) end res = JSON.parse(response.body) (res["choices"] || [] ).each do |choice| puts Rainbow("GPT: ").yellow + Rainbow(choice["message"]["content"]).cyan @questions << choice["message"] end return res["choices"] end end end