Skip to content

Commit 13ca2db

Browse files
cosminachoclaude
andcommitted
Fix: discovered BYOM api_flavor takes precedence and applies to embeddings
- Discovered BYOM api_flavor now overrides user-supplied api_flavor in both the LangChain chat factory and the LiteLLM client - get_embedding_model now reads discovered_api_flavor consistently (not just as a vendor fallback when vendor is None) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c05b98e commit 13ca2db

2 files changed

Lines changed: 18 additions & 11 deletions

File tree

  • packages/uipath_langchain_client/src/uipath_langchain_client
  • src/uipath/llm_client/clients/litellm

packages/uipath_langchain_client/src/uipath_langchain_client/factory.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,11 @@ def get_chat_model(
161161
raise ValueError("No vendor type or api flavor found in model info")
162162
discovered_vendor_type = discovered_vendor_type.lower()
163163

164-
# For BYOM models, derive routing api_flavor from the discovered BYOM flavor
165-
if api_flavor is None and discovered_api_flavor is not None:
166-
api_flavor = BYOM_TO_ROUTING_FLAVOR.get(discovered_api_flavor)
164+
# Discovered BYOM api_flavor takes precedence over user-supplied api_flavor
165+
if discovered_api_flavor is not None:
166+
routing_flavor = BYOM_TO_ROUTING_FLAVOR.get(discovered_api_flavor)
167+
if routing_flavor is not None:
168+
api_flavor = routing_flavor
167169

168170
match discovered_vendor_type:
169171
case VendorType.OPENAI:
@@ -328,10 +330,9 @@ def get_embedding_model(
328330
)
329331

330332
discovered_vendor_type = model_info.get("vendor")
331-
if discovered_vendor_type is None:
332-
discovered_api_flavor = model_info.get("apiFlavor")
333-
if discovered_api_flavor is not None:
334-
discovered_vendor_type = API_FLAVOR_TO_VENDOR_TYPE.get(discovered_api_flavor)
333+
discovered_api_flavor = model_info.get("apiFlavor")
334+
if discovered_vendor_type is None and discovered_api_flavor is not None:
335+
discovered_vendor_type = API_FLAVOR_TO_VENDOR_TYPE.get(discovered_api_flavor)
335336
if discovered_vendor_type is None:
336337
raise ValueError(
337338
f"No vendor type found in model info for embedding model '{model_name}'. "

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,11 +220,17 @@ def _discover_and_build_api_config(
220220
raise ValueError(f"Cannot determine vendor for model '{self._model_name}'")
221221

222222
resolved_vendor = str(vendor_type or discovered_vendor).lower()
223-
resolved_flavor = str(api_flavor) if api_flavor is not None else discovered_flavor
224223

225-
# Resolve BYOM discovery flavors to routing-level flavors
226-
if resolved_flavor is not None:
227-
resolved_flavor = BYOM_TO_ROUTING_FLAVOR.get(resolved_flavor, resolved_flavor)
224+
# Discovered BYOM api_flavor takes precedence over user-supplied api_flavor
225+
routing_flavor = (
226+
BYOM_TO_ROUTING_FLAVOR.get(discovered_flavor) if discovered_flavor is not None else None
227+
)
228+
if routing_flavor is not None:
229+
resolved_flavor: str | None = routing_flavor
230+
elif api_flavor is not None:
231+
resolved_flavor = str(api_flavor)
232+
else:
233+
resolved_flavor = discovered_flavor
228234

229235
# OpenAI defaults to chat-completions when no flavor is discovered
230236
if resolved_flavor is None and resolved_vendor in ("openai", "azure"):

0 commit comments

Comments
 (0)