Models
Configure different LLM providers for CUGA
CUGA supports multiple LLM providers with flexible configuration options. You can configure models through TOML files or override specific settings using environment variables.
Supported Platforms
- OpenAI - GPT models via OpenAI API (also supports LiteLLM via base URL override)
- IBM WatsonX - IBM's enterprise LLM platform
- Azure OpenAI - Microsoft's Azure OpenAI service
- Groq - Groq's LLM platform
- OpenRouter - LLM API gateway provider
- MiniMax - MiniMax-M3 (global or China endpoint)
- Google Gemini - Google GenAI
- Ollama - Local OpenAI-compatible models (for example gpt-oss)
- RITS - IBM Research Internal Token Service (IBM internal)
Option 1: OpenAI 🌐
Setup Instructions:
- Create an account at platform.openai.com
- Generate an API key from your API keys page
- Add to your
.envfile:# For OpenAI: # AGENT_SETTING_CONFIG="settings.openai.toml" #Could be replaced by the settings in ./configurations/models # OPENAI_API_KEY="XXXXXX" # OPENAI_API_VERSION="2024-08-01-preview"
Default Values:
- Model:
gpt-4o - API Version: OpenAI's default API Version
- Base URL: OpenAI's default endpoint
Environment Variable Override: You can override the model name using:
MODEL_NAME="gpt-4-turbo"Option 2: IBM WatsonX 🔵
Setup Instructions:
- Access IBM WatsonX
- Create a project and get your credentials:
- Project ID
- API Key
- Region/URL
- Add to your
.envfile:# For WatsonX # AGENT_SETTING_CONFIG="settings.watsonx.toml" #Could be replaced by the settings in ./configurations/models # WATSONX_PROJECT_ID="XXXXXX" # WATSONX_URL="https://us-south.ml.cloud.ibm.com" # WATSONX_APIKEY="XXXXXX"
Default Values:
- Model:
meta-llama/llama-4-maverick-17b-128e-instruct-fp8
Environment Variable Override: You can override the model name using:
MODEL_NAME="meta-llama/llama-3.1-8b-instruct"Option 3: Azure OpenAI
Setup Instructions:
- Add to your
.envfile:# For Azure Openai # AGENT_SETTING_CONFIG="settings.azure.toml" #Could be replaced by the settings in ./configurations/models # AZURE_OPENAI_API_KEY="XXXXXX" # AZURE_OPENAI_ENDPOINT="XXXXXX"
Environment Variable Override: You can override the model name using:
MODEL_NAME="gpt-4o"Option 4: Groq
Setup Instructions:
- Add to your
.envfile:# For Groq # AGENT_SETTING_CONFIG="settings.groq.toml" # GROQ_API_KEY="XXXX"
Environment Variable Override: You can override the model name using:
MODEL_NAME="openai/gpt-oss-120b"- Install dependencies
uv sync --group groq
Option 5: OpenRouter
Setup Instructions:
- Create an account at openrouter.ai
- Generate an API key from your account settings
- Add to your
.envfile:
# For OpenRouter
# AGENT_SETTING_CONFIG="settings.openrouter.toml"
# OPENROUTER_API_KEY="XXXX"
# OPENROUTER_BASE_URL="https://openrouter.ai/api/v1"Default Values:
- Base URL:
https://openrouter.ai/api/v1 - Model: Configurable via
MODEL_NAMEenvironment variable
Environment Variable Override: You can override the model name using:
MODEL_NAME="openai/gpt-4o"Note: OpenRouter provides access to multiple model providers. Refer to OpenRouter's model documentation for available models and their pricing.
Option 6: RITS (IBM Internal)
RITS (Research Internal Token Service) is an IBM-internal LLM gateway service.
Setup Instructions:
- Get your RITS API key from the internal service
- Add to your
.envfile:# For RITS AGENT_SETTING_CONFIG="settings.rits.toml" RITS_API_KEY="XXXXXX"
Default Values:
- Model:
rits/openai/gpt-oss-120b - URL:
http://localhost:4000
Environment Variable Override: You can override the model name using:
MODEL_NAME="rits/openai/gpt-4o"Note: RITS is only available for IBM Research users with access to the internal service.
Option 7: MiniMax
MiniMax-M3 over an OpenAI-compatible API. Default endpoint is global English (https://api.minimax.io/v1).
Setup Instructions:
-
Add to your
.envfile:AGENT_SETTING_CONFIG="settings.minimax.toml" MINIMAX_API_KEY="XXXXXX" # Optional: MINIMAX_BASE_URL="https://api.minimax.io/v1" -
For the China endpoint, either set
MINIMAX_REGION=cnorMINIMAX_BASE_URL=https://api.minimaxi.com/v1.
Default Values:
- Model:
MiniMax-M3 - URL:
https://api.minimax.io/v1(or China whenMINIMAX_REGIONiscn/china)
Environment Variable Override:
MODEL_NAME="MiniMax-M3"Option 8: Google Gemini
Setup Instructions:
- Add to your
.envfile:AGENT_SETTING_CONFIG="settings.google.toml" GOOGLE_API_KEY="XXXXXX"
Environment Variable Override:
MODEL_NAME="gemini-2.0-flash"Option 9: Ollama (local)
Ollama is configured as an OpenAI-compatible endpoint. A dummy API key is required by the client and ignored by Ollama.
Setup Instructions:
- Run Ollama locally and pull a model (for example
gpt-oss:20b). - Add to your
.envfile:AGENT_SETTING_CONFIG="settings.ollama.toml" OPENAI_API_KEY="ollama" # Optional: OPENAI_BASE_URL="http://localhost:11434/v1"
The bundled profile uses a 300s timeout (local generation can exceed the default 61s) and turns vision off for text-only models such as gpt-oss.
Environment Variable Override:
MODEL_NAME="gpt-oss:20b"LiteLLM Support
CUGA supports LiteLLM through the OpenAI configuration by overriding the base URL:
- Add to your
.envfile:# For LiteLLM: # AGENT_SETTING_CONFIG="settings.openai.toml" #Could be replaced by the settings in ./configurations/models # OPENAI_API_KEY="XXXXXX" # OPENAI_BASE_URL="XXXXXX"
Environment Variable Override: You can override the model name using:
MODEL_NAME="gpt-4-turbo"Configuration Files
CUGA uses TOML configuration files located in src/cuga/configurations/models/:
settings.openai.toml- OpenAI configuration (also supports LiteLLM via base URL override)settings.openai.reasoning-high.toml- same as OpenAI, withreasoning_effort = "high"settings.openai.reasoning-high-32k.toml- high reasoning effort with larger token budgetssettings.watsonx.toml- WatsonX configurationsettings.azure.toml- Azure OpenAI configurationsettings.groq.toml- Groq configurationsettings.openrouter.toml- OpenRouter configurationsettings.minimax.toml- MiniMax configurationsettings.google.toml- Google Gemini configurationsettings.ollama.toml- local Ollama (OpenAI-compatible)settings.rits.toml- RITS configuration (IBM internal)settings.litellm.toml- LiteLLM gateway
Each file contains agent-specific model settings that can be overridden by environment variables.
Reasoning-effort profiles
For models served over an OpenAI-compatible endpoint that honor reasoning_effort:
AGENT_SETTING_CONFIG="settings.openai.reasoning-high.toml"Use settings.openai.reasoning-high-32k.toml if high effort crowds out visible output (empty completions) — that profile enlarges max_tokens so reasoning and the answer can both fit. Reasoning tokens count against the same budget.
Settings File Content Structure
Each settings file contains configuration for different CUGA agents. You can configure each agent independently with different models and parameters:
OpenAI Configuration Example
[agent.task_decomposition.model]
platform = "openai"
temperature = 0.1
max_tokens = 1000
[agent.planner.model]
platform = "openai"
temperature = 0.1
max_tokens = 5000
[agent.chat.model]
platform = "openai"
temperature = 0.1
max_tokens = 5000
[agent.shortlister.model]
platform = "openai"
temperature = 0.1
max_tokens = 7000WatsonX Configuration Example
[agent.shortlister.model]
platform = "watsonx"
model_name = "meta-llama/llama-4-maverick-17b-128e-instruct-fp8"
temperature = 0.1
max_tokens = 7000
[agent.planner.model]
platform = "watsonx"
model_name = "meta-llama/llama-4-maverick-17b-128e-instruct-fp8"
temperature = 0.1
max_tokens = 5000
[agent.chat.model]
platform = "watsonx"
model_name = "meta-llama/llama-4-maverick-17b-128e-instruct-fp8"
temperature = 0.1
max_tokens = 5000OpenRouter Configuration Example
[agent.task_decomposition.model]
platform = "openrouter"
temperature = 0.1
max_tokens = 1000
[agent.planner.model]
platform = "openrouter"
temperature = 0.1
max_tokens = 5000
[agent.chat.model]
platform = "openrouter"
temperature = 0.1
max_tokens = 5000
[agent.shortlister.model]
platform = "openrouter"
temperature = 0.1
max_tokens = 7000Switching Between Providers
Method 1: Environment Variable
# Switch to OpenAI
export AGENT_SETTING_CONFIG="settings.openai.toml"
# Switch to WatsonX
export AGENT_SETTING_CONFIG="settings.watsonx.toml"
# Switch to Azure
export AGENT_SETTING_CONFIG="settings.azure.toml"
# Switch to Groq
export AGENT_SETTING_CONFIG="settings.groq.toml"
# Switch to OpenRouter
export AGENT_SETTING_CONFIG="settings.openrouter.toml"
# Switch to MiniMax
export AGENT_SETTING_CONFIG="settings.minimax.toml"
# Switch to Gemini
export AGENT_SETTING_CONFIG="settings.google.toml"
# Switch to local Ollama
export AGENT_SETTING_CONFIG="settings.ollama.toml"
# Switch to RITS (IBM internal)
export AGENT_SETTING_CONFIG="settings.rits.toml"Method 2: Edit .env File
# Edit .env file
AGENT_SETTING_CONFIG="settings.openai.toml"📚 Next Steps
After configuring your model:
- Environment Setup: Configure other system settings
- Customization Overview: Fine-tune CUGA behavior
- Task modes: API, web, or hybrid
Model configured? Move to Environment Setup!
