Dispatch the call to the specified provider.
-type config() :: map().
-type memory() :: [map()].
-type tools() :: [module()].
-callback generate(Config :: config(), Memory :: memory(), Tools :: tools()) -> {ok, binary() | string()} | {tool_calls, list()} | {error, term()}.