Skip to content

Commit 92ddb00

Browse files
committed
fix(response_format): added role mapping + changed default serialization
1 parent dbffd67 commit 92ddb00

3 files changed

Lines changed: 353 additions & 324 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "uipath"
3-
version = "2.1.72"
3+
version = "2.1.73"
44
description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
55
readme = { file = "README.md", content-type = "text/markdown" }
66
requires-python = ">=3.10"

src/uipath/_services/llm_gateway_service.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ def __init__(self, config: Config, execution_context: ExecutionContext) -> None:
347347
@traced(name="llm_chat_completions", run_type="uipath")
348348
async def chat_completions(
349349
self,
350-
messages: List[Dict[str, str]],
350+
messages: Union[List[Dict[str, str]], List[tuple]],
351351
model: str = ChatModels.gpt_4o_mini_2024_07_18,
352352
max_tokens: int = 4096,
353353
temperature: float = 0,
@@ -475,13 +475,31 @@ class Country(BaseModel):
475475
This service uses UiPath's normalized API format which provides consistent
476476
behavior across different underlying model providers and enhanced enterprise features.
477477
"""
478+
role_mapping = {"human": "user", "ai": "assistant"}
479+
converted_messages = []
480+
481+
for message in messages:
482+
if isinstance(message, tuple) and len(message) == 2:
483+
role, content = message
484+
mapped_role = role_mapping.get(role.lower(), role)
485+
converted_messages.append({"role": mapped_role, "content": content})
486+
elif isinstance(message, dict):
487+
role = message.get("role", "")
488+
mapped_role = role_mapping.get(role.lower(), role)
489+
converted_messages.append({**message, "role": mapped_role})
490+
else:
491+
raise ValueError(
492+
f"Invalid message format: {message}. Expected tuple (role, content) or dict with 'role' and 'content' keys."
493+
)
494+
478495
endpoint = EndpointManager.get_normalized_endpoint().format(
479496
model=model, api_version=api_version
480497
)
481498
endpoint = Endpoint("/" + endpoint)
482499

483500
request_body = {
484-
"messages": messages,
501+
# "messages": messages,
502+
"messages": converted_messages,
485503
"max_tokens": max_tokens,
486504
"temperature": temperature,
487505
"n": n,

0 commit comments

Comments
 (0)