MultiModelProviderMap¶
The MultiModelProviderMap class manages custom mappings of model name prefixes to ModelProvider instances. It allows you to customize how MultiModelProvider routes model requests.
Overview¶
MultiModelProviderMap provides a flexible way to:
- Map custom prefixes to specific provider instances
- Override default provider behavior
- Support multiple instances of the same provider type
- Dynamically add or remove provider mappings
Constructor¶
Creates an empty provider map. Use the methods below to add provider mappings.
Methods¶
add_provider() / addProvider()¶
Adds a new prefix-to-provider mapping.
Parameters¶
| Parameter | Type | Description |
|---|---|---|
prefix |
string |
The prefix to map (e.g., "ollama", "custom"). |
provider |
ModelProvider |
The provider instance to use for this prefix. |
Example¶
remove_provider() / removeProvider()¶
Removes a prefix-to-provider mapping.
Parameters¶
| Parameter | Type | Description |
|---|---|---|
prefix |
string |
The prefix to remove from the mapping. |
Example¶
get_provider() / getProvider()¶
Gets the provider for a given prefix.
Parameters¶
| Parameter | Type | Description |
|---|---|---|
prefix |
string |
The prefix to look up. |
Returns¶
| Type | Description |
|---|---|
ModelProvider \| None / ModelProvider \| undefined |
The provider for the prefix, or None/undefined if not found. |
Example¶
has_prefix() / hasPrefix()¶
Checks if a prefix exists in the mapping.
Parameters¶
| Parameter | Type | Description |
|---|---|---|
prefix |
string |
The prefix to check. |
Returns¶
| Type | Description |
|---|---|
boolean |
True if the prefix exists, False otherwise. |
Example¶
get_mapping() / getMapping()¶
Gets a copy of all prefix-to-provider mappings.
Returns¶
| Type | Description |
|---|---|
Dict[str, ModelProvider] / Map<string, ModelProvider> |
A copy of all mappings. Modifying this copy does not affect the original map. |
Example¶
set_mapping() / setMapping()¶
Replaces all mappings with a new set of mappings.
Parameters¶
| Parameter | Type | Description |
|---|---|---|
mapping |
Dict[str, ModelProvider] / Map<string, ModelProvider> |
The new mapping to use. Replaces all existing mappings. |
Example¶
Examples¶
Basic Usage¶
from timestep import MultiModelProvider, MultiModelProviderMap, OllamaModelProvider
import os
# Create and configure provider map
provider_map = MultiModelProviderMap()
provider_map.add_provider(
"ollama",
OllamaModelProvider(api_key=os.environ.get("OLLAMA_API_KEY"))
)
# Use in MultiModelProvider
model_provider = MultiModelProvider(
provider_map=provider_map,
openai_api_key=os.environ.get("OPENAI_API_KEY", ""),
)
import { MultiModelProvider, MultiModelProviderMap, OllamaModelProvider } from '@timestep-ai/timestep';
// Create and configure provider map
const providerMap = new MultiModelProviderMap();
providerMap.addProvider(
'ollama',
new OllamaModelProvider({ apiKey: Deno.env.get('OLLAMA_API_KEY') })
);
// Use in MultiModelProvider
const modelProvider = new MultiModelProvider({
provider_map: providerMap,
openai_api_key: Deno.env.get('OPENAI_API_KEY') || '',
});
Multiple Provider Instances¶
from timestep import MultiModelProviderMap, OllamaModelProvider
provider_map = MultiModelProviderMap()
# Local Ollama
provider_map.add_provider(
"local",
OllamaModelProvider(base_url="http://localhost:11434")
)
# Remote Ollama
provider_map.add_provider(
"remote",
OllamaModelProvider(base_url="http://ollama-server:11434")
)
# Ollama Cloud
provider_map.add_provider(
"cloud",
OllamaModelProvider(api_key=os.environ.get("OLLAMA_API_KEY"))
)
import { MultiModelProviderMap, OllamaModelProvider } from '@timestep-ai/timestep';
const providerMap = new MultiModelProviderMap();
// Local Ollama
providerMap.addProvider(
'local',
new OllamaModelProvider({ baseURL: 'http://localhost:11434' })
);
// Remote Ollama
providerMap.addProvider(
'remote',
new OllamaModelProvider({ baseURL: 'http://ollama-server:11434' })
);
// Ollama Cloud
providerMap.addProvider(
'cloud',
new OllamaModelProvider({ apiKey: Deno.env.get('OLLAMA_API_KEY') })
);
Dynamic Provider Management¶
from timestep import MultiModelProviderMap, OllamaModelProvider
provider_map = MultiModelProviderMap()
# Add provider conditionally
if os.environ.get("OLLAMA_API_KEY"):
provider_map.add_provider(
"ollama",
OllamaModelProvider(api_key=os.environ.get("OLLAMA_API_KEY"))
)
# Check if provider exists before using
if provider_map.has_prefix("ollama"):
# Use ollama models
pass
else:
# Fall back to OpenAI only
pass
import { MultiModelProviderMap, OllamaModelProvider } from '@timestep-ai/timestep';
const providerMap = new MultiModelProviderMap();
// Add provider conditionally
if (Deno.env.get('OLLAMA_API_KEY')) {
providerMap.addProvider(
'ollama',
new OllamaModelProvider({ apiKey: Deno.env.get('OLLAMA_API_KEY') })
);
}
// Check if provider exists before using
if (providerMap.hasPrefix('ollama')) {
// Use ollama models
} else {
// Fall back to OpenAI only
}
See Also¶
- MultiModelProvider - Uses MultiModelProviderMap for routing
- OllamaModelProvider - Common provider to add to the map
- Architecture - For details on provider mapping