Models
model_settings is the block where you configure the language model and provider-specific fields for the parts of the workflow configuration that contain it. The orchestrator and service_agents use this block as described in the Agents section. The same fields also appear under message_processing.compacting and tool_display. See Message Processing and Tool Display Templates for more details.
Example
Minimal orchestrator.model_settings with openai:
{
"name": "Example Workflow",
"orchestrator": {
"name": "Example Workflow",
"model_settings": {
"ai_provider": "openai",
"name": "gpt-5-mini",
"context_size": 400000,
"api_key": {
"owner_type": "project",
"owner_id": "<your-project-id>",
"path": "secret/Custom/<openai-api-key-secret-id>/value"
}
},
"system_prompt": "You are a helpful assistant."
}
}
Provider choice
ai_provider | Typical use |
|---|---|
openai | OpenAI or OpenAI-compatible HTTP APIs |
azure | Azure OpenAI |
anthropic | Claude models |
chariot | Models hosted and served through Chariot |
Provider-specific settings
Use exactly one of the following shapes per model_settings object. For external providers (openai, azure, anthropic), supply api_key as a custom Chariot Secret so the key stays managed by Chariot instead of inlined in your configuration.
Chariot Secret format
An api_key field accepts a custom Chariot Secret reference identifying a secret stored in your organization, project, or user scope. The owner_type must be one of "organization", "project", or "user".
"api_key": {
"owner_type": "project",
"owner_id": "<your-project-id>",
"path": "secret/Custom/<secret-id>/value"
}
OpenAI openai
name is required. This example also sets the optional reasoning_effort.
"model_settings": {
"ai_provider": "openai",
"name": "gpt-5-mini",
"reasoning_effort": "medium",
"api_key": {
"owner_type": "project",
"owner_id": "<your-project-id>",
"path": "secret/Custom/<openai-api-key-secret-id>/value"
}
}
Azure OpenAI azure
"model_settings": {
"ai_provider": "azure",
"name": "gpt-5-mini",
"azure_endpoint": "https://your-resource.openai.azure.com",
"api_version": "2024-02-15-preview",
"api_key": {
"owner_type": "project",
"owner_id": "<your-project-id>",
"path": "secret/Custom/<azure-api-key-secret-id>/value"
}
}
Anthropic anthropic
"model_settings": {
"ai_provider": "anthropic",
"name": "claude-sonnet-4-5",
"api_key": {
"owner_type": "project",
"owner_id": "<your-project-id>",
"path": "secret/Custom/<anthropic-api-key-secret-id>/value"
}
}
Chariot-hosted models
Two patterns are supported for calling a model that's served by your Chariot environment.
Option 1: ai_provider: "chariot"
Set name to the model name in your Chariot catalog. project_name and organization_name come from your Chariot project and organization. Alternatively, if your platform team gives you a direct inference endpoint, set model_id and external_base_url instead of the three catalog detail fields.
"model_settings": {
"ai_provider": "chariot",
"name": "openai/gpt-oss-120b",
"project_name": "your-project",
"organization_name": "your-organization"
}
Two more optional fields are supported on this provider:
max_api_retries: How many times Chariot retries failed HTTP calls to the inference endpoint when talking to your hosted model.openai_reasoning_effort: Turns extra reasoning up or down on Chariot-hosted models that support this control (gpt-oss-120bandgpt-oss-20b).
Option 2: ai_provider: "openai" with chariot_proxy
Use the OpenAI-compatible shape — which lets you set OpenAI-specific fields like reasoning_effort — and route the request to a Chariot-hosted model. Chariot uses your session's bearer token as the API key and reads the inference endpoint from the model record, so api_key must be omitted. Inside chariot_proxy, you can substitute model_id for the three catalog detail fields the same way that was explained in Option 1.
"model_settings": {
"ai_provider": "openai",
"name": "openai/gpt-oss-120b",
"reasoning_effort": "medium",
"chariot_proxy": {
"name": "openai/gpt-oss-120b",
"project_name": "your-project",
"organization_name": "your-organization"
}
}
Additional fields
context_size (optional)
Context window size in tokens. Message Processing uses it with context_threshold when compacting is enabled. If this field is omitted, Chariot automatically determines the context window size for some common models.