Current section

Files

Jump to
gopenai src gopenai@model.erl
Raw

src/gopenai@model.erl

-module(gopenai@model).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([model_to_json/1, model_from_json/1]).
-export_type([model/0]).
-type model() :: gpt3_dot5_turbo | gpt4 | text_embedding_ada002.
-spec model_to_json(model()) -> gleam@json:json().
model_to_json(M) ->
_pipe = case M of
gpt3_dot5_turbo ->
<<"gpt-3.5-turbo"/utf8>>;
gpt4 ->
<<"gpt-4"/utf8>>;
text_embedding_ada002 ->
<<"text-embedding-ada-002"/utf8>>
end,
gleam@json:string(_pipe).
-spec model_from_json(gleam@dynamic:dynamic_()) -> {ok, model()} |
{error, list(gleam@dynamic:decode_error())}.
model_from_json(Data) ->
case gleam@dynamic:string(Data) of
{ok, Str} ->
case Str of
<<"gpt-3.5-turbo"/utf8>> ->
{ok, gpt3_dot5_turbo};
<<"gpt-4"/utf8>> ->
{ok, gpt4};
<<"text-embedding-ada-002"/utf8>> ->
{ok, text_embedding_ada002};
Default ->
{error,
[{decode_error, <<"valid model"/utf8>>, Default, []}]}
end;
{error, E} ->
{error, E}
end.