Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/cd-langchain.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:

- name: Wait for package indexing
if: github.event_name == 'workflow_run'
run: sleep 60
run: sleep 120

- name: Setup uv
uses: astral-sh/setup-uv@v7
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

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

## [1.2.1] - 2026-02-18

### Fix
- TImeout fixes, change typing from int to float
- remove timeout=None from all clients -> caused overriding the default timeout set up on the UiPathHttpxClient

## [1.2.0] - 2026-02-18

### Stable release
Expand Down
6 changes: 6 additions & 0 deletions packages/uipath_langchain_client/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

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

## [1.2.1] - 2026-02-18

### Fix
- TImeout fixes, change typing from int to float
- remove timeout=None from all clients -> caused overriding the default timeout set up on the UiPathHttpxClient

## [1.2.0] - 2026-02-18

### Stable release
Expand Down
2 changes: 1 addition & 1 deletion packages/uipath_langchain_client/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"langchain>=1.2.7",
"uipath-llm-client>=1.2.0",
"uipath-llm-client>=1.2.1",
]

[project.optional-dependencies]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
__title__ = "UiPath LangChain Client"
__description__ = "A Python client for interacting with UiPath's LLM services via LangChain."
__version__ = "1.2.0"
__version__ = "1.2.1"
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ class UiPathBaseLLMClient(BaseModel, ABC):
},
description="Default request headers to include in requests",
)
request_timeout: int | None = Field(
request_timeout: float | None = Field(
alias="timeout",
validation_alias=AliasChoices("timeout", "request_timeout", "default_request_timeout"),
default=None,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ def _anthropic_client(
base_url=str(self.uipath_sync_client.base_url),
default_headers=dict(self.uipath_sync_client.headers),
max_retries=0, # handled by the UiPathBaseLLMClient
timeout=None, # handled by the UiPathBaseLLMClient
http_client=self.uipath_sync_client,
)
case "vertexai":
Expand All @@ -76,7 +75,6 @@ def _anthropic_client(
access_token="PLACEHOLDER",
base_url=str(self.uipath_sync_client.base_url),
default_headers=dict(self.uipath_sync_client.headers),
timeout=None, # handled by the UiPathBaseLLMClient
max_retries=0, # handled by the UiPathBaseLLMClient
http_client=self.uipath_sync_client,
)
Expand All @@ -87,7 +85,6 @@ def _anthropic_client(
aws_region="PLACEHOLDER",
base_url=str(self.uipath_sync_client.base_url),
default_headers=dict(self.uipath_sync_client.headers),
timeout=None, # handled by the UiPathBaseLLMClient
max_retries=0, # handled by the UiPathBaseLLMClient
http_client=self.uipath_sync_client,
)
Expand All @@ -96,7 +93,6 @@ def _anthropic_client(
api_key="PLACEHOLDER",
base_url=str(self.uipath_sync_client.base_url),
default_headers=dict(self.uipath_sync_client.headers),
timeout=None, # handled by the UiPathBaseLLMClient
max_retries=0, # handled by the UiPathBaseLLMClient
http_client=self.uipath_sync_client,
)
Expand All @@ -112,7 +108,6 @@ def _async_anthropic_client(
base_url=str(self.uipath_async_client.base_url),
default_headers=dict(self.uipath_async_client.headers),
max_retries=0, # handled by the UiPathBaseLLMClient
timeout=None, # handled by the UiPathBaseLLMClient
http_client=self.uipath_async_client,
)
case "vertexai":
Expand All @@ -122,7 +117,6 @@ def _async_anthropic_client(
access_token="PLACEHOLDER",
base_url=str(self.uipath_async_client.base_url),
default_headers=dict(self.uipath_async_client.headers),
timeout=None, # handled by the UiPathBaseLLMClient
max_retries=0, # handled by the UiPathBaseLLMClient
http_client=self.uipath_async_client,
)
Expand All @@ -133,7 +127,6 @@ def _async_anthropic_client(
aws_region="PLACEHOLDER",
base_url=str(self.uipath_async_client.base_url),
default_headers=dict(self.uipath_async_client.headers),
timeout=None, # handled by the UiPathBaseLLMClient
max_retries=0, # handled by the UiPathBaseLLMClient
http_client=self.uipath_async_client,
)
Expand All @@ -142,7 +135,6 @@ def _async_anthropic_client(
api_key="PLACEHOLDER",
base_url=str(self.uipath_async_client.base_url),
default_headers=dict(self.uipath_async_client.headers),
timeout=None, # handled by the UiPathBaseLLMClient
max_retries=0, # handled by the UiPathBaseLLMClient
http_client=self.uipath_async_client,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,11 @@ class UiPathFireworksEmbeddings(UiPathBaseLLMClient, FireworksEmbeddings):
def setup_uipath_client(self) -> Self:
self.client = OpenAI(
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_sync_client,
)
self.async_client = AsyncOpenAI(
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_async_client,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ async def fix_url_for_streaming_async(request: Request):
http_options=HttpOptions(
base_url=str(self.uipath_sync_client.base_url),
headers=dict(self.uipath_sync_client.headers),
timeout=None, # handled by the UiPath client
retry_options=None, # handled by the UiPath client
httpx_client=self.uipath_sync_client,
httpx_async_client=self.uipath_async_client,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ def setup_uipath_client(self) -> Self:
vertexai=True,
api_key="PLACEHOLDER",
http_options=HttpOptions(
timeout=None, # handled by the UiPath client
retry_options=None, # handled by the UiPath client
base_url=str(self.uipath_sync_client.base_url),
headers=dict(self.uipath_sync_client.headers),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,11 @@ async def fix_url_and_api_flavor_header_async(request: Request):

self.root_client = OpenAI(
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_sync_client,
)
self.root_async_client = AsyncOpenAI(
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_async_client,
)
Expand Down Expand Up @@ -111,15 +109,13 @@ async def fix_url_and_api_flavor_header_async(request: Request):
azure_endpoint="PLACEHOLDER",
api_version="PLACEHOLDER",
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_sync_client,
)
self.root_async_client = AsyncAzureOpenAI(
azure_endpoint="PLACEHOLDER",
api_version="PLACEHOLDER",
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_async_client,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,11 @@ class UiPathOpenAIEmbeddings(UiPathBaseLLMClient, OpenAIEmbeddings):
def setup_uipath_client(self) -> Self:
self.client = OpenAI(
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_sync_client,
).embeddings
self.async_client = AsyncOpenAI(
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_async_client,
).embeddings
Expand Down Expand Up @@ -69,15 +67,13 @@ def setup_uipath_client(self) -> Self:
azure_endpoint="PLACEHOLDER",
api_version="PLACEHOLDER",
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_sync_client,
).embeddings
self.async_client = AsyncAzureOpenAI(
azure_endpoint="PLACEHOLDER",
api_version="PLACEHOLDER",
api_key="PLACEHOLDER",
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_async_client,
).embeddings
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ def setup_uipath_client(self) -> Self:
access_token="PLACEHOLDER",
base_url=str(self.uipath_sync_client.base_url),
default_headers=self.uipath_sync_client.headers,
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_sync_client,
)
Expand All @@ -46,7 +45,6 @@ def setup_uipath_client(self) -> Self:
access_token="PLACEHOLDER",
base_url=str(self.uipath_async_client.base_url),
default_headers=self.uipath_async_client.headers,
timeout=None, # handled by the UiPath client
max_retries=0, # handled by the UiPath client
http_client=self.uipath_async_client,
)
Expand Down
2 changes: 1 addition & 1 deletion src/uipath_llm_client/__version__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
__titile__ = "UiPath LLM Client"
__description__ = "A Python client for interacting with UiPath's LLM services."
__version__ = "1.2.0"
__version__ = "1.2.1"
8 changes: 0 additions & 8 deletions src/uipath_llm_client/clients/anthropic/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ def __init__(
)
super().__init__(
api_key="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
**kwargs,
Expand Down Expand Up @@ -148,7 +147,6 @@ def __init__(
)
super().__init__(
api_key="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
**kwargs,
Expand Down Expand Up @@ -201,7 +199,6 @@ def __init__(
aws_access_key="PLACEHOLDER",
aws_secret_key="PLACEHOLDER",
aws_region="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
**kwargs,
Expand Down Expand Up @@ -254,7 +251,6 @@ def __init__(
aws_access_key="PLACEHOLDER",
aws_secret_key="PLACEHOLDER",
aws_region="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
**kwargs,
Expand Down Expand Up @@ -307,7 +303,6 @@ def __init__(
region="PLACEHOLDER",
project_id="PLACEHOLDER",
access_token="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
**kwargs,
Expand Down Expand Up @@ -360,7 +355,6 @@ def __init__(
region="PLACEHOLDER",
project_id="PLACEHOLDER",
access_token="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
**kwargs,
Expand Down Expand Up @@ -411,7 +405,6 @@ def __init__(
)
super().__init__(
api_key="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
**kwargs,
Expand Down Expand Up @@ -462,7 +455,6 @@ def __init__(
)
super().__init__(
api_key="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
**kwargs,
Expand Down
1 change: 0 additions & 1 deletion src/uipath_llm_client/clients/google/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ def __init__(
http_options=HttpOptions(
base_url=str(httpx_client.base_url),
headers=dict(httpx_client.headers),
timeout=None, # handled by the UiPath client
retry_options=None, # handled by the UiPath client
httpx_client=httpx_client,
httpx_async_client=httpx_async_client,
Expand Down
4 changes: 0 additions & 4 deletions src/uipath_llm_client/clients/openai/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ def __init__(
)
super().__init__(
api_key="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
)
Expand Down Expand Up @@ -90,7 +89,6 @@ def __init__(
)
super().__init__(
api_key="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
)
Expand Down Expand Up @@ -132,7 +130,6 @@ def __init__(
azure_endpoint="PLACEHOLDER",
api_version="PLACEHOLDER",
api_key="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
)
Expand Down Expand Up @@ -174,7 +171,6 @@ def __init__(
azure_endpoint="PLACEHOLDER",
api_version="PLACEHOLDER",
api_key="PLACEHOLDER",
timeout=None,
max_retries=0,
http_client=httpx_client,
)
2 changes: 1 addition & 1 deletion src/uipath_llm_client/utils/retry.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@


# Default retry configuration values
_DEFAULT_RETRY_ON_EXCEPTIONS: tuple[type[UiPathAPIError], ...] = (UiPathRateLimitError,)
_DEFAULT_RETRY_ON_EXCEPTIONS: tuple[type[Exception], ...] = (UiPathRateLimitError,)
_DEFAULT_INITIAL_DELAY: float = 2.0
_DEFAULT_MAX_DELAY: float = 60.0
_DEFAULT_EXP_BASE: float = 2.0
Expand Down
2 changes: 1 addition & 1 deletion src/uipath_llm_client/utils/ssl_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def create_ssl_context():

def get_httpx_ssl_client_kwargs() -> dict[str, Any]:
"""Get standardized httpx client configuration."""
client_kwargs: dict[str, Any] = {"follow_redirects": True, "timeout": 30.0}
client_kwargs: dict[str, Any] = {"follow_redirects": True}

# Check environment variable to disable SSL verification
disable_ssl_env = os.environ.get("UIPATH_DISABLE_SSL_VERIFY", "").lower()
Expand Down
Loading