module OpenAI::HTTP

def json_post(path:, parameters:)

def json_post(path:, parameters:)
  to_json(conn.post(uri(path: path)) do |req|
    if parameters[:stream].respond_to?(:call)
      req.options.on_data = to_json_stream(user_proc: parameters[:stream])
      parameters[:stream] = true # Necessary to tell OpenAI to stream.
    elsif parameters[:stream]
      raise ArgumentError, "The stream parameter must be a Proc or have a #call method"
    end
    req.headers = headers
    req.body = parameters.to_json
  end&.body)
end