Skip to content

Commit 681ea04

Browse files
committed
feat: uipath-python-integrations
1 parent 998e57f commit 681ea04

261 files changed

Lines changed: 778 additions & 726 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/integration_tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
id: discover
2525
run: |
2626
# Find all testcase folders (excluding common folders like README, etc.)
27-
testcase_dirs=$(find testcases -maxdepth 1 -type d -name "*-*" | sed 's|testcases/||' | sort)
27+
testcase_dirs=$(find packages/uipath-llamaindex/testcases -maxdepth 1 -type d -name "*-*" | sed 's|packages/uipath-llamaindex/testcases/||' | sort)
2828
2929
echo "Found testcase directories:"
3030
echo "$testcase_dirs"
@@ -61,7 +61,7 @@ jobs:
6161
CLIENT_ID: ${{ matrix.environment == 'alpha' && secrets.ALPHA_TEST_CLIENT_ID || matrix.environment == 'staging' && secrets.STAGING_TEST_CLIENT_ID || matrix.environment == 'cloud' && secrets.CLOUD_TEST_CLIENT_ID }}
6262
CLIENT_SECRET: ${{ matrix.environment == 'alpha' && secrets.ALPHA_TEST_CLIENT_SECRET || matrix.environment == 'staging' && secrets.STAGING_TEST_CLIENT_SECRET || matrix.environment == 'cloud' && secrets.CLOUD_TEST_CLIENT_SECRET }}
6363
BASE_URL: ${{ matrix.environment == 'alpha' && secrets.ALPHA_BASE_URL || matrix.environment == 'staging' && secrets.STAGING_BASE_URL || matrix.environment == 'cloud' && secrets.CLOUD_BASE_URL }}
64-
working-directory: testcases/${{ matrix.testcase }}
64+
working-directory: packages/uipath-llamaindex/testcases/${{ matrix.testcase }}
6565
run: |
6666
echo "Running testcase: ${{ matrix.testcase }}"
6767
echo "Environment: ${{ matrix.environment }}"

.github/workflows/publish-dev.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ on:
77
jobs:
88
publish-dev:
99
runs-on: ubuntu-latest
10+
strategy:
11+
matrix:
12+
package:
13+
- name: uipath-llamaindex
14+
path: packages/uipath-llamaindex
1015
permissions:
1116
contents: read
1217
pull-requests: write
@@ -36,7 +41,8 @@ jobs:
3641
env:
3742
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3843
run: |
39-
$pyprojcontent = Get-Content pyproject.toml -Raw
44+
$pyprojPath = "${{ matrix.package.path }}/pyproject.toml"
45+
$pyprojcontent = Get-Content $pyprojPath -Raw
4046
4147
$PROJECT_NAME = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?name\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value
4248
$CURRENT_VERSION = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?version\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value
@@ -55,9 +61,9 @@ jobs:
5561
$DEV_VERSION = "$CURRENT_VERSION.dev1$PADDED_PR$PADDED_RUN"
5662
5763
# Update version in pyproject.toml
58-
(Get-Content pyproject.toml) -replace "version = `"$CURRENT_VERSION`"", "version = `"$DEV_VERSION`"" | Set-Content pyproject.toml
64+
(Get-Content $pyprojPath) -replace "version = `"$CURRENT_VERSION`"", "version = `"$DEV_VERSION`"" | Set-Content $pyprojPath
5965
60-
Write-Output "Package version set to $DEV_VERSION"
66+
Write-Output "Package $PROJECT_NAME version set to $DEV_VERSION"
6167
6268
$dependencyMessage = @"
6369
## Development Package
@@ -119,7 +125,7 @@ jobs:
119125
Write-Output "Updated PR description with development package information"
120126
121127
- name: Build package
122-
run: uv build
128+
run: uv build --package ${{ matrix.package.name }}
123129

124130
- name: Publish
125131
run: uv publish --index testpypi

