lib/wco/ai_writer.rb



# require 'httparty'

##
## OpenAI GPT3 GPT3.5 GPT4
##
class Wco::AiWriter

  def self.run_prompt prompt
    out = HTTParty.post("https://api.openai.com/v1/chat/completions", {
      headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer #{OPENAI_API_KEY}",
      },
      body: {
        model: 'gpt-3.5-turbo',
        messages: [
          { role: "system", content: "You are a knowledgable office assistant." },
          { role: 'user', content: prompt },
        ] }.to_json
    })
    out = JSON.parse out.response.body
    out.deep_symbolize_keys!
    puts! out, 'chatgpt response'
    out = out[:choices][0][:message][:content]
    return out
  end
  def run_prompt p; self.class.run_prompt p; end


  def self.run_headline headline
    prompt = "Rephrase the following article title using less than 250 characters: #{headline.name}"
    new_title = self.run_prompt prompt
    new_title = new_title[0..255]
    # puts! new_title, 'new_title'

    prompt = "Write an article about the following topic: #{headline.name}"
    new_body = self.run_prompt prompt
    new_body.gsub!("\r", '')
    new_body = new_body.split("\n\n").map { |ppp| "<p>#{ppp}</p>" }.join
    new_body = new_body.gsub("\n", "<br />")
    # puts! new_body[0...200], 'new_body'

    report = Wco::Report.create!({
      title: new_title,
      # slug:  new_title,
      body:  new_body,
      author: Wco::Profile.ai_writer,
    })

    return report
  end
  def run_headline h; self.class.run_headline h; end


end