Repository: explodinggradients/ragas
Issue: Error in determining costs using token_usage_parser and unintentional usage of GPT-3.5 Turbo
Root cause: Validation Gap

[ :heavy_check_mark: ] I have checked the [Testset Generation documentation](https://docs.ragas.io/en/latest/getstarted/rag_testset_generation/#testset-generation) and [LlamaIndex Integration documentation](https://docs.ragas.io/en/latest/howtos/integrations/_llamaindex/) and related resources and couldn't resolve my bug.

**Describe the bug**
I'm trying to generate a TestSet and evaluate a LlamaIndex query engine for the following metrics: 
Faithfulness, AnswerRelevancy, ContextPrecision, ContextRecall, ResponseRelevancy, BleuScore, RougeScore

I am facing a couple of issues in this process:
- I have defined my LLM to be GPT 4o-mini for testset generation and all the metrics which use an LLM. However, when I ran the testset generation pipeline and the aforementioned metrics today, I noticed extremely high usage of GPT-3.5 Turbo occuring along with 4o-mini usage. Has the 3.5 Turbo model been set as default somewhere in the RAGAS package and is there any way I can set it differently as it is much more expensive?
- I am unable to use the total_cost or total_tokens functions for estimating tokens used during testset generation. The cost_cb.usage_data of the generated testset is an empty list for some reason. 

Ragas version: 0.2.5
Python version: 3.11.10
LlamaIndex version: 0.11.23

**Code to Reproduce**
1. I have defined my LLM as:
```
llm = OpenAI(model="gpt-4o-mini")
evaluator_llm = LlamaIndexLLMWrapper(llm)
```

2.  I passed a token usage parser while generating the testset and tried to get the cost/tokens data as follows: 
```
testset = generator.generate(testset_size=1000, token_usage_parser=get_token_usage_for_openai)

testset.total_cost(cost_per_input_token=0.15 / 1e6, cost_per_output_token=0.6 / 1e6)
testset.cost_cb.usage_data
```

**Error trace**

> ---------------------------------------------------------------------------
> IndexError                                Traceback (most recent call last)
> Cell In[8], line 2
> ----> 2 testset.total_cost(cost_per_input_token=0.15 / 1e6, cost_per_output_token=0.6 / 1e6)
>       3 testset.cost_cb.usage_data
> 
> File Lib\site-packages\ragas\testset\synthesizers\testset_schema.py:132, in Testset.total_cost(self, cost_per_input_token, cost_per_output_token)
>     128 if self.cost_cb is None:
>     129     raise ValueError(
>     130         "The Testset was not configured for computing cost. Please provide a token_usage_parser function to TestsetGenerator to compute cost."
>     131     )
> --> 132 return self.cost_cb.total_cost(
>     133     cost_per_input_token=cost_per_input_token,
>     134     cost_per_output_token=cost_per_output_token,
>     135 )
> 
> File Lib\site-packages\ragas\cost.py:127, in CostCallbackHandler.total_cost(self, cost_per_input_token, cost_per_output_token, per_model_costs)
>     122     raise ValueError(
>     123         "No cost table or cost per token provided. Please provide a cost table if using multiple models or cost per token if using a single model"
>     124     )
>     126 # sum up everything
> --> 127 first_usage = self.usage_data[0]
>     128 total_table: t.Dict[str, TokenUsage] = {first_usage.model: first_usage}
>     129 for usage in self.usage_data[1:]:
> 
> IndexError: list index out of range

**Expected behavior**
I wanted the code to use the LLM I have defined, not default to GPT 3.5 Turbo, and I wanted to be able to view the tokens used / calculate the cost.