.github/workflows/publish-docs.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ on:
55
branches:
66
- main
77
paths:
8-
- "docs/**"
9-
- "pyproject.toml"
8+
- "packages/*/docs/**"
9+
- "packages/*/pyproject.toml"
1010

1111
jobs:
1212
publish-docs:
1313
runs-on: ubuntu-latest
14-
if: ${{ github.repository == 'UiPath/uipath-llamaindex-python' }}
14+
if: ${{ github.repository == 'UiPath/uipath-integrations-python' }}
1515
steps:
1616
- name: Trigger Publish Docs
1717
run: |

.github/workflows/publish.yml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,18 @@ jobs:
1616
uses: ./.github/workflows/test.yml
1717

1818
build:
19-
name: Build
19+
name: Build ${{ matrix.package }}
2020
runs-on: ubuntu-latest
21+
strategy:
22+
matrix:
23+
package:
24+
- uipath-llamaindex
2125

2226
needs:
2327
- lint
2428
- test
2529

26-
if: ${{ github.repository == 'UiPath/uipath-llamaindex-python' }}
30+
if: ${{ github.repository == 'UiPath/uipath-integrations-python' }}
2731
permissions:
2832
contents: read
2933
actions: write
@@ -46,18 +50,22 @@ jobs:
4650
run: uv sync --all-extras
4751

4852
- name: Build
49-
run: uv build
53+
run: uv build --package ${{ matrix.package }}
5054

5155
- name: Upload artifacts
5256
uses: actions/upload-artifact@v4
5357
with:
54-
name: release-dists
58+
name: release-dists-${{ matrix.package }}
5559
path: dist/
5660

5761
pypi-publish:
58-
name: Upload release to PyPI
62+
name: Upload ${{ matrix.package }} to PyPI
5963
runs-on: ubuntu-latest
6064
environment: pypi
65+
strategy:
66+
matrix:
67+
package:
68+
- uipath-llamaindex
6169

6270
needs:
6371
- build
@@ -69,7 +77,7 @@ jobs:
6977
- name: Retrieve release distributions
7078
uses: actions/download-artifact@v4
7179
with:
72-
name: release-dists
80+
name: release-dists-${{ matrix.package }}
7381
path: dist/
7482

7583
- name: Publish package distributions to PyPI

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ See `just --list` for linting, formatting and build commands.
3434
### Use SDK Locally
3535
1. Create a folder on your own device `mkdir project; cd project`
3636
2. Initialize the python project `uv` `uv init . --python 3.11`
37-
3. Obtain the project path `PATH_TO_SDK=/Users/YOU_USER/uipath-llamaindex-python/uipath-llamaindex`
37+
3. Obtain the project path `PATH_TO_SDK=/Users/YOU_USER/uipath-integrations-python/packages/uipath-llamaindex`
3838
4. Install the sdk in editable mode `uv add --editable ${PATH_TO_SDK}`
3939

4040
:information_source: Instead of cloning the project into `.venv/lib/python3.11/site-packages/uipath-llamaindex`, this mode creates a file named `_uipath-mcp.pth` inside `.venv/lib/python3.11/site-packages`. This file contains the value of `PATH_TO_SDK`, which is added to `sys.path`—the list of directories where python searches for packages. (Run `python -c 'import sys; print(sys.path)'` to see the entries.)

README.md

