Current section
Files
Jump to
Current section
Files
src/glopenai@model.erl
-module(glopenai@model).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/glopenai/model.gleam").
-export([model_to_json/1, model_decoder/0, list_request/1, list_response/1, retrieve_request/2, retrieve_response/1, delete_request/2, delete_response/1]).
-export_type([model/0, list_model_response/0, delete_model_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 model() :: {model, binary(), binary(), integer(), binary()}.
-type list_model_response() :: {list_model_response, binary(), list(model())}.
-type delete_model_response() :: {delete_model_response,
binary(),
binary(),
boolean()}.
-file("src/glopenai/model.gleam", 27).
-spec model_to_json(model()) -> gleam@json:json().
model_to_json(Model) ->
gleam@json:object(
[{<<"id"/utf8>>, gleam@json:string(erlang:element(2, Model))},
{<<"object"/utf8>>, gleam@json:string(erlang:element(3, Model))},
{<<"created"/utf8>>, gleam@json:int(erlang:element(4, Model))},
{<<"owned_by"/utf8>>, gleam@json:string(erlang:element(5, Model))}]
).
-file("src/glopenai/model.gleam", 38).
-spec model_decoder() -> gleam@dynamic@decode:decoder(model()).
model_decoder() ->
gleam@dynamic@decode:field(
<<"id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Id) ->
gleam@dynamic@decode:field(
<<"object"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Object) ->
gleam@dynamic@decode:field(
<<"created"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Created) ->
gleam@dynamic@decode:field(
<<"owned_by"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Owned_by) ->
gleam@dynamic@decode:success(
{model, Id, Object, Created, Owned_by}
)
end
)
end
)
end
)
end
).
-file("src/glopenai/model.gleam", 51).
-spec list_model_response_decoder() -> gleam@dynamic@decode:decoder(list_model_response()).
list_model_response_decoder() ->
gleam@dynamic@decode:field(
<<"object"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Object) ->
gleam@dynamic@decode:field(
<<"data"/utf8>>,
gleam@dynamic@decode:list(model_decoder()),
fun(Data) ->
gleam@dynamic@decode:success(
{list_model_response, Object, Data}
)
end
)
end
).
-file("src/glopenai/model.gleam", 57).
-spec delete_model_response_decoder() -> gleam@dynamic@decode:decoder(delete_model_response()).
delete_model_response_decoder() ->
gleam@dynamic@decode:field(
<<"id"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Id) ->
gleam@dynamic@decode:field(
<<"object"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Object) ->
gleam@dynamic@decode:field(
<<"deleted"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_bool/1},
fun(Deleted) ->
gleam@dynamic@decode:success(
{delete_model_response, Id, Object, Deleted}
)
end
)
end
)
end
).
-file("src/glopenai/model.gleam", 67).
?DOC(" Build a request to list all available models.\n").
-spec list_request(glopenai@config:config()) -> gleam@http@request:request(binary()).
list_request(Config) ->
glopenai@internal:get_request(Config, <<"/models"/utf8>>).
-file("src/glopenai/model.gleam", 72).
?DOC(" Parse the response from listing models.\n").
-spec list_response(gleam@http@response:response(binary())) -> {ok,
list_model_response()} |
{error, glopenai@error:glopenai_error()}.
list_response(Response) ->
glopenai@internal:parse_response(Response, list_model_response_decoder()).
-file("src/glopenai/model.gleam", 79).
?DOC(" Build a request to retrieve a specific model.\n").
-spec retrieve_request(glopenai@config:config(), binary()) -> gleam@http@request:request(binary()).
retrieve_request(Config, Model_id) ->
glopenai@internal:get_request(Config, <<"/models/"/utf8, Model_id/binary>>).
-file("src/glopenai/model.gleam", 84).
?DOC(" Parse the response from retrieving a model.\n").
-spec retrieve_response(gleam@http@response:response(binary())) -> {ok, model()} |
{error, glopenai@error:glopenai_error()}.
retrieve_response(Response) ->
glopenai@internal:parse_response(Response, model_decoder()).
-file("src/glopenai/model.gleam", 91).
?DOC(" Build a request to delete a fine-tuned model.\n").
-spec delete_request(glopenai@config:config(), binary()) -> gleam@http@request:request(binary()).
delete_request(Config, Model_id) ->
glopenai@internal:delete_request(
Config,
<<"/models/"/utf8, Model_id/binary>>
).
-file("src/glopenai/model.gleam", 96).
?DOC(" Parse the response from deleting a model.\n").
-spec delete_response(gleam@http@response:response(binary())) -> {ok,
delete_model_response()} |
{error, glopenai@error:glopenai_error()}.
delete_response(Response) ->
glopenai@internal:parse_response(Response, delete_model_response_decoder()).