-type datasource() :: none | binary().
-spec chat(anthropic | openai, big | small, [map()], [map()], datasource(), map()) -> {ok, map()} | {error, term()}.