Lines changed: 53 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,125 +1,92 @@
1-
# UiPath LlamaIndex Python SDK
1+
# UiPath AI Agent Runtimes for Python
2+
3+
A collection of Python SDKs that enable developers to build and deploy AI agents to the UiPath Cloud Platform using different agent frameworks. These packages provide programmatic interaction with UiPath Cloud Platform services and human-in-the-loop (HITL) semantics through Action Center integration.
4+
5+
All packages are extensions to the [UiPath Python SDK](https://github.com/UiPath/uipath-python) and implement the [UiPath Runtime Protocol](https://github.com/UiPath/uipath-runtime-python).
6+
7+
## Available Packages
8+
9+
### UiPath LlamaIndex
210

311
[![PyPI - Version](https://img.shields.io/pypi/v/uipath-llamaindex)](https://pypi.org/project/uipath-llamaindex/)
412
[![PyPI downloads](https://img.shields.io/pypi/dm/uipath-llamaindex.svg)](https://pypi.org/project/uipath-llamaindex/)
5-
[![Python versions](https://img.shields.io/pypi/pyversions/uipath-llamaindex.svg)](https://pypi.org/project/uipath-llamaindex/)
6-
7-
A Python SDK that enables developers to build and deploy LlamaIndex agents to the UiPath Cloud Platform. It provides programmatic interaction with UiPath Cloud Platform services and human-in-the-loop (HITL) semantics through Action Center integration.
813

9-
This package is an extension to the [UiPath Python SDK](https://github.com/UiPath/uipath-python) and implements the [UiPath Runtime Protocol](https://github.com/UiPath/uipath-runtime-python).
14+
Build agents using the [LlamaIndex](https://www.llamaindex.ai/) framework with support for RAG, multiple LLM providers, and state persistence.
1015

11-
Check out these [sample projects](https://github.com/UiPath/uipath-llamaindex-python/tree/main/samples) to see the SDK in action.
16+
- **Installation**: `pip install uipath-llamaindex`
17+
- **Documentation**: [packages/uipath-llamaindex/](packages/uipath-llamaindex/)
18+
- **Samples**: [packages/uipath-llamaindex/samples/](packages/uipath-llamaindex/samples/)
1219

1320
## Requirements
1421

1522
- Python 3.11 or higher
1623
- UiPath Automation Cloud account
1724

18-
## Installation
19-
20-
```bash
21-
pip install uipath-llamaindex
22-
```
23-
24-
using `uv`:
25-
26-
```bash
27-
uv add uipath-llamaindex
28-
```
29-
30-
## Configuration
31-
32-
### Environment Variables
25+
## Quick Start
3326

34-
Create a `.env` file in your project root with the following variables:
27+
Follow the installation instructions in the [LlamaIndex documentation](packages/uipath-llamaindex/) to get started building AI agents with RAG capabilities and stateful workflows.
3528

36-
```
37-
UIPATH_URL=https://cloud.uipath.com/ACCOUNT_NAME/TENANT_NAME
38-
UIPATH_ACCESS_TOKEN=YOUR_TOKEN_HERE
39-
```
29+
## Documentation
4030

41-
## Command Line Interface (CLI)
31+
- [Quick Start Guide](packages/uipath-llamaindex/docs/quick_start.md)
32+
- [LlamaIndex Package Documentation](packages/uipath-llamaindex/)
33+
- [Sample Projects](packages/uipath-llamaindex/samples/)
4234

43-
The SDK provides a command-line interface for creating, packaging, and deploying LlamaIndex Agents:
35+
## Monorepo Structure
4436

45-
### Initialize a Project
37+
This repository is organized as a UV workspace:
4638

47-
```bash
48-
uipath init
4939
```
50-
51-
Running `uipath init` will process the workflow definitions in the `llama_index.json` file and create the corresponding `entry-points.json` file needed for deployment.
52-
53-
For more details on the configuration format, see the [UiPath configuration specifications](https://github.com/UiPath/uipath-python/blob/main/specs/README.md).
54-
55-
### Authentication
56-
57-
```bash
58-
uipath auth
40+
uipath-integrations-python/
41+
├── packages/
42+
│ └── uipath-llamaindex/ # LlamaIndex runtime
43+
│ ├── docs/ # Documentation
44+
│ ├── samples/ # Sample projects
45+
│ └── src/ # Source code
46+
└── pyproject.toml # Workspace configuration
5947
```
6048

61-
This command opens a browser for authentication and creates/updates your `.env` file with the proper credentials.
62-
63-
### Debug a Project
64-
65-
```bash
66-
uipath run WORKFLOW [INPUT]
67-
```
49+
## Development
6850

69-
Executes the agent with the provided JSON input arguments.
51+
### Setting Up a Development Environment
7052

71-
### Package a Project
53+
This repository uses [UV](https://docs.astral.sh/uv/) for workspace management:
7254

7355
```bash
74-
uipath pack
75-
```
76-
77-
Packages your project into a `.nupkg` file that can be deployed to UiPath.
56+
# Install UV
57+
curl -LsSf https://astral.sh/uv/install.sh | sh
7858

79-
**Note:** Your `pyproject.toml` must include:
59+
# Clone the repository
60+
git clone https://github.com/UiPath/uipath-integrations-python.git
61+
cd uipath-integrations-python
8062

81-
- A description field (avoid characters: &, <, >, ", ', ;)
82-
- Author information
63+
# Install all dependencies
64+
uv sync --all-extras
8365

84-
Example:
66+
# Run tests
67+
uv run pytest
8568

86-
```toml
87-
description = "Your package description"
88-
authors = [{name = "Your Name", email = "your.email@example.com"}]
69+
# Build the package
70+
uv build --package uipath-llamaindex
8971
```
9072

91-
### Publish a Package
92-
93-
```bash
94-
uipath publish
95-
```
96-
97-
Publishes the most recently created package to your UiPath Orchestrator.
98-
99-
## Project Structure
100-
101-
To properly use the CLI for packaging and publishing, your project should include:
102-
103-
- A `pyproject.toml` file with project metadata
104-
- A `llama_index.json` file with your workflow definitions (e.g., `"workflows": {"agent": "main.py:agent"}`)
105-
- A `entry-points.json` file (generated by `uipath init`)
106-
- A `bindings.json` file (generated by `uipath init`) to configure resource overrides
107-
- Any Python files needed for your automation
108-
109-
## Development
110-
11173
### Developer Tools
11274

11375
Check out [uipath-dev](https://github.com/uipath/uipath-dev-python) - an interactive terminal application for building, testing, and debugging UiPath Python runtimes, agents, and automation scripts.
11476

115-
### Setting Up a Development Environment
77+
### Contributing
11678

117-
Please read our [contribution guidelines](https://github.com/UiPath/uipath-llamaindex-python/blob/main/CONTRIBUTING.md) before submitting a pull request.
79+
Please read our [contribution guidelines](CONTRIBUTING.md) before submitting a pull request.
11880

119-
### Special Thanks
81+
## Special Thanks
12082

12183
A huge thank-you to the open-source community and the maintainers of the libraries that make this project possible:
12284

123-
- [LlamaIndex](https://github.com/run-llama/llama_index) for providing a powerful framework for building stateful LLM applications.
124-
- [OpenInference](https://github.com/Arize-ai/openinference) for observability and instrumentation support.
125-
- [Pydantic](https://github.com/pydantic/pydantic) for reliable, typed configuration and validation.
85+
- [LlamaIndex](https://github.com/run-llama/llama_index) for providing a powerful framework for building stateful LLM applications
86+
- [OpenAI](https://github.com/openai) for the Agents framework and APIs
87+
- [OpenInference](https://github.com/Arize-ai/openinference) for observability and instrumentation support
88+
- [Pydantic](https://github.com/pydantic/pydantic) for reliable, typed configuration and validation
89+
90+
## License
91+
92+
See [LICENSE](LICENSE) for details.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# UiPath LlamaIndex SDK
2+
3+
Build intelligent AI agents with LlamaIndex and UiPath.
4+
5+
## Installation
6+
7+
```bash
8+
pip install uipath-llamaindex
9+
```
10+
11+
### Optional dependencies
12+
13+
For AWS Bedrock support:
14+
```bash
15+
pip install uipath-llamaindex[bedrock]
16+
```
17+
18+
For Google Vertex AI support:
19+
```bash
20+
pip install uipath-llamaindex[vertex]
21+
```
22+
23+
## Quick Start
24+
25+
See the [main repository documentation](../../docs/quick_start.md) for getting started guides and examples.
26+
27+
## Features
28+
29+
- **LlamaIndex Integration**: Build agents using LlamaIndex's powerful orchestration framework
30+
- **Multiple LLM Providers**: Support for OpenAI, Azure OpenAI, AWS Bedrock, and Google Vertex AI
31+
- **RAG Capabilities**: Built-in retrieval-augmented generation with context grounding
32+
- **State Management**: Resumable workflows with SQLite-based state persistence
33+
- **Breakpoints & HITL**: Human-in-the-loop support with debugging capabilities
34+
- **Observability**: Built-in tracing and instrumentation
35+
36+
## Documentation
37+
38+
Full documentation is available in the [main repository](https://github.com/UiPath/uipath-integrations-python).
39+
40+
## License
41+
42+
See [LICENSE](../../LICENSE) in the repository root.

docs/context_grounding.md renamed to packages/uipath-llamaindex/docs/context_grounding.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,5 @@ response = react_agent.chat("Answer user questions as best as you can using the
7070

7171

7272
/// tip
73-
Check our [travel-helper-RAG-agent sample](https://github.com/UiPath/uipath-llamaindex-python/tree/main/samples/travel-helper-RAG-agent) to see context grounding query engines in action.
73+
Check our [travel-helper-RAG-agent sample](https://github.com/UiPath/uipath-integrations-python/tree/main/packages/uipath-llamaindex/samples/travel-helper-RAG-agent) to see context grounding query engines in action.
7474
///

docs/human_in_the_loop.md renamed to packages/uipath-llamaindex/docs/human_in_the_loop.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ ctx.write_event_to_stream(CreateTaskEvent(app_name="AppName", app_folder_path="M
2828
task_data = await ctx.wait_for_event(HumanResponseEvent)
2929
```
3030

31-
For a practical implementation of the `CreateTaskEvent` model, refer to the [action-center-hitl-agent](https://github.com/UiPath/uipath-llamaindex-python/tree/main/samples/action-center-hitl-agent). This sample demonstrates how to create a task with dynamic input.
31+
For a practical implementation of the `CreateTaskEvent` model, refer to the [action-center-hitl-agent](https://github.com/UiPath/uipath-integrations-python/tree/main/packages/uipath-llamaindex/samples/action-center-hitl-agent). This sample demonstrates how to create a task with dynamic input.
3232

3333

3434
---
@@ -79,7 +79,7 @@ job_data = await ctx.wait_for_event(HumanResponseEvent)
7979
An agent can invoke itself if needed, but this must be done with caution. Be mindful that using the same name for invocation may lead to unintentional loops. To prevent recursion issues, implement safeguards like exit conditions.
8080
///
8181

82-
For a practical implementation of the `InvokeProcessEvent` model, refer to the [multi-agent sample](https://github.com/UiPath/uipath-llamaindex-python/tree/main/samples/multi-agent). This sample demonstrates how to invoke a process with dynamic input arguments, showcasing the integration of the interrupt functionality within a multi-agent system or a system where an agent integrates with RPA processes and API workflows.
82+
For a practical implementation of the `InvokeProcessEvent` model, refer to the [multi-agent sample](https://github.com/UiPath/uipath-integrations-python/tree/main/packages/uipath-llamaindex/samples/multi-agent). This sample demonstrates how to invoke a process with dynamic input arguments, showcasing the integration of the interrupt functionality within a multi-agent system or a system where an agent integrates with RPA processes and API workflows.
8383

8484
---
8585

docs/llms_and_embeddings.md renamed to packages/uipath-llamaindex/docs/llms_and_embeddings.md

File renamed without changes.

0 commit comments

Comments
 (0)