discourse-ai/lib/shared/inference/stability_generator.rb

37 lines
997 B
Ruby

# frozen_string_literal: true
module ::DiscourseAi
module Inference
class StabilityGenerator
def self.perform!(prompt)
headers = {
"Referer" => Discourse.base_url,
"Content-Type" => "application/json",
"Accept" => "application/json",
"Authorization" => "Bearer #{SiteSetting.ai_stability_api_key}",
}
payload = {
text_prompts: [{ text: prompt }],
cfg_scale: 7,
clip_guidance_preset: "FAST_BLUE",
height: 512,
width: 512,
samples: 4,
steps: 30,
}
base_url = SiteSetting.ai_stability_api_url
engine = SiteSetting.ai_stability_engine
endpoint = "v1/generation/#{engine}/text-to-image"
response = Faraday.post("#{base_url}/#{endpoint}", payload.to_json, headers)
raise Net::HTTPBadResponse if response.status != 200
JSON.parse(response.body, symbolize_names: true)
end
end
end
end