-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathopt_format.go
100 lines (91 loc) · 2.21 KB
/
opt_format.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package llm
import "strings"
///////////////////////////////////////////////////////////////////////////////
// GLOBALS
const (
mimeTypeText = "text/plain"
mimeTypeJSON = "application/json"
mimeTypeMP3 = "audio/mpeg"
mimeTypeOpus = "audio/opus"
mimeTypeAAC = "audio/aac"
mimeTypeFLAC = "audio/flac"
mimeTypeWAV = "audio/wav"
mimeTypePCM = "audio/pcm"
)
var (
// Acceptable formats
formatMap = map[string]string{
mimeTypeText: "text",
"text": "text",
mimeTypeJSON: "json_object",
"json": "json_object",
"json_object": "json_object",
"image": "image",
mimeTypeMP3: "audio",
mimeTypeOpus: "audio",
mimeTypeAAC: "audio",
mimeTypeFLAC: "audio",
mimeTypeWAV: "audio",
mimeTypePCM: "audio",
"audio": "audio",
"mp3": "audio",
"opus": "audio",
"aac": "audio",
"flac": "audio",
"wav": "audio",
"pcm": "audio",
}
audioValues = []string{
"mp3", "opus", "aac", "flac", "wav", "pcm",
}
qualityValues = []string{
"standard", "hd",
}
imageSizeValues = []string{
"256x256", "512x512", "1024x1024", "1792x1024", "1024x1792",
}
styleValues = []string{
"natural", "vivid",
}
)
///////////////////////////////////////////////////////////////////////////////
// PUBLIC METHODS
// Set format for output, which is dependent on the model used
func WithFormat(v any) Opt {
return func(o *Opts) error {
v_, ok := v.(string)
if !ok {
return ErrBadParameter.Withf("format %T unsupported", v)
}
format, exists := formatMap[strings.TrimSpace(strings.ToLower(v_))]
if !exists {
return ErrBadParameter.Withf("format %q unsupported", v_)
}
o.Set("format", format)
return nil
}
}
// Set quality for output (DALL-E)
func WithQuality(v string) Opt {
return func(o *Opts) error {
v = strings.TrimSpace(strings.ToLower(v))
o.Set("quality", v)
return nil
}
}
// Set size for output (DALL-E)
func WithSize(v string) Opt {
return func(o *Opts) error {
v = strings.TrimSpace(strings.ToLower(v))
o.Set("size", v)
return nil
}
}
// Set style for output (DALL-E)
func WithStyle(v string) Opt {
return func(o *Opts) error {
v = strings.TrimSpace(strings.ToLower(v))
o.Set("style", v)
return nil
}
}