Packages

An API for LLM completion that unifies across different providers.

Current section

Files

Jump to
overlay_llm src overlay@llm@provider.erl
Raw

src/overlay@llm@provider.erl

-module(overlay@llm@provider).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/overlay/llm/provider.gleam").
-export([completion_request/5, stream_completion_request/3, completion_chunk_parse/3]).
-export_type([provider/0, llm/0, context/0]).
-type provider() :: {ollama, overlay@llm@provider@ollama:config()} |
{mistral, overlay@llm@provider@mistral:config()}.
-type llm() :: {llm, provider(), binary()}.
-type context() :: {context, binary(), list(overlay@llm@tool:tool())}.
-file("src/overlay/llm/provider.gleam", 26).
-spec completion_request(
provider(),
binary(),
binary(),
list(overlay@llm@chat:message(overlay@llm@tool:call())),
list(overlay@llm@tool:tool())
) -> gleam@http@request:request(bitstring()).
completion_request(Provider, Model, System_prompt, History, Tools) ->
case Provider of
{ollama, Config} ->
overlay@llm@provider@ollama:completion_request(
Config,
Model,
System_prompt,
History,
Tools
);
{mistral, _} ->
erlang:error(#{gleam_error => panic,
message => <<"unsupported"/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"overlay/llm/provider"/utf8>>,
function => <<"completion_request"/utf8>>,
line => 36})
end.
-file("src/overlay/llm/provider.gleam", 40).
-spec stream_completion_request(
llm(),
context(),
list(overlay@llm@chat:message(overlay@llm@tool:call()))
) -> gleam@http@request:request(bitstring()).
stream_completion_request(Llm, Context, History) ->
{llm, Provider, Model} = Llm,
{context, System_prompt, Tools} = Context,
case Provider of
{ollama, Config} ->
overlay@llm@provider@ollama:stream_completion_request(
Config,
Model,
System_prompt,
History,
Tools
);
{mistral, Config@1} ->
overlay@llm@provider@mistral:stream_completion_request(
Config@1,
Model,
System_prompt,
History,
Tools
)
end.
-file("src/overlay/llm/provider.gleam", 68).
-spec completion_chunk_parse(provider(), bitstring(), bitstring()) -> {list(overlay@llm@chat:completion(overlay@llm@tool:call())),
bitstring()}.
completion_chunk_parse(Provider, Remaining, Chunk) ->
case Provider of
{ollama, _} ->
overlay@llm@provider@ollama:completion_chunk_parse(Remaining, Chunk);
{mistral, _} ->
overlay@llm@provider@mistral:completion_chunk_parse(
Remaining,
Chunk
)
end.