| name | bx-ai-models |
| description | Use this skill when configuring AI models with aiModel(): selecting providers, setting default parameters, structured output schemas, working with the service BIF aiService(), and pre-configuring providers in module settings. |
bx-ai: Models & Providers
aiModel() BIF
aiModel( provider="", params={}, apiKey="" )
Returns a reusable model object used in pipelines, agents, and direct calls.
model = aiModel()
model = aiModel( provider: "openai" )
model = aiModel( provider: "claude" )
model = aiModel( provider: "gemini" )
model = aiModel( provider: "ollama" )
model = aiModel(
provider: "openai",
params : {
model : "gpt-4o",
temperature: 0.7,
max_tokens : 2000
}
)
Available Providers
| Provider | Key Name | Notes |
|---|
| OpenAI | openai | GPT-4o, GPT-4-turbo, o1, etc. |
| Anthropic Claude | claude | Claude 3.5 Sonnet, Haiku, Opus |
| Google Gemini | gemini | Gemini 1.5 Pro, Flash |
| Grok (xAI) | grok | Grok-2 |
| Groq | groq | Ultra-fast inference; Llama, Mixtral |
| DeepSeek | deepseek | DeepSeek-R1, DeepSeek-V3 |
| Ollama | ollama | Local models — no API key needed |
| Mistral | mistral | Mistral Large, Pixtral |
| Perplexity | perplexity | Online search-augmented |
Module-Level Provider Config (Recommended)
Configure providers once in ModuleConfig.bx or boxlang.json rather than repeating API keys in every call:
moduleSettings = {
"bx-ai": {
defaultProvider: "openai",
providers: {
openai: {
apiKey: server.system.environment.OPENAI_API_KEY,
model : "gpt-4o"
},
claude: {
apiKey: server.system.environment.ANTHROPIC_API_KEY,
model : "claude-3-5-sonnet-20241022"
}
}
}
}
With pre-configured providers you can omit apiKey everywhere:
result = aiChat( "Hello" )
model = aiModel( provider: "claude" )
agent = aiAgent( name: "Bot", model: aiModel( provider: "openai" ) )
aiService() — Service-Level Access
service = aiService()
providers = service.getProviders()
openaiProvider = service.getProvider( "openai" )
service.setDefaultProvider( "claude" )
Switching Models per Call
result = aiChat(
"Complex reasoning task",
{ model: "o1-preview", temperature: 1 },
{ provider: "openai" }
)
simple = aiChat(
"Is this email spam? Yes or No.",
{ model: "gpt-4o-mini", temperature: 0.0 },
{ provider: "openai" }
)
Common Pitfalls
- ❌
aiModel( "gpt-4o" ) is WRONG — gpt-4o is a model name, not provider
- ✅
aiModel( provider: "openai", params: { model: "gpt-4o" } ) is correct
- ❌ Never hardcode API keys in source code — use environment variables
- ✅ Configure all providers in module settings for centralized management