Skip to content

Commit c05b98e

Browse files
cosminachoclaude
andcommitted
Refactor: separate ByomApiFlavor enum, version 1.8.3
Move BYOM discovery flavors to their own ByomApiFlavor enum instead of mixing them into ApiFlavor. Remove embedding flavors from routing mapping since they can't be set on embedding classes. Version bump to 1.8.3. Tested against live BYO_AS discovery endpoint — factory correctly resolves: - OpenAiChatCompletions → UiPathChatOpenAI - OpenAiEmbeddings → UiPathOpenAIEmbeddings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e33d8df commit c05b98e

9 files changed

Lines changed: 41 additions & 31 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
All notable changes to `uipath_llm_client` (core package) will be documented in this file.
44

5-
## [1.9.0] - 2026-04-16
5+
## [1.8.3] - 2026-04-16
66

77
### Added
88
- BYOM API flavor constants for discovery endpoint: `OpenAiChatCompletions`, `OpenAiResponses`, `OpenAiEmbeddings`, `GeminiGenerateContent`, `GeminiEmbeddings`, `AwsBedrockInvoke`, `AwsBedrockConverse`

packages/uipath_langchain_client/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
All notable changes to `uipath_langchain_client` will be documented in this file.
44

5-
## [1.9.0] - 2026-04-16
5+
## [1.8.3] - 2026-04-16
66

77
### Added
88
- Factory functions (`get_chat_model`, `get_embedding_model`) now automatically resolve BYOM discovery API flavors to the correct client and routing flavor

packages/uipath_langchain_client/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ readme = "README.md"
66
requires-python = ">=3.11"
77
dependencies = [
88
"langchain>=1.2.15",
9-
"uipath-llm-client>=1.9.0",
9+
"uipath-llm-client>=1.8.3",
1010
]
1111

1212
[project.optional-dependencies]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
__title__ = "UiPath LangChain Client"
22
__description__ = "A Python client for interacting with UiPath's LLM services via LangChain."
3-
__version__ = "1.9.0"
3+
__version__ = "1.8.3"

packages/uipath_langchain_client/src/uipath_langchain_client/settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
BYOM_TO_ROUTING_FLAVOR,
2828
ApiFlavor,
2929
ApiType,
30+
ByomApiFlavor,
3031
RoutingMode,
3132
VendorType,
3233
)
@@ -40,6 +41,7 @@
4041
"ApiType",
4142
"RoutingMode",
4243
"ApiFlavor",
44+
"ByomApiFlavor",
4345
"VendorType",
4446
"API_FLAVOR_TO_VENDOR_TYPE",
4547
"BYOM_TO_ROUTING_FLAVOR",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
__title__ = "UiPath LLM Client"
22
__description__ = "A Python client for interacting with UiPath's LLM services."
3-
__version__ = "1.9.0"
3+
__version__ = "1.8.3"

src/uipath/llm_client/clients/litellm/client.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
BYOM_TO_ROUTING_FLAVOR,
3131
ApiFlavor,
3232
ApiType,
33+
ByomApiFlavor,
3334
RoutingMode,
3435
VendorType,
3536
)
@@ -88,14 +89,14 @@
8889
"converse": "bedrock",
8990
"invoke": "bedrock",
9091
"anthropic-claude": "vertex_ai",
91-
# BYOM discovery flavors (mapped via routing flavor resolution)
92-
"OpenAiChatCompletions": "openai",
93-
"OpenAiResponses": "openai",
94-
"OpenAiEmbeddings": "openai",
95-
"GeminiGenerateContent": "gemini",
96-
"GeminiEmbeddings": "gemini",
97-
"AwsBedrockInvoke": "bedrock",
98-
"AwsBedrockConverse": "bedrock",
92+
# BYOM discovery flavors
93+
ByomApiFlavor.OPENAI_CHAT_COMPLETIONS: "openai",
94+
ByomApiFlavor.OPENAI_RESPONSES: "openai",
95+
ByomApiFlavor.OPENAI_EMBEDDINGS: "openai",
96+
ByomApiFlavor.GEMINI_GENERATE_CONTENT: "gemini",
97+
ByomApiFlavor.GEMINI_EMBEDDINGS: "gemini",
98+
ByomApiFlavor.AWS_BEDROCK_INVOKE: "bedrock",
99+
ByomApiFlavor.AWS_BEDROCK_CONVERSE: "bedrock",
99100
}
100101

101102
_ANTHROPIC_FAMILY = "anthropicclaude"

src/uipath/llm_client/settings/__init__.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,13 @@
3030
from typing import Literal
3131

3232
from uipath.llm_client.settings.base import UiPathAPIConfig, UiPathBaseSettings
33-
from uipath.llm_client.settings.constants import ApiFlavor, ApiType, RoutingMode, VendorType
33+
from uipath.llm_client.settings.constants import (
34+
ApiFlavor,
35+
ApiType,
36+
ByomApiFlavor,
37+
RoutingMode,
38+
VendorType,
39+
)
3440
from uipath.llm_client.settings.llmgateway import LLMGatewaySettings
3541
from uipath.llm_client.settings.platform import PlatformSettings
3642

