Skip to main content

src/adk_llm.erl

-module(adk_llm).

-type config() :: map().
-type memory() :: list(map()).
-type tools() :: list(module()).

-export_type([config/0, memory/0, tools/0]).

-callback generate(Config :: config(), Memory :: memory(), Tools :: tools()) ->
    {ok, binary() | string()} | {tool_calls, list()} | {error, term()}.

-export([generate/3]).

%% @doc Dispatch the call to the specified provider.
generate(Config, Memory, Tools) ->
    Provider = maps:get(provider, Config),
    Provider:generate(Config, Memory, Tools).