@type agent() :: %{ai: AI.t(), opts: [{:question, String.t()}]}
@callback call(agent(), map()) :: {:ok, String.t()}
@callback spec() :: map()