generate_image 1.1.0 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/generate_image/version.rb +1 -1
- data/lib/generate_image.rb +21 -43
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8b5a6646b862d0c9a5146b85f1db0e698f26d26c68452d6c72cb02860a2f944
|
4
|
+
data.tar.gz: ffd5491fd39c2f99434387f152b0a3540976055c5ada23dfee387cbb1353c3a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eecd22dc2fbf78e6ff4d370597f76364286ae963a4100312eccce67ec744e719a155c4b362ce428f9f2b4f612fdbd5d27df5e5f6e69f563ecfacd23f6e96e7a4
|
7
|
+
data.tar.gz: f80686589c0f26f986fa22bc8eb69bcd3bc38090989db26783ccbc2dc2d89de689d4dfa214a765d659e79c899f6aad9ba9efd29d225fc83d5cd86243a232e625
|
data/lib/generate_image.rb
CHANGED
@@ -1,56 +1,34 @@
|
|
1
1
|
require 'net/http'
|
2
|
+
require 'json'
|
2
3
|
|
3
4
|
module GenerateImage
|
4
|
-
class RequestFailed < StandardError
|
5
|
-
def initialize(message = "Request failed")
|
6
|
-
super(message)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
class MissingApiKey < RequestFailed
|
11
|
-
def initialize(message = "API key not set")
|
12
|
-
super(message)
|
13
|
-
end
|
14
|
-
end
|
5
|
+
class RequestFailed < StandardError; end
|
15
6
|
|
16
|
-
class
|
7
|
+
class Client
|
17
8
|
API_ENDPOINT = 'https://api.openai.com/v1/images/generations'
|
18
|
-
|
19
|
-
|
20
|
-
model: 'image-alpha-001',
|
21
|
-
num_images: 1,
|
22
|
-
size: '1024x1024',
|
23
|
-
response_format: 'url',
|
24
|
-
style: nil,
|
25
|
-
scale: 1,
|
26
|
-
seed: nil,
|
27
|
-
quality: 100,
|
28
|
-
text_model: 'text-davinci-002',
|
29
|
-
text_prompt: nil,
|
30
|
-
text_length: nil
|
31
|
-
}
|
9
|
+
IMAGE_MODEL_NAME = 'image-alpha-001'
|
10
|
+
TEXT_MODEL_NAME = 'text-davinci-002'
|
32
11
|
|
33
|
-
|
34
|
-
|
35
|
-
|
12
|
+
attr_accessor :api_key
|
13
|
+
|
14
|
+
def initialize(api_key = nil)
|
15
|
+
@api_key = api_key || ENV['DALL_E_API_KEY']
|
16
|
+
raise StandardError, "API Key not set" unless @api_key
|
17
|
+
end
|
36
18
|
|
19
|
+
def generate_image(text, options = {})
|
20
|
+
unless API_KEY
|
21
|
+
raise StandardError, "API Key not set"
|
22
|
+
end
|
37
23
|
uri = URI(API_ENDPOINT)
|
38
24
|
request = Net::HTTP::Post.new(uri)
|
39
25
|
request['Content-Type'] = 'application/json'
|
40
26
|
request['Authorization'] = "Bearer #{API_KEY}"
|
41
27
|
request.body = {
|
42
|
-
model: options[:model],
|
43
28
|
prompt: text,
|
44
|
-
|
45
|
-
size: options[:size],
|
46
|
-
response_format: options[:response_format],
|
47
|
-
style: options[:style],
|
48
|
-
scale: options[:scale],
|
49
|
-
seed: options[:seed],
|
50
|
-
quality: options[:quality],
|
51
|
-
text_model: options[:text_model],
|
52
|
-
text_prompt: options[:text_prompt],
|
53
|
-
text_length: options[:text_length]
|
29
|
+
n: options[:num_images] || 1,
|
30
|
+
size: options[:size] || '512x512',
|
31
|
+
response_format: options[:response_format] || 'url',
|
54
32
|
}.to_json
|
55
33
|
|
56
34
|
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
|
@@ -60,13 +38,13 @@ module GenerateImage
|
|
60
38
|
if response.code == '200'
|
61
39
|
if options[:response_format] == 'base64'
|
62
40
|
image_base64 = JSON.parse(response.body)['data'][0]['base64']
|
63
|
-
{ image_base64: image_base64 }
|
41
|
+
return { image_base64: image_base64 }
|
64
42
|
else
|
65
43
|
image_url = JSON.parse(response.body)['data'][0]['url']
|
66
|
-
{ image_url: image_url }
|
44
|
+
return { image_url: image_url }
|
67
45
|
end
|
68
46
|
else
|
69
|
-
raise RequestFailed
|
47
|
+
raise RequestFailed, "Failed to generate image. Response code: #{response.code}. Response body: #{response.body}"
|
70
48
|
end
|
71
49
|
end
|
72
50
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: generate_image
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AMQOR Merouane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-http
|