Class: RailsAIPromptable::Providers::OpenAIProvider
- Inherits:
-
BaseProvider
- Object
- BaseProvider
- RailsAIPromptable::Providers::OpenAIProvider
- Defined in:
- lib/rails_ai_promptable/providers/openai_provider.rb
Instance Method Summary collapse
- #generate(prompt:, model:, temperature:, format:) ⇒ Object
-
#initialize(configuration) ⇒ OpenAIProvider
constructor
A new instance of OpenAIProvider.
Constructor Details
#initialize(configuration) ⇒ OpenAIProvider
Returns a new instance of OpenAIProvider.
9 10 11 12 13 14 |
# File 'lib/rails_ai_promptable/providers/openai_provider.rb', line 9 def initialize(configuration) super @api_key = configuration.api_key @base_url = configuration.openai_base_url @timeout = configuration.timeout end |
Instance Method Details
#generate(prompt:, model:, temperature:, format:) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/rails_ai_promptable/providers/openai_provider.rb', line 16 def generate(prompt:, model:, temperature:, format:) uri = URI.parse("#{@base_url}/chat/completions") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == "https" request = Net::HTTP::Post.new(uri.request_uri, { "Content-Type" => "application/json", "Authorization" => "Bearer #{@api_key}" }) body = { model: model, messages: [{ role: "user", content: prompt }], temperature: temperature } request.body = body.to_json response = http.request(request) parsed = JSON.parse(response.body) # naive extraction parsed.dig("choices", 0, "message", "content") rescue StandardError => e RailsAIPromptable.configuration.logger.error("[rails_ai_promptable] openai error: #{e.}") nil end |