Repository: promptfoo/promptfoo
Issue: Support Native Gemini Format System Instructions
Root cause: Documentation Deficiency

**Is your feature request related to a problem? Please describe.**
I need to evaluate the performance of Gemini 2.5 Pro model on a document processing task. After researching the documentation:

1. Gemini 2.5 Pro is currently only available via the Google provider, not the Vertex provider
2. System instructions for Google provider models only work with the OpenAI message format:
```
[
  {"role": "system", "content": "Your system instruction here"},
  {"role": "user", "content": "Your query here"}
]
```
It appears impossible to configure system instructions in promptfoo.yaml. While this is supported with the Google Vertex provider, Vertex [currently doesn't support Gemini 2.5 Pro](https://www.promptfoo.dev/docs/providers/vertex/).
The [Gemini REST API](https://ai.google.dev/gemini-api/docs/text-generation#system-instructions) allows system prompts in this format:
```
{
    "system_instruction": {"parts": [{"text": "Your system instruction here"}]},
    "contents": [{"parts":[{"text": "Your query here"}]
}
```
However, promptfoo doesn't parse the `system_instruction` key from messages in this format, as seen in the [source code](https://github.com/promptfoo/promptfoo/blob/2188d65c4b4b52f3ed7403c13745570a1a5f7204/src/providers/google/util.ts#L103-L137).
I cannot use the OpenAI format because I need to send inline PDF documents, and the schema for inline documents differs between OpenAI and Gemini. See the [OpenAI documentation](https://platform.openai.com/docs/guides/pdf-files#base64-encoded-files) and [Gemini documentation](https://ai.google.dev/gemini-api/docs/document-processing?lang=rest#inline-data) for examples.


**Describe the solution you'd like**
Any of these solutions would work:
1. Add support for Gemini 2.5 Pro on Vertex AI and document it
2. Enable system instruction configuration for Gemini in promptfoo_config.yaml
3. Enable system instruction parsing from native Gemini format messages

**Describe alternatives you've considered**
I've found a workaround by creating hybrid messages that combine OpenAI format (for system instructions) with Gemini format (for inline PDFs):

```
    prompts = [
        {"role": "system", "content": "{{system_instructions}}"},
        {"role": "user", "content": [
            {"inline_data": {"mime_type": "application/pdf", "data": base64_string}},
        ]
         }
    ]
```
This works in promptfoo but produces messages that would be rejected by both the OpenAI and Gemini APIs if used directly.

**Additional context**
This issue makes it difficult to properly evaluate Gemini 2.5 Pro's document processing capabilities with custom system instructions in a way that matches production usage patterns.


Hey @DanKing1903, this was addressed in #3672 back in April.

You can now use the native Gemini `system_instruction` format in your prompts:

```json
{
    "system_instruction": {"parts": [{"text": "Your system instruction here"}]},
    "contents": [{"parts":[{"text": "Your query here"}]}]
}
```

The Google provider parses the `system_instruction` key and passes it through correctly. This should work with your inline PDF document use case as well, since you can use the native Gemini format throughout.

Let us know if you run into any issues with the current implementation.