Current section
Files
Jump to
Current section
Files
src/llmgleam@client.erl
-module(llmgleam@client).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/llmgleam/client.gleam").
-export([new_client/2, completion/4]).
-export_type([provider/0, client/0]).
-type provider() :: gemini | g_p_t.
-opaque client() :: {gemini_client, llmgleam@gemini:gemini_client_internal()} |
{g_p_t_client, llmgleam@gpt:g_p_t_client_internal()}.
-file("src/llmgleam/client.gleam", 16).
-spec new_client(provider(), binary()) -> client().
new_client(Provider, Api_key) ->
case Provider of
gemini ->
{gemini_client, {gemini_client_internal, Api_key}};
g_p_t ->
{g_p_t_client, {g_p_t_client_internal, Api_key}}
end.
-file("src/llmgleam/client.gleam", 23).
-spec completion(
client(),
binary(),
list(llmgleam@types:chat_message()),
gleam@option:option(binary())
) -> {ok, llmgleam@types:completion()} |
{error, llmgleam@types:completion_error()}.
completion(Client, Model, Messages, System_instruction) ->
case Client of
{gemini_client, C} ->
llmgleam@gemini:generate_content(
C,
Model,
Messages,
System_instruction
);
{g_p_t_client, C@1} ->
llmgleam@gpt:generate_content(
C@1,
Model,
Messages,
System_instruction
)
end.