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 @@ -29,7 +29,7 @@ jobs:
GH_TOKEN: ${{ github.token }}
run: |
# Check if the core package version was also modified in this push
if ! git diff HEAD~1 --name-only | grep -q '^src/uipath_llm_client/__version__.py$'; then
if ! git diff HEAD~1 --name-only | grep -q '^src/uipath/llm_client/__version__.py$'; then
echo "Core package version unchanged — no need to wait."
exit 0
fi
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
branches:
- main
paths:
- 'src/uipath_llm_client/__version__.py'
- 'src/uipath/llm_client/__version__.py'
workflow_dispatch:

jobs:
Expand Down Expand Up @@ -63,7 +63,7 @@ jobs:
- name: Get version
id: version
run: |
VERSION=$(grep '^__version__' src/uipath_llm_client/__version__.py | sed -n 's/.*"\([^"]*\)".*/\1/p')
VERSION=$(grep '^__version__' src/uipath/llm_client/__version__.py | sed -n 's/.*"\([^"]*\)".*/\1/p')
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"

- name: Extract changelog section
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/ci_change_version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,17 @@ jobs:

- name: Validate version update
run: |
core_changes=$(grep -E '^src/uipath_llm_client/' changes.txt | grep -v '__version__.py' || true)
core_version=$(grep -E '^src/uipath_llm_client/__version__.py' changes.txt || true)
core_changes=$(grep -E '^src/uipath/llm_client/' changes.txt | grep -v '__version__.py' || true)
core_version=$(grep -E '^src/uipath/llm_client/__version__.py' changes.txt || true)
if [ -n "$core_changes" ] && [ -z "$core_version" ]; then
echo "::error::uipath-llm-client: package changes detected but no version update in src/uipath_llm_client/__version__.py"
echo "::error::uipath-llm-client: package changes detected but no version update in src/uipath/llm_client/__version__.py"
exit 1
fi
echo "✓ Version is consistent with changes."

- name: Validate changelog update
run: |
core_version=$(grep -E '^src/uipath_llm_client/__version__.py' changes.txt || true)
core_version=$(grep -E '^src/uipath/llm_client/__version__.py' changes.txt || true)
core_changelog=$(grep -E '^CHANGELOG.md' changes.txt || true)
if [ -n "$core_version" ] && [ -z "$core_changelog" ]; then
echo "::error::uipath-llm-client: version changed but no changelog update in CHANGELOG.md"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/publish-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
cat changes.txt

# Check if core package changed
if grep -qE '^src/uipath_llm_client/' changes.txt; then
if grep -qE '^src/uipath/llm_client/' changes.txt; then
echo "core=true" >> $GITHUB_OUTPUT
echo "Core package has changes"
else
Expand Down Expand Up @@ -90,13 +90,13 @@ jobs:
# Process core package if changed
if [ "$CORE_CHANGED" == "true" ]; then
# Read current version from __version__.py
CORE_VERSION=$(grep -oP '__version__\s*=\s*"\K[^"]+' src/uipath_llm_client/__version__.py)
CORE_VERSION=$(grep -oP '__version__\s*=\s*"\K[^"]+' src/uipath/llm_client/__version__.py)
DEV_VERSION="${CORE_VERSION}.dev1${PADDED_PR}${PADDED_RUN}"
MIN_VERSION="${CORE_VERSION}.dev1${PADDED_PR}0000"
MAX_VERSION="${CORE_VERSION}.dev1${PADDED_NEXT_PR}0000"

# Update __version__.py
sed -i "s/__version__ = \".*\"/__version__ = \"${DEV_VERSION}\"/" src/uipath_llm_client/__version__.py
sed -i "s/__version__ = \".*\"/__version__ = \"${DEV_VERSION}\"/" src/uipath/llm_client/__version__.py
echo "Core package version set to $DEV_VERSION"

DEPENDENCIES_EXACT="${DEPENDENCIES_EXACT} \"uipath-llm-client==${DEV_VERSION}\",\n"
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.4] - 2026-02-26

### Refactor
- Restructured project such that uipath_llm_client can be included in uipath as submodule.
- imports are now from uipath.llm_client instead of uipath_llm_client

## [1.2.3] - 2026-02-25

### Feature
Expand Down
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ export LLMGW_SEMANTIC_USER_ID="your-user-id"
Configuration settings for UiPath AgentHub client requests. These settings control routing, authentication, and tracking for requests to AgentHub.

