Repository: confident-ai/deepeval
Issue: Error when using generate_goldens_from_scratch
Root cause: Validation Gap

* Python Version: `3.11.2`
* DeepEval Version: 2.6.4 (Also tried with 2.0.3)
* Problem Description: I was following this document https://docs.confident-ai.com/docs/synthesizer-generate-from-scratch to generate prompts from scratch, and I have defined my custom Azure GPT below:
```
custom_model = AzureChatOpenAI(api_key=AZURE_OPENAI_API_KEY, 
                                azure_endpoint=AZURE_OPENAI_ENDPOINT,
                                api_version=OPENAI_API_VERSION,
                                deployment_name="gpt-4o-2024-11-20",
                                 )
```
```
from deepeval.models.base_model import DeepEvalBaseLLM
class AzureOpenAI(DeepEvalBaseLLM):
    def __init__(
        self,
        model
    ):
        self.model = model

    def load_model(self):
        return self.model

    def generate(self, prompt: str):
        chat_model = self.load_model()
        return chat_model.invoke(prompt).content

    async def a_generate(self, prompt: str):
        chat_model = self.load_model()
        res = await chat_model.ainvoke(prompt)
        return res.content

    def get_model_name(self):
        return "Custom Azure OpenAI Model"
```
However, when I tried to run the exact code from the document:
```
from deepeval.synthesizer import Synthesizer
from deepeval.synthesizer.config import StylingConfig

styling_config = StylingConfig(
  input_format="Questions in English that asks for data in database.",
  expected_output_format="SQL query based on the given input",
  task="Answering text-to-SQL-related queries by querying a database and returning the results to users",
  scenario="Non-technical users trying to query a database using plain English.",
)

synthesizer = Synthesizer(styling_config=styling_config, model=AzureOpenAI(custom_model))
synthesizer.generate_goldens_from_scratch(num_goldens=25)
print(synthesizer.synthetic_goldens)
```
This problem occurs:

<img width="547" alt="Image" src="https://github.com/user-attachments/assets/c88ac703-953c-465f-8b87-021d2bc85533" />
<img width="905" alt="Image" src="https://github.com/user-attachments/assets/5d3eb555-b870-4d2f-ad41-62838e412357" />

The model setting is correct and can run `generate_goldens_from_contexts` with no errors. So I wonder if it's the problem that 'Multi-context' only appears in `evolution_map` but not in the `prompt_evolution_map` defined in here: https://github.com/confident-ai/deepeval/blob/main/deepeval/synthesizer/synthesizer.py? (After I remove it from the `evolution_map` the error still occurs). Thank you so much for your help!

I'm guessing it just doesn't apply with this evolution method when you're doing it without context, but @kritinv can give u a better answer, in the meantime don't use that evolution

I am facing the similar issue. even in the context mentioned, only `stylingconfig` is passed as parameter.
`EvolutionConfig` parameter is not even included in the parameter list

To anyone who is still facing this issue~

I tried to replicate this but the above mentioned code works fine for me.

deepeval version 2.6.5
Python version 3.12.4

What I did:
- Did straightforward stuff in Azure. Created a subscription -> created a new Azure OpenAI service -> created a new deployment for a gpt 4 model

Modified the above code to allow retries (just in case):

```from deepeval.synthesizer import Synthesizer
from deepeval.synthesizer.config import StylingConfig
from deepeval.models.base_model import DeepEvalBaseLLM
from langchain_openai import AzureChatOpenAI
import time

custom_model = AzureChatOpenAI(api_key="your_api_key", 
                                azure_endpoint="your_azure_endpoint",
                                api_version="your_api_version",
                                deployment_name="your_deployment_name",
                                )

class AzureOpenAI(DeepEvalBaseLLM):
    def __init__(
        self,
        model
    ):
        self.model = model

    def load_model(self):
        return self.model

    def generate(self, prompt: str):
        chat_model = self.load_model()
        return chat_model.invoke(prompt).content

    async def a_generate(self, prompt: str):
        chat_model = self.load_model()
        res = await chat_model.ainvoke(prompt)
        return res.content

    def get_model_name(self):
        return "Custom Azure OpenAI Model"

# Simple test with manual retry
max_retries = 3
for attempt in range(max_retries):
    try:
        result = custom_model.invoke("Say hello world")
        print(result.content)
        break
    except Exception as e:
        print(f"Error (attempt {attempt+1}/{max_retries}): {e}")
        if attempt < max_retries - 1:
            wait_time = 60 + attempt * 5  # Wait longer each time
            print(f"Waiting {wait_time} seconds before retry...")
            time.sleep(wait_time)

styling_config = StylingConfig(
  input_format="Questions in English that asks for data in database.",
  expected_output_format="SQL query based on the given input",
  task="Answering text-to-SQL-related queries by querying a database and returning the results to users",
  scenario="Non-technical users trying to query a database using plain English.",
)


synthesizer = Synthesizer(styling_config=styling_config, model=AzureOpenAI(custom_model))
synthesizer.generate_goldens_from_scratch(num_goldens=5)
print(synthesizer.synthetic_goldens)
```

hi @royalsanga24  does your script generate `expected_output` as I read somewhere they intentionally assign `expected_output=None` to prevent hallucination