Current section
Files
Jump to
Current section
Files
src/glopenai@image.erl
-module(glopenai@image).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/glopenai/image.gleam").
-export([new_create_request/1, with_model/2, with_n/2, with_quality/2, with_response_format/2, with_output_format/2, with_output_compression/2, with_size/2, with_moderation/2, with_background/2, with_style/2, with_user/2, image_size_to_json/1, image_model_to_json/1, image_quality_to_json/1, image_style_to_json/1, image_moderation_to_json/1, image_output_format_to_json/1, image_response_format_to_json/1, image_background_to_json/1, create_image_request_to_json/1, image_size_decoder/0, image_model_decoder/0, image_quality_decoder/0, image_style_decoder/0, image_output_format_decoder/0, image_response_format_decoder/0, image_response_background_decoder/0, image_decoder/0, image_gen_input_usage_details_decoder/0, image_gen_output_tokens_details_decoder/0, image_gen_usage_decoder/0, create_request/2, create_response/1]).
-export_type([image_size/0, image_model/0, image_quality/0, image_style/0, image_moderation/0, image_output_format/0, image_response_format/0, image_background/0, create_image_request/0, image/0, image_response_background/0, image_gen_input_usage_details/0, image_gen_output_tokens_details/0, image_gen_usage/0, images_response/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type image_size() :: size_auto |
size256x256 |
size512x512 |
size1024x1024 |
size1792x1024 |
size1024x1792 |
size1536x1024 |
size1024x1536.
-type image_model() :: gpt_image1 |
gpt_image1dot5 |
gpt_image1_mini |
dall_e2 |
dall_e3 |
{other_image_model, binary()}.
-type image_quality() :: quality_standard |
quality_hd |
quality_high |
quality_medium |
quality_low |
quality_auto.
-type image_style() :: vivid | natural.
-type image_moderation() :: moderation_auto | moderation_low.
-type image_output_format() :: png | jpeg | webp.
-type image_response_format() :: url | b64_json.
-type image_background() :: background_auto |
background_transparent |
background_opaque.
-type create_image_request() :: {create_image_request,
binary(),
gleam@option:option(image_model()),
gleam@option:option(integer()),
gleam@option:option(image_quality()),
gleam@option:option(image_response_format()),
gleam@option:option(image_output_format()),
gleam@option:option(integer()),
gleam@option:option(image_size()),
gleam@option:option(image_moderation()),
gleam@option:option(image_background()),
gleam@option:option(image_style()),
gleam@option:option(binary())}.
-type image() :: {image_url, binary(), gleam@option:option(binary())} |
{image_b64_json, binary(), gleam@option:option(binary())}.
-type image_response_background() :: response_transparent | response_opaque.
-type image_gen_input_usage_details() :: {image_gen_input_usage_details,
integer(),
integer()}.
-type image_gen_output_tokens_details() :: {image_gen_output_tokens_details,
integer(),
integer()}.
-type image_gen_usage() :: {image_gen_usage,
integer(),
integer(),
integer(),
image_gen_input_usage_details(),
gleam@option:option(image_gen_output_tokens_details())}.
-type images_response() :: {images_response,
integer(),
list(image()),
gleam@option:option(image_response_background()),
gleam@option:option(image_output_format()),
gleam@option:option(image_size()),
gleam@option:option(image_quality()),
gleam@option:option(image_gen_usage())}.
-file("src/glopenai/image.gleam", 138).
?DOC(" Create a new image generation request with the required prompt.\n").
-spec new_create_request(binary()) -> create_image_request().
new_create_request(Prompt) ->
{create_image_request,
Prompt,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none}.
-file("src/glopenai/image.gleam", 155).
-spec with_model(create_image_request(), image_model()) -> create_image_request().
with_model(Request, Model) ->
{create_image_request,
erlang:element(2, Request),
{some, Model},
erlang:element(4, Request),
erlang:element(5, Request),
erlang:element(6, Request),
erlang:element(7, Request),
erlang:element(8, Request),
erlang:element(9, Request),
erlang:element(10, Request),
erlang:element(11, Request),
erlang:element(12, Request),
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 162).
-spec with_n(create_image_request(), integer()) -> create_image_request().
with_n(Request, N) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
{some, N},
erlang:element(5, Request),
erlang:element(6, Request),
erlang:element(7, Request),
erlang:element(8, Request),
erlang:element(9, Request),
erlang:element(10, Request),
erlang:element(11, Request),
erlang:element(12, Request),
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 166).
-spec with_quality(create_image_request(), image_quality()) -> create_image_request().
with_quality(Request, Quality) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
erlang:element(4, Request),
{some, Quality},
erlang:element(6, Request),
erlang:element(7, Request),
erlang:element(8, Request),
erlang:element(9, Request),
erlang:element(10, Request),
erlang:element(11, Request),
erlang:element(12, Request),
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 173).
-spec with_response_format(create_image_request(), image_response_format()) -> create_image_request().
with_response_format(Request, Format) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
erlang:element(4, Request),
erlang:element(5, Request),
{some, Format},
erlang:element(7, Request),
erlang:element(8, Request),
erlang:element(9, Request),
erlang:element(10, Request),
erlang:element(11, Request),
erlang:element(12, Request),
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 180).
-spec with_output_format(create_image_request(), image_output_format()) -> create_image_request().
with_output_format(Request, Format) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
erlang:element(4, Request),
erlang:element(5, Request),
erlang:element(6, Request),
{some, Format},
erlang:element(8, Request),
erlang:element(9, Request),
erlang:element(10, Request),
erlang:element(11, Request),
erlang:element(12, Request),
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 187).
-spec with_output_compression(create_image_request(), integer()) -> create_image_request().
with_output_compression(Request, Compression) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
erlang:element(4, Request),
erlang:element(5, Request),
erlang:element(6, Request),
erlang:element(7, Request),
{some, Compression},
erlang:element(9, Request),
erlang:element(10, Request),
erlang:element(11, Request),
erlang:element(12, Request),
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 194).
-spec with_size(create_image_request(), image_size()) -> create_image_request().
with_size(Request, Size) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
erlang:element(4, Request),
erlang:element(5, Request),
erlang:element(6, Request),
erlang:element(7, Request),
erlang:element(8, Request),
{some, Size},
erlang:element(10, Request),
erlang:element(11, Request),
erlang:element(12, Request),
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 201).
-spec with_moderation(create_image_request(), image_moderation()) -> create_image_request().
with_moderation(Request, Moderation) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
erlang:element(4, Request),
erlang:element(5, Request),
erlang:element(6, Request),
erlang:element(7, Request),
erlang:element(8, Request),
erlang:element(9, Request),
{some, Moderation},
erlang:element(11, Request),
erlang:element(12, Request),
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 208).
-spec with_background(create_image_request(), image_background()) -> create_image_request().
with_background(Request, Background) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
erlang:element(4, Request),
erlang:element(5, Request),
erlang:element(6, Request),
erlang:element(7, Request),
erlang:element(8, Request),
erlang:element(9, Request),
erlang:element(10, Request),
{some, Background},
erlang:element(12, Request),
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 215).
-spec with_style(create_image_request(), image_style()) -> create_image_request().
with_style(Request, Style) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
erlang:element(4, Request),
erlang:element(5, Request),
erlang:element(6, Request),
erlang:element(7, Request),
erlang:element(8, Request),
erlang:element(9, Request),
erlang:element(10, Request),
erlang:element(11, Request),
{some, Style},
erlang:element(13, Request)}.
-file("src/glopenai/image.gleam", 222).
-spec with_user(create_image_request(), binary()) -> create_image_request().
with_user(Request, User) ->
{create_image_request,
erlang:element(2, Request),
erlang:element(3, Request),
erlang:element(4, Request),
erlang:element(5, Request),
erlang:element(6, Request),
erlang:element(7, Request),
erlang:element(8, Request),
erlang:element(9, Request),
erlang:element(10, Request),
erlang:element(11, Request),
erlang:element(12, Request),
{some, User}}.
-file("src/glopenai/image.gleam", 231).
-spec image_size_to_json(image_size()) -> gleam@json:json().
image_size_to_json(Size) ->
gleam@json:string(case Size of
size_auto ->
<<"auto"/utf8>>;
size256x256 ->
<<"256x256"/utf8>>;
size512x512 ->
<<"512x512"/utf8>>;
size1024x1024 ->
<<"1024x1024"/utf8>>;
size1792x1024 ->
<<"1792x1024"/utf8>>;
size1024x1792 ->
<<"1024x1792"/utf8>>;
size1536x1024 ->
<<"1536x1024"/utf8>>;
size1024x1536 ->
<<"1024x1536"/utf8>>
end).
-file("src/glopenai/image.gleam", 244).
-spec image_model_to_json(image_model()) -> gleam@json:json().
image_model_to_json(Model) ->
gleam@json:string(case Model of
gpt_image1 ->
<<"gpt-image-1"/utf8>>;
gpt_image1dot5 ->
<<"gpt-image-1.5"/utf8>>;
gpt_image1_mini ->
<<"gpt-image-1-mini"/utf8>>;
dall_e2 ->
<<"dall-e-2"/utf8>>;
dall_e3 ->
<<"dall-e-3"/utf8>>;
{other_image_model, Name} ->
Name
end).
-file("src/glopenai/image.gleam", 255).
-spec image_quality_to_json(image_quality()) -> gleam@json:json().
image_quality_to_json(Quality) ->
gleam@json:string(case Quality of
quality_standard ->
<<"standard"/utf8>>;
quality_hd ->
<<"hd"/utf8>>;
quality_high ->
<<"high"/utf8>>;
quality_medium ->
<<"medium"/utf8>>;
quality_low ->
<<"low"/utf8>>;
quality_auto ->
<<"auto"/utf8>>
end).
-file("src/glopenai/image.gleam", 266).
-spec image_style_to_json(image_style()) -> gleam@json:json().
image_style_to_json(Style) ->
gleam@json:string(case Style of
vivid ->
<<"vivid"/utf8>>;
natural ->
<<"natural"/utf8>>
end).
-file("src/glopenai/image.gleam", 273).
-spec image_moderation_to_json(image_moderation()) -> gleam@json:json().
image_moderation_to_json(Moderation) ->
gleam@json:string(case Moderation of
moderation_auto ->
<<"auto"/utf8>>;
moderation_low ->
<<"low"/utf8>>
end).
-file("src/glopenai/image.gleam", 280).
-spec image_output_format_to_json(image_output_format()) -> gleam@json:json().
image_output_format_to_json(Format) ->
gleam@json:string(case Format of
png ->
<<"png"/utf8>>;
jpeg ->
<<"jpeg"/utf8>>;
webp ->
<<"webp"/utf8>>
end).
-file("src/glopenai/image.gleam", 288).
-spec image_response_format_to_json(image_response_format()) -> gleam@json:json().
image_response_format_to_json(Format) ->
gleam@json:string(case Format of
url ->
<<"url"/utf8>>;
b64_json ->
<<"b64_json"/utf8>>
end).
-file("src/glopenai/image.gleam", 295).
-spec image_background_to_json(image_background()) -> gleam@json:json().
image_background_to_json(Background) ->
gleam@json:string(case Background of
background_auto ->
<<"auto"/utf8>>;
background_transparent ->
<<"transparent"/utf8>>;
background_opaque ->
<<"opaque"/utf8>>
end).
-file("src/glopenai/image.gleam", 303).
-spec create_image_request_to_json(create_image_request()) -> gleam@json:json().
create_image_request_to_json(Request) ->
glopenai@internal@codec:object_with_optional(
[{<<"prompt"/utf8>>, gleam@json:string(erlang:element(2, Request))}],
[glopenai@internal@codec:optional_field(
<<"model"/utf8>>,
erlang:element(3, Request),
fun image_model_to_json/1
),
glopenai@internal@codec:optional_field(
<<"n"/utf8>>,
erlang:element(4, Request),
fun gleam@json:int/1
),
glopenai@internal@codec:optional_field(
<<"quality"/utf8>>,
erlang:element(5, Request),
fun image_quality_to_json/1
),
glopenai@internal@codec:optional_field(
<<"response_format"/utf8>>,
erlang:element(6, Request),
fun image_response_format_to_json/1
),
glopenai@internal@codec:optional_field(
<<"output_format"/utf8>>,
erlang:element(7, Request),
fun image_output_format_to_json/1
),
glopenai@internal@codec:optional_field(
<<"output_compression"/utf8>>,
erlang:element(8, Request),
fun gleam@json:int/1
),
glopenai@internal@codec:optional_field(
<<"size"/utf8>>,
erlang:element(9, Request),
fun image_size_to_json/1
),
glopenai@internal@codec:optional_field(
<<"moderation"/utf8>>,
erlang:element(10, Request),
fun image_moderation_to_json/1
),
glopenai@internal@codec:optional_field(
<<"background"/utf8>>,
erlang:element(11, Request),
fun image_background_to_json/1
),
glopenai@internal@codec:optional_field(
<<"style"/utf8>>,
erlang:element(12, Request),
fun image_style_to_json/1
),
glopenai@internal@codec:optional_field(
<<"user"/utf8>>,
erlang:element(13, Request),
fun gleam@json:string/1
)]
).
-file("src/glopenai/image.gleam", 341).
-spec image_size_decoder() -> gleam@dynamic@decode:decoder(image_size()).
image_size_decoder() ->
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Value) -> case Value of
<<"auto"/utf8>> ->
gleam@dynamic@decode:success(size_auto);
<<"256x256"/utf8>> ->
gleam@dynamic@decode:success(size256x256);
<<"512x512"/utf8>> ->
gleam@dynamic@decode:success(size512x512);
<<"1024x1024"/utf8>> ->
gleam@dynamic@decode:success(size1024x1024);
<<"1792x1024"/utf8>> ->
gleam@dynamic@decode:success(size1792x1024);
<<"1024x1792"/utf8>> ->
gleam@dynamic@decode:success(size1024x1792);
<<"1536x1024"/utf8>> ->
gleam@dynamic@decode:success(size1536x1024);
<<"1024x1536"/utf8>> ->
gleam@dynamic@decode:success(size1024x1536);
_ ->
gleam@dynamic@decode:failure(
size_auto,
<<"ImageSize"/utf8>>
)
end end
).
-file("src/glopenai/image.gleam", 356).
-spec image_model_decoder() -> gleam@dynamic@decode:decoder(image_model()).
image_model_decoder() ->
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Value) -> case Value of
<<"gpt-image-1"/utf8>> ->
gleam@dynamic@decode:success(gpt_image1);
<<"gpt-image-1.5"/utf8>> ->
gleam@dynamic@decode:success(gpt_image1dot5);
<<"gpt-image-1-mini"/utf8>> ->
gleam@dynamic@decode:success(gpt_image1_mini);
<<"dall-e-2"/utf8>> ->
gleam@dynamic@decode:success(dall_e2);
<<"dall-e-3"/utf8>> ->
gleam@dynamic@decode:success(dall_e3);
Other ->
gleam@dynamic@decode:success({other_image_model, Other})
end end
).
-file("src/glopenai/image.gleam", 368).
-spec image_quality_decoder() -> gleam@dynamic@decode:decoder(image_quality()).
image_quality_decoder() ->
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Value) -> case Value of
<<"standard"/utf8>> ->
gleam@dynamic@decode:success(quality_standard);
<<"hd"/utf8>> ->
gleam@dynamic@decode:success(quality_hd);
<<"high"/utf8>> ->
gleam@dynamic@decode:success(quality_high);
<<"medium"/utf8>> ->
gleam@dynamic@decode:success(quality_medium);
<<"low"/utf8>> ->
gleam@dynamic@decode:success(quality_low);
<<"auto"/utf8>> ->
gleam@dynamic@decode:success(quality_auto);
_ ->
gleam@dynamic@decode:failure(
quality_auto,
<<"ImageQuality"/utf8>>
)
end end
).
-file("src/glopenai/image.gleam", 381).
-spec image_style_decoder() -> gleam@dynamic@decode:decoder(image_style()).
image_style_decoder() ->
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Value) -> case Value of
<<"vivid"/utf8>> ->
gleam@dynamic@decode:success(vivid);
<<"natural"/utf8>> ->
gleam@dynamic@decode:success(natural);
_ ->
gleam@dynamic@decode:failure(vivid, <<"ImageStyle"/utf8>>)
end end
).
-file("src/glopenai/image.gleam", 390).
-spec image_output_format_decoder() -> gleam@dynamic@decode:decoder(image_output_format()).
image_output_format_decoder() ->
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Value) -> case Value of
<<"png"/utf8>> ->
gleam@dynamic@decode:success(png);
<<"jpeg"/utf8>> ->
gleam@dynamic@decode:success(jpeg);
<<"webp"/utf8>> ->
gleam@dynamic@decode:success(webp);
_ ->
gleam@dynamic@decode:failure(
png,
<<"ImageOutputFormat"/utf8>>
)
end end
).
-file("src/glopenai/image.gleam", 400).
-spec image_response_format_decoder() -> gleam@dynamic@decode:decoder(image_response_format()).
image_response_format_decoder() ->
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Value) -> case Value of
<<"url"/utf8>> ->
gleam@dynamic@decode:success(url);
<<"b64_json"/utf8>> ->
gleam@dynamic@decode:success(b64_json);
_ ->
gleam@dynamic@decode:failure(
url,
<<"ImageResponseFormat"/utf8>>
)
end end
).
-file("src/glopenai/image.gleam", 409).
-spec image_response_background_decoder() -> gleam@dynamic@decode:decoder(image_response_background()).
image_response_background_decoder() ->
gleam@dynamic@decode:then(
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Value) -> case Value of
<<"transparent"/utf8>> ->
gleam@dynamic@decode:success(response_transparent);
<<"opaque"/utf8>> ->
gleam@dynamic@decode:success(response_opaque);
_ ->
gleam@dynamic@decode:failure(
response_opaque,
<<"ImageResponseBackground"/utf8>>
)
end end
).
-file("src/glopenai/image.gleam", 422).
?DOC(
" Decode a generated image. The API returns either a \"url\" or \"b64_json\" field\n"
" depending on the response_format requested. We try URL first, then b64.\n"
).
-spec image_decoder() -> gleam@dynamic@decode:decoder(image()).
image_decoder() ->
gleam@dynamic@decode:one_of(
begin
gleam@dynamic@decode:field(
<<"url"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Url) ->
gleam@dynamic@decode:optional_field(
<<"revised_prompt"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Revised_prompt) ->
gleam@dynamic@decode:success(
{image_url, Url, Revised_prompt}
)
end
)
end
)
end,
[begin
gleam@dynamic@decode:field(
<<"b64_json"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(B64) ->
gleam@dynamic@decode:optional_field(
<<"revised_prompt"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder,
fun gleam@dynamic@decode:decode_string/1}
),
fun(Revised_prompt@1) ->
gleam@dynamic@decode:success(
{image_b64_json, B64, Revised_prompt@1}
)
end
)
end
)
end]
).
-file("src/glopenai/image.gleam", 450).
-spec image_gen_input_usage_details_decoder() -> gleam@dynamic@decode:decoder(image_gen_input_usage_details()).
image_gen_input_usage_details_decoder() ->
gleam@dynamic@decode:field(
<<"text_tokens"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Text_tokens) ->
gleam@dynamic@decode:field(
<<"image_tokens"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Image_tokens) ->
gleam@dynamic@decode:success(
{image_gen_input_usage_details,
Text_tokens,
Image_tokens}
)
end
)
end
).
-file("src/glopenai/image.gleam", 461).
-spec image_gen_output_tokens_details_decoder() -> gleam@dynamic@decode:decoder(image_gen_output_tokens_details()).
image_gen_output_tokens_details_decoder() ->
gleam@dynamic@decode:field(
<<"text_tokens"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Text_tokens) ->
gleam@dynamic@decode:field(
<<"image_tokens"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Image_tokens) ->
gleam@dynamic@decode:success(
{image_gen_output_tokens_details,
Text_tokens,
Image_tokens}
)
end
)
end
).
-file("src/glopenai/image.gleam", 472).
-spec image_gen_usage_decoder() -> gleam@dynamic@decode:decoder(image_gen_usage()).
image_gen_usage_decoder() ->
gleam@dynamic@decode:field(
<<"input_tokens"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Input_tokens) ->
gleam@dynamic@decode:field(
<<"output_tokens"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Output_tokens) ->
gleam@dynamic@decode:field(
<<"total_tokens"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Total_tokens) ->
gleam@dynamic@decode:field(
<<"input_tokens_details"/utf8>>,
image_gen_input_usage_details_decoder(),
fun(Input_tokens_details) ->
gleam@dynamic@decode:optional_field(
<<"output_token_details"/utf8>>,
none,
gleam@dynamic@decode:optional(
image_gen_output_tokens_details_decoder(
)
),
fun(Output_token_details) ->
gleam@dynamic@decode:success(
{image_gen_usage,
Input_tokens,
Output_tokens,
Total_tokens,
Input_tokens_details,
Output_token_details}
)
end
)
end
)
end
)
end
)
end
).
-file("src/glopenai/image.gleam", 494).
-spec images_response_decoder() -> gleam@dynamic@decode:decoder(images_response()).
images_response_decoder() ->
gleam@dynamic@decode:field(
<<"created"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Created) ->
gleam@dynamic@decode:field(
<<"data"/utf8>>,
gleam@dynamic@decode:list(image_decoder()),
fun(Data) ->
gleam@dynamic@decode:optional_field(
<<"background"/utf8>>,
none,
gleam@dynamic@decode:optional(
image_response_background_decoder()
),
fun(Background) ->
gleam@dynamic@decode:optional_field(
<<"output_format"/utf8>>,
none,
gleam@dynamic@decode:optional(
image_output_format_decoder()
),
fun(Output_format) ->
gleam@dynamic@decode:optional_field(
<<"size"/utf8>>,
none,
gleam@dynamic@decode:optional(
image_size_decoder()
),
fun(Size) ->
gleam@dynamic@decode:optional_field(
<<"quality"/utf8>>,
none,
gleam@dynamic@decode:optional(
image_quality_decoder()
),
fun(Quality) ->
gleam@dynamic@decode:optional_field(
<<"usage"/utf8>>,
none,
gleam@dynamic@decode:optional(
image_gen_usage_decoder(
)
),
fun(Usage) ->
gleam@dynamic@decode:success(
{images_response,
Created,
Data,
Background,
Output_format,
Size,
Quality,
Usage}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/glopenai/image.gleam", 536).
?DOC(" Build a request to generate images.\n").
-spec create_request(glopenai@config:config(), create_image_request()) -> gleam@http@request:request(binary()).
create_request(Config, Params) ->
glopenai@internal:post_request(
Config,
<<"/images/generations"/utf8>>,
create_image_request_to_json(Params)
).
-file("src/glopenai/image.gleam", 548).
?DOC(" Parse the response from generating images.\n").
-spec create_response(gleam@http@response:response(binary())) -> {ok,
images_response()} |
{error, glopenai@error:glopenai_error()}.
create_response(Response) ->
glopenai@internal:parse_response(Response, images_response_decoder()).