diff --git a/python/packages/core/agent_framework/_clients.py b/python/packages/core/agent_framework/_clients.py index ddd765e654..39c4a39277 100644 --- a/python/packages/core/agent_framework/_clients.py +++ b/python/packages/core/agent_framework/_clients.py @@ -646,8 +646,10 @@ def as_agent( "tokenizer": tokenizer, "additional_properties": dict(additional_properties) if additional_properties is not None else None, } - if function_invocation_configuration is not None: - agent_kwargs["function_invocation_configuration"] = function_invocation_configuration + if function_invocation_configuration is not None and hasattr(self, "function_invocation_configuration"): + client_function_invocation_configuration = getattr(self, "function_invocation_configuration") + if isinstance(client_function_invocation_configuration, dict): + client_function_invocation_configuration.update(function_invocation_configuration) return Agent(**agent_kwargs) diff --git a/python/packages/core/tests/core/test_clients.py b/python/packages/core/tests/core/test_clients.py index 7657993d56..d7f2ec0945 100644 --- a/python/packages/core/tests/core/test_clients.py +++ b/python/packages/core/tests/core/test_clients.py @@ -58,6 +58,14 @@ def test_base_client_as_agent_uses_explicit_additional_properties(chat_client_ba assert agent.additional_properties == {"team": "core"} +def test_base_client_as_agent_applies_function_invocation_configuration( + chat_client_base: SupportsChatGetResponse, +) -> None: + chat_client_base.as_agent(function_invocation_configuration={"max_iterations": 8}) # type: ignore[attr-defined] + + assert chat_client_base.function_invocation_configuration["max_iterations"] == 8 # type: ignore[attr-defined] + + async def test_base_client_get_response_uses_explicit_client_kwargs(chat_client_base: SupportsChatGetResponse) -> None: async def fake_inner_get_response(**kwargs): assert kwargs["trace_id"] == "trace-123"