```python
from uipath_llm_client.settings import AgentHubSettings
from uipath.llm_client.settings import AgentHubSettings

settings = AgentHubSettings(
environment="cloud", # UiPath environment
Expand Down Expand Up @@ -158,7 +158,7 @@ settings = AgentHubSettings(
Configuration settings for LLM Gateway client requests. These settings control routing, authentication, and tracking for requests to LLM Gateway.

```python
from uipath_llm_client.settings import LLMGatewaySettings
from uipath.llm_client.settings import LLMGatewaySettings

settings = LLMGatewaySettings(
base_url="https://your-llmgw-url.com",
Expand Down Expand Up @@ -240,7 +240,7 @@ Factory functions automatically detect the model vendor but require settings to

```python
from uipath_langchain_client import get_chat_model, get_embedding_model
from uipath_llm_client.settings import get_default_client_settings
from uipath.llm_client.settings import get_default_client_settings

settings = get_default_client_settings()

Expand All @@ -260,7 +260,7 @@ The normalized API provides a consistent interface across all LLM providers:

```python
from uipath_langchain_client import get_chat_model
from uipath_llm_client.settings import get_default_client_settings
from uipath.llm_client.settings import get_default_client_settings

settings = get_default_client_settings()

Expand Down Expand Up @@ -368,7 +368,7 @@ print(result["messages"][-1].content)
The core `uipath_llm_client` package provides thin wrappers around native vendor SDKs. These are drop-in replacements that route requests through UiPath's infrastructure while preserving the original SDK's interface:

```python
from uipath_llm_client.clients.openai import UiPathOpenAI, UiPathAzureOpenAI
from uipath.llm_client.clients.openai import UiPathOpenAI, UiPathAzureOpenAI

# Drop-in replacement for openai.OpenAI — routes through UiPath
client = UiPathOpenAI(model_name="gpt-4o-2024-11-20")
Expand All @@ -383,7 +383,7 @@ azure_client = UiPathAzureOpenAI(model_name="gpt-4o-2024-11-20")
```

```python
from uipath_llm_client.clients.anthropic import UiPathAnthropic
from uipath.llm_client.clients.anthropic import UiPathAnthropic

# Drop-in replacement for anthropic.Anthropic
client = UiPathAnthropic(model_name="anthropic.claude-sonnet-4-5-20250929-v1:0")
Expand All @@ -396,7 +396,7 @@ print(response.content[0].text)
```

```python
from uipath_llm_client.clients.google import UiPathGoogle
from uipath.llm_client.clients.google import UiPathGoogle

# Drop-in replacement for google.genai.Client
client = UiPathGoogle(model_name="gemini-2.5-flash")
Expand Down Expand Up @@ -424,8 +424,8 @@ All native SDK wrappers are available in sync and async variants:
For completely custom HTTP requests, use the low-level HTTPX client directly:

```python
from uipath_llm_client import UiPathHttpxClient
from uipath_llm_client.settings import UiPathAPIConfig, get_default_client_settings
from uipath.llm_client import UiPathHttpxClient
from uipath.llm_client.settings import UiPathAPIConfig, get_default_client_settings

settings = get_default_client_settings()

Expand Down Expand Up @@ -463,8 +463,8 @@ Pass custom settings when you need more control:

```python
from uipath_langchain_client.clients.openai.chat_models import UiPathAzureChatOpenAI
from uipath_llm_client.settings import AgentHubSettings
from uipath_llm_client.utils.retry import RetryConfig
from uipath.llm_client.settings import AgentHubSettings
from uipath.llm_client.utils.retry import RetryConfig

# Custom settings for AgentHub
settings = AgentHubSettings(environment="cloud") # or "staging", "alpha"
Expand All @@ -489,7 +489,7 @@ chat_model = UiPathAzureChatOpenAI(

```python
from uipath_langchain_client.clients.openai.chat_models import UiPathAzureChatOpenAI
from uipath_llm_client.settings import get_default_client_settings
from uipath.llm_client.settings import get_default_client_settings

# Explicitly specify the backend
agenthub_settings = get_default_client_settings(backend="agenthub")
Expand All @@ -511,7 +511,7 @@ You can instantiate `LLMGatewaySettings` directly for full control over configur
from uipath_langchain_client.clients.openai.chat_models import UiPathAzureChatOpenAI
from uipath_langchain_client.clients.google.chat_models import UiPathChatGoogleGenerativeAI
from uipath_langchain_client.clients.openai.embeddings import UiPathAzureOpenAIEmbeddings
from uipath_llm_client.settings import LLMGatewaySettings
from uipath.llm_client.settings import LLMGatewaySettings

# Create LLMGatewaySettings with explicit configuration
settings = LLMGatewaySettings(
Expand Down Expand Up @@ -553,7 +553,7 @@ vectors = embeddings.embed_documents(["Hello world"])

```python
from uipath_langchain_client import get_chat_model, get_embedding_model
from uipath_llm_client.settings import LLMGatewaySettings
from uipath.llm_client.settings import LLMGatewaySettings

# Create LLMGatewaySettings
settings = LLMGatewaySettings(
Expand Down Expand Up @@ -632,7 +632,7 @@ byo_embeddings = UiPathAzureOpenAIEmbeddings(
The client provides a hierarchy of typed exceptions for handling API errors. All exceptions extend `UiPathAPIError` (which extends `httpx.HTTPStatusError`):

```python
from uipath_llm_client import (
from uipath.llm_client import (
UiPathAPIError,
UiPathAuthenticationError,
UiPathRateLimitError,
Expand Down Expand Up @@ -675,7 +675,7 @@ except UiPathAPIError as e:
The `UiPathAPIConfig` class controls how requests are routed through UiPath's infrastructure:

```python
from uipath_llm_client.settings import UiPathAPIConfig
from uipath.llm_client.settings import UiPathAPIConfig

config = UiPathAPIConfig(
api_type="completions",
Expand Down Expand Up @@ -802,7 +802,7 @@ When adding new tests or modifying existing ones that require new API interactio

```
uipath-llm-client/
├── src/uipath_llm_client/ # Core package
├── src/uipath/llm_client/ # Core package
│ ├── httpx_client.py # UiPathHttpxClient / UiPathHttpxAsyncClient
│ ├── clients/ # Native SDK wrappers
│ │ ├── openai/ # UiPathOpenAI, UiPathAzureOpenAI, etc.
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.6] - 2026-02-26

### Refactor
- Restructured project such that uipath_llm_client can be included in uipath as submodule.
- imports are now from uipath.llm_client instead of uipath_llm_client

## [1.2.5] - 2026-02-26

### Fix
Expand Down
2 changes: 1 addition & 1 deletion packages/uipath_langchain_client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -327,4 +327,4 @@ The `stream_type` parameter controls iteration: `"lines"` (default, best for SSE
## See Also

- [Main README](../../README.md) - Overview and core client documentation
- [UiPath LLM Client](../../src/uipath_llm_client/) - Low-level HTTP client
- [UiPath LLM Client](../../src/uipath/llm_client//) - Low-level HTTP client
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.3",
"uipath-llm-client>=1.2.4",
]

[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.5"
__version__ = "1.2.6"
Original file line number Diff line number Diff line change
Expand Up @@ -36,20 +36,20 @@
from langchain_core.outputs import ChatGeneration, ChatGenerationChunk, ChatResult
from pydantic import AliasChoices, BaseModel, ConfigDict, Field

from uipath_langchain_client.settings import (
UiPathAPIConfig,
UiPathBaseSettings,
get_default_client_settings,
)
from uipath_llm_client.httpx_client import (
from uipath.llm_client.httpx_client import (
UiPathHttpxAsyncClient,
UiPathHttpxClient,
)
from uipath_llm_client.utils.headers import (
from uipath.llm_client.utils.headers import (
get_captured_response_headers,
set_captured_response_headers,
)
from uipath_llm_client.utils.retry import RetryConfig
from uipath.llm_client.utils.retry import RetryConfig
from uipath_langchain_client.settings import (
UiPathAPIConfig,
UiPathBaseSettings,
get_default_client_settings,
)


class UiPathBaseLLMClient(BaseModel, ABC):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,12 @@
)
from pydantic import Field

from uipath_langchain_client.base_client import UiPathBaseChatModel
from uipath_langchain_client.settings import UiPathAPIConfig
from uipath_llm_client.utils.headers import (
from uipath.llm_client.utils.headers import (
extract_matching_headers,
set_captured_response_headers,
)
from uipath_langchain_client.base_client import UiPathBaseChatModel
from uipath_langchain_client.settings import UiPathAPIConfig


class UiPathChat(UiPathBaseChatModel):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""
Settings re-exports for UiPath LangChain Client.

This module re-exports the settings classes from uipath_llm_client for convenience,
This module re-exports the settings classes from uipath.llm_client for convenience,
allowing users to configure authentication without importing from the base package.

Example:
Expand All @@ -15,7 +15,7 @@
>>> settings = LLMGatewaySettings()
"""

from uipath_llm_client.settings import (
from uipath.llm_client.settings import (
AgentHubSettings,
LLMGatewaySettings,
UiPathAPIConfig,
Expand Down
Empty file.
59 changes: 0 additions & 59 deletions packages/uipath_llamaindex_client/README.md

This file was deleted.

Loading