Capabilities
Beyond calling Vertex AI models, the DIAL Vertex AI Adapter exposes Gemini thinking, safety settings, Google Search grounding, and code execution, configures Imagen and Veo, caches prompts, balances models across regions and projects, and reaches models through API keys, Azure Foundry, and the native Anthropic Messages API. This reference describes each capability and the DIAL Core settings behind it. It is for platform engineers who tune Vertex AI models in DIAL; it assumes you know Supported models.
Configurable models
Models take extra settings in custom_fields.configuration of the chat request; the model's /configuration endpoint returns the JSON Schema.
| Models | What you can configure |
|---|---|
| Gemini 2.5 and Gemini 3 | Thinking: thinking.include_thoughts and thinking.thinking_budget |
| Gemini | Safety settings per harm category: safety_settings |
| Gemini 2.5 Flash Image | Image generation: image_config.aspect_ratio and image_config.image_size |
| Imagen | Image generation parameters, such as negative prompt, aspect ratio, and watermarking; see the Imagen API |
| Veo | Video generation parameters, such as aspect ratio, compression quality, and duration; see the Veo API |
| Claude | Extended thinking, reasoning level, beta flags, and citations; see the Anthropic adapter |
Gemini thinking
{
"messages": [{ "role": "user", "content": "Explain quantum computing in simple terms." }],
"custom_fields": {
"configuration": {
"thinking": { "include_thoughts": true, "thinking_budget": 2048 }
}
}
}
- With
include_thoughts: true, the thought summaries appear in a DIAL stage titledThinking. thinking_budget: -1makes the budget unlimited.- Gemini 3 also takes the thinking level from the OpenAI
reasoning_effortfield:none,minimum,low,medium, orhigh. A request cannot set bothreasoning_effortandthinking_budget.
Gemini safety settings
"custom_fields": {
"configuration": {
"safety_settings": [
{ "category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH" },
{ "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE" }
]
}
}
See Google's safety settings for the categories and thresholds. For guardrails that DIAL applies to every model, see Guardrails.
Gemini tools
Two Google tools turn on with a static function in tools:
| Tool | Static function | Result |
|---|---|---|
| Grounding with Google Search | google_search | Citations from the pages Google Search found, as DIAL attachments |
| Code execution | code_execution | A Code execution stage with the generated code and its result |
{
"messages": [{ "role": "user", "content": "What are the latest GenAI news?" }],
"tools": [{ "type": "static_function", "static_function": { "name": "google_search" } }]
}
Claude on Vertex AI supports Anthropic's web search tool; see the Anthropic adapter.
Prompt caching
Gemini 2.5 models cache long prompts implicitly: a request above the threshold, 1024 tokens for Gemini 2.5 Flash and 4096 for Gemini 2.5 Pro, is cached. Turn it on with features.autoCachingSupported: true on the DIAL Core model. On a cache hit, usage.prompt_tokens_details.cached_tokens reports the cached tokens.
Regions, projects, and load balancing
Each upstream can set its own region and project in extraData, so DIAL Core can balance one model across them:
"<DIAL_MODEL_ID>": {
"type": "chat",
"endpoint": "<ADAPTER>/openai/deployments/gemini-2.5-flash/chat/completions",
"upstreams": [
{ "extraData": { "region": "us-central1" } },
{ "extraData": { "region": "us-east5" } }
]
}
extraData field | Overrides |
|---|---|
region | GCP_DEFAULT_REGION |
project | GCP_PROJECT_ID |
"region": "global"uses the Vertex AI global endpoint, for the models that support it."region": "us"or"eu"uses a multi-region endpoint.
See Load balancing and upstreams for how Core picks an upstream.
Provisioned throughput headers
Request headers starting with X-Vertex-AI- are passed to Vertex AI as they are, for Gemini models accessed with Google Cloud credentials:
| Header | Value |
|---|---|
X-Vertex-AI-LLM-Request-Type | dedicated for the provisioned throughput quota, shared for pay-as-you-go |
X-Vertex-AI-LLM-Shared-Request-Type | priority for the priority pay-as-you-go quota |
Authentication
| Upstream | How the adapter authenticates |
|---|---|
| Vertex AI | Google Application Default Credentials, with the project and region from the environment or extraData |
| Vertex AI from AWS ECS, EC2 task roles, or EKS Pod Identity | Workload Identity Federation, using the container credential variables the AWS runtime sets: AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, AWS_CONTAINER_CREDENTIALS_FULL_URI, AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE, or AWS_CONTAINER_AUTHORIZATION_TOKEN |
| Gemini 2 and later, Claude, and Mistral through their API keys | The upstream key in DIAL Core |
| Claude in Azure Foundry | The upstream key, or Azure's DefaultAzureCredential without one |
API keys
"gemini-flash-lite": {
"endpoint": "<ADAPTER>/openai/deployments/gemini-2.0-flash-lite-001/chat/completions",
"upstreams": [{ "key": "<GEMINI_API_KEY>" }]
},
"claude-sonnet": {
"endpoint": "<ADAPTER>/openai/deployments/claude-3-5-sonnet-20241022/chat/completions",
"upstreams": [
{ "key": "<ANTHROPIC_API_KEY>", "extraData": { "compatible_model_id": "claude-3-5-sonnet-v2@20241022" } }
]
}
The adapter knows Claude by its Vertex AI ID, so map the Anthropic API model name with compatible_model_id; without it, the adapter answers 404.
Claude in Azure Foundry
"claude-sonnet-foundry": {
"endpoint": "<ADAPTER>/openai/deployments/<FOUNDRY_MODEL_NAME>/chat/completions",
"upstreams": [
{ "endpoint": "https://<FOUNDRY_RESOURCE>.services.ai.azure.com/anthropic/v1/messages", "key": "<OPTIONAL_API_KEY>" }
]
}
Azure Foundry model names differ from Vertex AI ones, so map them to a supported ID, for example with COMPATIBILITY_MAPPING={"<FOUNDRY_MODEL_NAME>": "claude-sonnet-4-5@20250929"}.
Compatibility mode
When Vertex AI releases a model version the adapter does not know yet, serve it through a known, compatible model. Set compatible_model_id on every upstream of the DIAL Core model:
"<DIAL_MODEL_ID>": {
"type": "chat",
"endpoint": "<ADAPTER>/openai/deployments/<NEW_MODEL_ID>/chat/completions",
"upstreams": [{ "extraData": { "compatible_model_id": "<SUPPORTED_MODEL_ID>" } }]
}
The request is processed as for the supported model, but sent to Vertex AI with the new ID; features only the new model has do not work until the adapter supports it. The COMPATIBILITY_MAPPING variable does the same for the whole adapter, but is deprecated in favor of this setting.
Anthropic Messages passthrough
The adapter serves the native Claude API at /anthropic, so clients built on the Anthropic SDK, such as Claude Code, reach Claude on Vertex AI without an Anthropic API key. Requests carry Vertex AI model names, not Claude API aliases. The upstream is chosen per request as for chat: Google Cloud credentials by default, an API key from the x-upstream-key header, or Azure Foundry from the x-upstream-endpoint header. To use Claude Code through DIAL, see Claude Code.
Further reading
- DIAL Vertex AI Adapter configuration — credentials, retries, and connection limits
- DIAL Vertex AI Adapter supported models — every model ID
- Models in DIAL Core —
features,defaults, and upstreams - Connect Claude Code to DIAL — point Claude Code at DIAL's Anthropic Messages endpoint
- Guardrails — what interceptor-based guardrails enforce and where they apply
- Load balancing and upstreams — upstreams, tiers, weights, and retries behind a model