Skip to content

Commit d9dd21f

Browse files
authored
fix: Verify prompt payload exists before accessing it (#19)
1 parent 264f99e commit d9dd21f

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

ldai/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ def model_config(
110110
all_variables.update(variables)
111111
all_variables['ldctx'] = context
112112

113-
if isinstance(variation['prompt'], list) and all(
113+
prompt = None
114+
if 'prompt' in variation and isinstance(variation['prompt'], list) and all(
114115
isinstance(entry, dict) for entry in variation['prompt']
115116
):
116117
prompt = [

ldai/testing/test_model_config.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,32 @@ def td() -> TestData:
6262
.variation_for_all(0)
6363
)
6464

65+
td.update(
66+
td.flag('initial-config-disabled')
67+
.variations(
68+
{
69+
'_ldMeta': {'enabled': False},
70+
},
71+
{
72+
'_ldMeta': {'enabled': True},
73+
}
74+
)
75+
.variation_for_all(0)
76+
)
77+
78+
td.update(
79+
td.flag('initial-config-enabled')
80+
.variations(
81+
{
82+
'_ldMeta': {'enabled': False},
83+
},
84+
{
85+
'_ldMeta': {'enabled': True},
86+
}
87+
)
88+
.variation_for_all(1)
89+
)
90+
6591
return td
6692

6793

@@ -188,3 +214,25 @@ def test_model_config_disabled(ldai_client: LDAIClient, tracker):
188214
assert config.model.id == 'fakeModel'
189215
assert config.model.temperature == 0.1
190216
assert config.model.max_tokens is None
217+
218+
219+
def test_model_initial_config_disabled(ldai_client: LDAIClient, tracker):
220+
context = Context.create('user-key')
221+
default_value = AIConfig(tracker=tracker, enabled=False, model=ModelConfig('fake-model'), prompt=[])
222+
223+
config = ldai_client.model_config('initial-config-disabled', context, default_value, {})
224+
225+
assert config.enabled is False
226+
assert config.model is None
227+
assert config.prompt is None
228+
229+
230+
def test_model_initial_config_enabled(ldai_client: LDAIClient, tracker):
231+
context = Context.create('user-key')
232+
default_value = AIConfig(tracker=tracker, enabled=False, model=ModelConfig('fake-model'), prompt=[])
233+
234+
config = ldai_client.model_config('initial-config-enabled', context, default_value, {})
235+
236+
assert config.enabled is True
237+
assert config.model is None
238+
assert config.prompt is None

0 commit comments

Comments
 (0)