Skip to content

Commit 68fdead

Browse files
committed
Added default values and updated prop names
1 parent 13baea8 commit 68fdead

File tree

2 files changed

+93
-34
lines changed

2 files changed

+93
-34
lines changed

ldai/client.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,15 @@ class LDAIAgentConfig:
191191
192192
Combines agent key with its specific default configuration and variables.
193193
"""
194-
agent_key: str
195-
default_config: LDAIAgentDefaults
194+
key: str
195+
default_value: Optional[LDAIAgentDefaults] = None
196196
variables: Optional[Dict[str, Any]] = None
197197

198+
def __post_init__(self):
199+
"""Set default value if not provided."""
200+
if self.default_value is None:
201+
self.default_value = LDAIAgentDefaults(enabled=False)
202+
198203

199204
# Type alias for multiple agents
200205
LDAIAgents = Dict[str, LDAIAgent]
@@ -237,7 +242,7 @@ def agent(
237242
self,
238243
key: str,
239244
context: Context,
240-
default_value: LDAIAgentDefaults,
245+
default_value: Optional[LDAIAgentDefaults] = None,
241246
variables: Optional[Dict[str, Any]] = None,
242247
) -> LDAIAgent:
243248
"""
@@ -248,6 +253,7 @@ def agent(
248253
249254
Example::
250255
256+
# With explicit default configuration
251257
agent = client.agent(
252258
'research_agent',
253259
context,
@@ -259,6 +265,9 @@ def agent(
259265
{'topic': 'climate change'}
260266
)
261267
268+
# Or with optional default (defaults to {enabled: False})
269+
agent = client.agent('research_agent', context, variables={'topic': 'climate change'})
270+
262271
if agent.enabled:
263272
research_result = agent.instructions # Interpolated instructions
264273
agent.tracker.track_success()
@@ -269,6 +278,10 @@ def agent(
269278
:param variables: Additional variables for template interpolation in instructions.
270279
:return: Configured LDAIAgent instance.
271280
"""
281+
# Set default value if not provided
282+
if default_value is None:
283+
default_value = LDAIAgentDefaults(enabled=False)
284+
272285
# Track single agent usage
273286
self._client.track(
274287
"$ld:ai:agent:function:single",
@@ -295,16 +308,16 @@ def agents(
295308
296309
agents = client.agents([
297310
LDAIAgentConfig(
298-
agent_key='research_agent',
299-
default_config=LDAIAgentDefaults(
311+
key='research_agent',
312+
default_value=LDAIAgentDefaults(
300313
enabled=True,
301314
instructions='You are a research assistant.'
302315
),
303316
variables={'topic': 'climate change'}
304317
),
305318
LDAIAgentConfig(
306-
agent_key='writing_agent',
307-
default_config=LDAIAgentDefaults(
319+
key='writing_agent',
320+
default_value=LDAIAgentDefaults(
308321
enabled=True,
309322
instructions='You are a writing assistant.'
310323
),
@@ -332,12 +345,12 @@ def agents(
332345

333346
for config in agent_configs:
334347
agent = self.__evaluate_agent(
335-
config.agent_key,
348+
config.key,
336349
context,
337-
config.default_config,
350+
config.default_value,
338351
config.variables
339352
)
340-
result[config.agent_key] = agent
353+
result[config.key] = agent
341354

342355
return result
343356

ldai/testing/test_agents.py

Lines changed: 70 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -167,17 +167,17 @@ def test_agents_method_with_configs(ldai_client: LDAIClient):
167167

168168
agent_configs = [
169169
LDAIAgentConfig(
170-
agent_key='customer-support-agent',
171-
default_config=LDAIAgentDefaults(
170+
key='customer-support-agent',
171+
default_value=LDAIAgentDefaults(
172172
enabled=False,
173173
model=ModelConfig('fallback-model'),
174174
instructions="Default support"
175175
),
176176
variables={'company_name': 'Acme Corp'}
177177
),
178178
LDAIAgentConfig(
179-
agent_key='sales-assistant',
180-
default_config=LDAIAgentDefaults(
179+
key='sales-assistant',
180+
default_value=LDAIAgentDefaults(
181181
enabled=False,
182182
model=ModelConfig('fallback-model'),
183183
instructions="Default sales"
@@ -208,16 +208,16 @@ def test_agents_method_different_variables_per_agent(ldai_client: LDAIClient):
208208

209209
agent_configs = [
210210
LDAIAgentConfig(
211-
agent_key='personalized-agent',
212-
default_config=LDAIAgentDefaults(
211+
key='personalized-agent',
212+
default_value=LDAIAgentDefaults(
213213
enabled=True,
214214
instructions="Default personal"
215215
),
216216
variables={} # Will use context only
217217
),
218218
LDAIAgentConfig(
219-
agent_key='customer-support-agent',
220-
default_config=LDAIAgentDefaults(
219+
key='customer-support-agent',
220+
default_value=LDAIAgentDefaults(
221221
enabled=True,
222222
instructions="Default support"
223223
),
@@ -242,8 +242,8 @@ def test_agents_with_multi_context_interpolation(ldai_client: LDAIClient):
242242

243243
agent_configs = [
244244
LDAIAgentConfig(
245-
agent_key='multi-context-agent',
246-
default_config=LDAIAgentDefaults(
245+
key='multi-context-agent',
246+
default_value=LDAIAgentDefaults(
247247
enabled=True,
248248
instructions="Default multi-context"
249249
),
@@ -275,8 +275,8 @@ def test_disabled_agent_multiple_method(ldai_client: LDAIClient):
275275

276276
agent_configs = [
277277
LDAIAgentConfig(
278-
agent_key='disabled-agent',
279-
default_config=LDAIAgentDefaults(enabled=True, instructions="Default"),
278+
key='disabled-agent',
279+
default_value=LDAIAgentDefaults(enabled=True, instructions="Default"),
280280
variables={}
281281
)
282282
]
@@ -354,13 +354,13 @@ def test_agent_tracking_calls(ldai_client: LDAIClient):
354354
# Test multiple agents tracking
355355
agent_configs = [
356356
LDAIAgentConfig(
357-
agent_key='customer-support-agent',
358-
default_config=defaults,
357+
key='customer-support-agent',
358+
default_value=defaults,
359359
variables={}
360360
),
361361
LDAIAgentConfig(
362-
agent_key='sales-assistant',
363-
default_config=defaults,
362+
key='sales-assistant',
363+
default_value=defaults,
364364
variables={}
365365
)
366366
]
@@ -397,24 +397,70 @@ def test_backwards_compatibility_with_config(ldai_client: LDAIClient):
397397
def test_agent_config_dataclass():
398398
"""Test the LDAIAgentConfig dataclass functionality."""
399399
config = LDAIAgentConfig(
400-
agent_key='test-agent',
401-
default_config=LDAIAgentDefaults(
400+
key='test-agent',
401+
default_value=LDAIAgentDefaults(
402402
enabled=True,
403403
instructions="Test instructions"
404404
),
405405
variables={'key': 'value'}
406406
)
407407

408-
assert config.agent_key == 'test-agent'
409-
assert config.default_config.enabled is True
410-
assert config.default_config.instructions == "Test instructions"
408+
assert config.key == 'test-agent'
409+
assert config.default_value.enabled is True
410+
assert config.default_value.instructions == "Test instructions"
411411
assert config.variables == {'key': 'value'}
412412

413413
# Test with no variables
414414
config_no_vars = LDAIAgentConfig(
415-
agent_key='test-agent-2',
416-
default_config=LDAIAgentDefaults(enabled=False)
415+
key='test-agent-2',
416+
default_value=LDAIAgentDefaults(enabled=False)
417417
)
418418

419-
assert config_no_vars.agent_key == 'test-agent-2'
419+
assert config_no_vars.key == 'test-agent-2'
420420
assert config_no_vars.variables is None
421+
422+
423+
def test_agent_config_optional_default_value():
424+
"""Test that LDAIAgentConfig defaults to {enabled: False} when default_value is not provided."""
425+
config = LDAIAgentConfig(key='test-agent')
426+
427+
assert config.key == 'test-agent'
428+
assert config.default_value is not None
429+
assert config.default_value.enabled is False
430+
assert config.variables is None
431+
432+
433+
def test_single_agent_optional_default_value(ldai_client: LDAIClient):
434+
"""Test the single agent() method with optional default_value."""
435+
context = Context.create('user-key')
436+
437+
# Should work with no default_value provided (defaults to {enabled: False})
438+
agent = ldai_client.agent('non-existent-agent', context)
439+
440+
assert agent.enabled is False # Should default to False
441+
assert agent.tracker is not None
442+
443+
444+
def test_agents_method_with_optional_defaults(ldai_client: LDAIClient):
445+
"""Test agents method with optional default_value configurations."""
446+
context = Context.create('user-key')
447+
448+
agent_configs = [
449+
LDAIAgentConfig(key='customer-support-agent'), # No default_value
450+
LDAIAgentConfig(
451+
key='sales-assistant',
452+
default_value=LDAIAgentDefaults(enabled=True, instructions="Custom sales assistant")
453+
)
454+
]
455+
456+
agents = ldai_client.agents(agent_configs, context)
457+
458+
assert len(agents) == 2
459+
460+
# First agent should use default {enabled: False} from auto-generated default_value
461+
support_agent = agents['customer-support-agent']
462+
assert support_agent.enabled is True # From flag configuration
463+
464+
# Second agent should use custom default
465+
sales_agent = agents['sales-assistant']
466+
assert sales_agent.enabled is True

0 commit comments

Comments
 (0)