@@ -96,4 +102,5 @@ def get_default_client_settings(
96102
"RoutingMode",
97103
"VendorType",
98104
"ApiFlavor",
105+
"ByomApiFlavor",
99106
]

src/uipath/llm_client/settings/constants.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,17 @@ class VendorType(StrEnum):
2020

2121

2222
class ApiFlavor(StrEnum):
23-
# Routing-level flavors (used in X-UiPath-LlmGateway-ApiFlavor header)
2423
CHAT_COMPLETIONS = "chat-completions"
2524
RESPONSES = "responses"
2625
GENERATE_CONTENT = "generate-content"
2726
CONVERSE = "converse"
2827
INVOKE = "invoke"
2928
ANTHROPIC_CLAUDE = "anthropic-claude"
3029

31-
# BYOM discovery flavors (returned by discovery endpoint for BYOM models)
30+
31+
class ByomApiFlavor(StrEnum):
32+
"""API flavors returned by the discovery endpoint for BYOM models."""
33+
3234
OPENAI_CHAT_COMPLETIONS = "OpenAiChatCompletions"
3335
OPENAI_RESPONSES = "OpenAiResponses"
3436
OPENAI_EMBEDDINGS = "OpenAiEmbeddings"
@@ -38,29 +40,27 @@ class ApiFlavor(StrEnum):
3840
AWS_BEDROCK_CONVERSE = "AwsBedrockConverse"
3941

4042

41-
API_FLAVOR_TO_VENDOR_TYPE: dict[ApiFlavor, VendorType] = {
42-
# Routing flavors
43+
API_FLAVOR_TO_VENDOR_TYPE: dict[str, VendorType] = {
4344
ApiFlavor.CHAT_COMPLETIONS: VendorType.OPENAI,
4445
ApiFlavor.RESPONSES: VendorType.OPENAI,
4546
ApiFlavor.GENERATE_CONTENT: VendorType.VERTEXAI,
4647
ApiFlavor.ANTHROPIC_CLAUDE: VendorType.VERTEXAI,
4748
ApiFlavor.CONVERSE: VendorType.AWSBEDROCK,
4849
ApiFlavor.INVOKE: VendorType.AWSBEDROCK,
49-
# BYOM discovery flavors
50-
ApiFlavor.OPENAI_CHAT_COMPLETIONS: VendorType.OPENAI,
51-
ApiFlavor.OPENAI_RESPONSES: VendorType.OPENAI,
52-
ApiFlavor.OPENAI_EMBEDDINGS: VendorType.OPENAI,
53-
ApiFlavor.GEMINI_GENERATE_CONTENT: VendorType.VERTEXAI,
54-
ApiFlavor.GEMINI_EMBEDDINGS: VendorType.VERTEXAI,
55-
ApiFlavor.AWS_BEDROCK_INVOKE: VendorType.AWSBEDROCK,
56-
ApiFlavor.AWS_BEDROCK_CONVERSE: VendorType.AWSBEDROCK,
50+
ByomApiFlavor.OPENAI_CHAT_COMPLETIONS: VendorType.OPENAI,
51+
ByomApiFlavor.OPENAI_RESPONSES: VendorType.OPENAI,
52+
ByomApiFlavor.OPENAI_EMBEDDINGS: VendorType.OPENAI,
53+
ByomApiFlavor.GEMINI_GENERATE_CONTENT: VendorType.VERTEXAI,
54+
ByomApiFlavor.GEMINI_EMBEDDINGS: VendorType.VERTEXAI,
55+
ByomApiFlavor.AWS_BEDROCK_INVOKE: VendorType.AWSBEDROCK,
56+
ByomApiFlavor.AWS_BEDROCK_CONVERSE: VendorType.AWSBEDROCK,
5757
}
5858

5959

6060
BYOM_TO_ROUTING_FLAVOR: dict[str, ApiFlavor] = {
61-
ApiFlavor.OPENAI_CHAT_COMPLETIONS: ApiFlavor.CHAT_COMPLETIONS,
62-
ApiFlavor.OPENAI_RESPONSES: ApiFlavor.RESPONSES,
63-
ApiFlavor.GEMINI_GENERATE_CONTENT: ApiFlavor.GENERATE_CONTENT,
64-
ApiFlavor.AWS_BEDROCK_INVOKE: ApiFlavor.INVOKE,
65-
ApiFlavor.AWS_BEDROCK_CONVERSE: ApiFlavor.CONVERSE,
61+
ByomApiFlavor.OPENAI_CHAT_COMPLETIONS: ApiFlavor.CHAT_COMPLETIONS,
62+
ByomApiFlavor.OPENAI_RESPONSES: ApiFlavor.RESPONSES,
63+
ByomApiFlavor.GEMINI_GENERATE_CONTENT: ApiFlavor.GENERATE_CONTENT,
64+
ByomApiFlavor.AWS_BEDROCK_INVOKE: ApiFlavor.INVOKE,
65+
ByomApiFlavor.AWS_BEDROCK_CONVERSE: ApiFlavor.CONVERSE,
6666
}

0 commit comments

Comments
 (0)