optimizing LLM usage