String report() {
            long generationTime = timeToLastToken - timeToFirstToken;
            return "Time to first token: " + timeToFirstToken + " ms, " +
                   "Generation time: " + generationTime + " ms, " +
                   "Generated tokens: " + tokens + " " +
                   String.format("(%.2f tokens/sec)", tokens / (generationTime / 1000.0));
        }
Base class for LLM searchers. Provides utilities for calling LLMs and handling properties.

@author lesters
container-search/src/main/java/ai/vespa/search/llm/LLMSearcher.java