Skip to content

Commit 4e0a065

Browse files
authored
Fix: Version update to match the new argument parallel_tool_calls instead of openai_parallel_tool_calls (#305)
1 parent cc35ecf commit 4e0a065

5 files changed

Lines changed: 40 additions & 26 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ readme = { file = "README.md", content-type = "text/markdown" }
66
requires-python = ">=3.11,<3.14"
77
dependencies = [
88
"uipath==2.9.5",
9-
"uipath-langchain[vertex,bedrock]==0.6.4",
9+
"uipath-langchain[vertex,bedrock]==0.7.0",
1010
"langgraph>=1.0.0,<2.0.0",
1111
"azure-monitor-opentelemetry-exporter>=1.0.0b46,<2.0.0",
1212
"opentelemetry-instrumentation-httpx>=0.60b0",

src/uipath_agents/agent_graph_builder/graph.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
from uipath_langchain.agent.tools import create_tools_from_resources
1818
from uipath_langchain.agent.tools.mcp import create_mcp_tools_from_agent
1919

20+
from uipath_agents.agent_graph_builder.version import supports_parallel_tool_calls
21+
2022
from .config import AgentExecutionType, get_thinking_messages_limit
2123
from .llm_utils import create_llm
2224
from .message_utils import create_message_factory
2325
from .session_info_debug_state import SessionInfoDebugStateFactory
24-
from .version import supports_openai_parallel_tool_calls
2526

2627
AGENT_MAX_ITERATIONS_DEFAULT = 25
2728

@@ -81,8 +82,8 @@ async def build_agent_graph(
8182
agent_definition.settings.model
8283
),
8384
is_conversational=agent_definition.is_conversational,
84-
enable_openai_parallel_tool_calls=supports_openai_parallel_tool_calls(
85-
agent_definition.version
85+
parallel_tool_calls=supports_parallel_tool_calls(
86+
agent_definition.version, agent_definition.settings.model
8687
),
8788
)
8889

src/uipath_agents/agent_graph_builder/version.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
_PARALLEL_TOOL_CALLS_MIN_VERSION = Version("1.1.0")
66

77

8-
def supports_openai_parallel_tool_calls(version: str) -> bool:
9-
"""Check if the agent version supports parallel tool calls."""
8+
def supports_parallel_tool_calls(version: str, model_name: str) -> bool:
9+
"""Check if the agent version and model name supports parallel tool calls."""
1010
try:
11-
return Version(version) >= _PARALLEL_TOOL_CALLS_MIN_VERSION
11+
return (
12+
Version(version) >= _PARALLEL_TOOL_CALLS_MIN_VERSION
13+
or "gpt" not in model_name.lower()
14+
)
1215
except InvalidVersion:
1316
return True

tests/unit/agent_graph_builder/test_graph.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414

1515
from uipath_agents.agent_graph_builder import build_agent_graph
1616
from uipath_agents.agent_graph_builder.config import AgentExecutionType
17-
from uipath_agents.agent_graph_builder.version import (
18-
supports_openai_parallel_tool_calls,
19-
)
17+
from uipath_agents.agent_graph_builder.version import supports_parallel_tool_calls
2018

2119

2220
def create_test_agent_definition(**overrides: Any) -> LowCodeAgentDefinition:
@@ -786,28 +784,40 @@ async def test_conversational_agent_uses_conversational_message_factory(self):
786784

787785

788786
class TestSupportsParallelToolCalls:
789-
"""Test _supports_parallel_tool_calls version check."""
787+
"""Test supports_parallel_tool_calls version and model name checks."""
790788

791789
def test_version_1_0_0_is_false(self) -> None:
792-
assert supports_openai_parallel_tool_calls("1.0.0") is False
790+
assert supports_parallel_tool_calls("1.0.0", "gpt-4") is False
793791

794792
def test_version_1_0_9_is_false(self) -> None:
795-
assert supports_openai_parallel_tool_calls("1.0.9") is False
793+
assert supports_parallel_tool_calls("1.0.9", "gpt-4") is False
796794

797795
def test_version_1_1_0_is_true(self) -> None:
798-
assert supports_openai_parallel_tool_calls("1.1.0") is True
796+
assert supports_parallel_tool_calls("1.1.0", "gpt-4") is True
799797

800798
def test_version_1_2_0_is_true(self) -> None:
801-
assert supports_openai_parallel_tool_calls("1.2.0") is True
799+
assert supports_parallel_tool_calls("1.2.0", "gpt-4") is True
802800

803801
def test_version_2_0_0_is_true(self) -> None:
804-
assert supports_openai_parallel_tool_calls("2.0.0") is True
802+
assert supports_parallel_tool_calls("2.0.0", "gpt-4") is True
803+
804+
def test_invalid_version_returns_true(self) -> None:
805+
assert supports_parallel_tool_calls("invalid", "gpt-4") is True
806+
807+
def test_empty_version_returns_true(self) -> None:
808+
assert supports_parallel_tool_calls("", "gpt-4") is True
809+
810+
def test_gpt_model_with_sufficient_version_is_true(self) -> None:
811+
assert supports_parallel_tool_calls("1.1.0", "gpt-4o") is True
812+
813+
def test_gpt_model_name_case_insensitive(self) -> None:
814+
assert supports_parallel_tool_calls("1.1.0", "GPT-4o-mini") is True
805815

806-
def test_invalid_version_is_false(self) -> None:
807-
assert supports_openai_parallel_tool_calls("invalid") is True
816+
def test_non_gpt_model_with_sufficient_version_is_true(self) -> None:
817+
assert supports_parallel_tool_calls("1.1.0", "claude-3-sonnet") is True
808818

809-
def test_empty_string_is_false(self) -> None:
810-
assert supports_openai_parallel_tool_calls("") is True
819+
def test_non_gpt_model_old_version_is_true(self) -> None:
820+
assert supports_parallel_tool_calls("1.0.0", "claude-3-opus") is True
811821

812822

813823
@pytest.mark.asyncio
@@ -847,7 +857,7 @@ async def test_old_version_disables_parallel_tool_calls(self) -> None:
847857
await build_agent_graph(agent_def)
848858

849859
config = mock_create.call_args.kwargs["config"]
850-
assert config.enable_openai_parallel_tool_calls is False
860+
assert config.parallel_tool_calls is False
851861

852862
async def test_new_version_enables_parallel_tool_calls(self) -> None:
853863
agent_def = create_test_agent_definition(version="1.1.0")
@@ -873,4 +883,4 @@ async def test_new_version_enables_parallel_tool_calls(self) -> None:
873883
await build_agent_graph(agent_def)
874884

875885
config = mock_create.call_args.kwargs["config"]
876-
assert config.enable_openai_parallel_tool_calls is True
886+
assert config.parallel_tool_calls is True

uv.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)