Skip to content

Commit 3427d26

Browse files
committed
feat: adds region property to ModelConfig
1 parent a6b80c4 commit 3427d26

3 files changed

Lines changed: 61 additions & 2 deletions

File tree

packages/sdk/server-ai/src/ldai/client.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,10 +832,12 @@ def __evaluate(
832832
if 'model' in variation and isinstance(variation['model'], dict):
833833
parameters = variation['model'].get('parameters', None)
834834
custom = variation['model'].get('custom', None)
835+
region = variation['model'].get('region', None)
835836
model = ModelConfig(
836837
name=variation['model']['name'],
837838
parameters=parameters,
838-
custom=custom
839+
custom=custom,
840+
region=region,
839841
)
840842

841843
variation_key = variation.get('_ldMeta', {}).get('variationKey', '')

packages/sdk/server-ai/src/ldai/models.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,17 @@ class ModelConfig:
5252
Configuration related to the model.
5353
"""
5454

55-
def __init__(self, name: str, parameters: Optional[Dict[str, Any]] = None, custom: Optional[Dict[str, Any]] = None):
55+
def __init__(self, name: str, parameters: Optional[Dict[str, Any]] = None, custom: Optional[Dict[str, Any]] = None, region: Optional[str] = None):
5656
"""
5757
:param name: The name of the model.
5858
:param parameters: Additional model-specific parameters.
5959
:param custom: Additional customer provided data.
60+
:param region: The region the model is deployed in.
6061
"""
6162
self._name = name
6263
self._parameters = parameters
6364
self._custom = custom
65+
self._region = region
6466

6567
@property
6668
def name(self) -> str:
@@ -93,6 +95,13 @@ def get_custom(self, key: str) -> Any:
9395

9496
return self._custom.get(key)
9597

98+
@property
99+
def region(self) -> Optional[str]:
100+
"""
101+
The region the model is deployed in.
102+
"""
103+
return self._region
104+
96105
def to_dict(self) -> dict:
97106
"""
98107
Render the given model config as a dictionary object.
@@ -101,6 +110,7 @@ def to_dict(self) -> dict:
101110
'name': self._name,
102111
'parameters': self._parameters,
103112
'custom': self._custom,
113+
'region': self._region,
104114
}
105115

106116

packages/sdk/server-ai/tests/test_model_config.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,23 @@ def td() -> TestData:
3131
.variation_for_all(0)
3232
)
3333

34+
td.update(
35+
td.flag('model-config-with-region')
36+
.variations(
37+
{
38+
'model': {
39+
'name': 'anthropic.claude-opus-4-7',
40+
'parameters': {},
41+
'region': 'us',
42+
},
43+
'provider': {'name': 'Bedrock'},
44+
'messages': [{'role': 'system', 'content': 'Hello!'}],
45+
'_ldMeta': {'enabled': True, 'variationKey': 'us-variation', 'version': 1},
46+
},
47+
)
48+
.variation_for_all(0)
49+
)
50+
3451
td.update(
3552
td.flag('multiple-messages')
3653
.variations(
@@ -482,6 +499,36 @@ def test_create_tracker_preserves_config_metadata():
482499
assert 'runId' in track_data
483500

484501

502+
def test_model_config_region():
503+
model = ModelConfig('fakeModel', region='us')
504+
assert model.region == 'us'
505+
506+
507+
def test_model_config_region_defaults_to_none():
508+
model = ModelConfig('fakeModel')
509+
assert model.region is None
510+
511+
512+
def test_model_config_region_from_flag(ldai_client: LDAIClient):
513+
context = Context.create('user-key')
514+
default = AICompletionConfigDefault(enabled=True, model=ModelConfig('fake-model'), messages=[])
515+
516+
config = ldai_client.completion_config('model-config-with-region', context, default)
517+
518+
assert config.model is not None
519+
assert config.model.region == 'us'
520+
521+
522+
def test_model_config_no_region_is_none(ldai_client: LDAIClient):
523+
context = Context.create('user-key')
524+
default = AICompletionConfigDefault(enabled=True, model=ModelConfig('fake-model'), messages=[])
525+
526+
config = ldai_client.completion_config('model-config', context, default)
527+
528+
assert config.model is not None
529+
assert config.model.region is None
530+
531+
485532
def test_create_tracker_each_call_has_different_run_id():
486533
from unittest.mock import Mock
487534

0 commit comments

Comments
 (0)