Repository: confident-ai/deepeval
Issue: GPT model testing
Root cause: Validation Gap

1. While testing json mode models, I realised by accident that some are not valid (my bad!)
2. It seems to instruct based models will not fit under the current API. that could be a separate TODO.

tl;dr: only `gpt-3.5-turbo` and `gpt-4-turbo` (and variants) belong in the `json_mode_models` list.


Reference
https://github.com/confident-ai/deepeval/blob/4f3af892e0b414e2ad9ddee1a072eb3e8c1ecc38/deepeval/models/gpt_model.py#L239

Reproduction (tested on deepeval 2.2.1)
```python
from dotenv import load_dotenv
from openai import OpenAI
import os

load_dotenv()

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY", None))

json_mode_models = [
    "gpt-3.5-turbo",
    "gpt-3.5-turbo-instruct",
    "gpt-4",
    "gpt-4-turbo",
]
prompt = "What is the capital of the United States? Respond in json format."

for model_name in json_mode_models:
    try:
        completion = client.beta.chat.completions.parse(
            model=model_name,
            messages=[
                {"role": "user", "content": prompt},
            ],
            response_format={"type": "json_object"},
        )
        print(f"Model: {model_name} succeeded.")
        print("Completion:", completion.choices[0].message.content)
    except Exception as e:
        print(f"Model: {model_name} failed.")
        print(e)
```

> Model: gpt-3.5-turbo succeeded.
Completion: {
    "capital": "Washington, D.C."
}
Model: gpt-3.5-turbo-instruct failed.
Error code: 404 - {'error': {'message': 'This is not a chat model and thus not supported in the v1/chat/completions endpoint. Did you mean to use v1/completions?', 'type': 'invalid_request_error', 'param': 'model', 'code': None}}
Model: gpt-4 failed.
Error code: 400 - {'error': {'message': "Invalid parameter: 'response_format' of type 'json_object' is not supported with this model.", 'type': 'invalid_request_error', 'param': 'response_format', 'code': None}}
Model: gpt-4-turbo succeeded.
Completion: {
  "country": "United States",
  "capital": "Washington, D.C."
}

Further testing: `gpt-4` does not work with structured outputs either. 

```python
structured_outputs_models = [
    "gpt-4o",
    "gpt-4o-mini",
    "gpt-4",
]

prompt = """From these set of statements, judge which statements are opinions.
1. I think the movie was good.
2. Earth is round.
"""

for model_name in structured_outputs_models:
    try:
        completion = client.beta.chat.completions.parse(
            model=model_name,
            messages=[
                {"role": "user", "content": prompt},
            ],
            response_format=Opinions,
        )
        print(f"Model: {model_name} succeeded.")
        print("Completion:", completion.choices[0].message.parsed)
    except Exception as e:
        print(f"Model: {model_name} failed.")
        print(e)
```

> Model: gpt-4o succeeded.
Completion: opinions=['1. I think the movie was good.']
Model: gpt-4o-mini succeeded.
Completion: opinions=['I think the movie was good.']
Model: gpt-4 failed.
Error code: 400 - {'error': {'message': "Invalid parameter: 'response_format' of type 'json_schema' is not supported with this model. Learn more about supported models at the Structured Outputs guide: https://platform.openai.com/docs/guides/structured-outputs", 'type': 'invalid_request_error', 'param': None, 'code': None}}