uipath-langchain 0.0.90__tar.gz → 0.0.91__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of uipath-langchain might be problematic. Click here for more details.
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/PKG-INFO +2 -2
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/activate-apps.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/activate-deployment.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/copy-folder-path.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/deploy-solution-package-wizard.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/deploy-solution-package.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/monitor-agent.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/navigate-to-solution-folder.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/resume-condition.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/run-agent.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/solution-destination-folder.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/start-job.png +0 -0
- uipath_langchain-0.0.91/docs/sample_images/ticket-classification/upload-solution-package.png +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/pyproject.toml +2 -2
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/README.md +6 -6
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/ticket-classification/.env.example +1 -2
- uipath_langchain-0.0.91/samples/ticket-classification/README.md +206 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/ticket-classification/main.py +4 -23
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/ticket-classification/pyproject.toml +1 -1
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/ticket-classification/uipath.json +2 -19
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/ticket-classification/uv.lock +8 -8
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/_runtime/_runtime.py +2 -2
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_utils/__init__.py +2 -2
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/tracers/__init__.py +2 -2
- uipath_langchain-0.0.91/src/uipath_langchain/tracers/_instrument_traceable.py +406 -0
- uipath_langchain-0.0.91/tests/__init__.py +1 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/tests/test_langchain_client.py +90 -1
- uipath_langchain-0.0.91/tests/tracers/__init__.py +1 -0
- uipath_langchain-0.0.91/tests/tracers/test_instrument_traceable.py +206 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/uv.lock +154 -5
- uipath_langchain-0.0.90/samples/ticket-classification/README.md +0 -68
- uipath_langchain-0.0.90/src/uipath_langchain/tracers/_instrument_traceable.py +0 -285
- uipath_langchain-0.0.90/tests/conftest.py +0 -95
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.cursorrules +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.editorconfig +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.gitattributes +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.github/workflows/build.yml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.github/workflows/cd.yml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.github/workflows/ci.yml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.github/workflows/commitlint.yml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.github/workflows/lint.yml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.github/workflows/test.yml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.gitignore +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.pre-commit-config.yaml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.python-version +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.vscode/extensions.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/.vscode/settings.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/CONTRIBUTING.md +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/LICENSE +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/README.md +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/docs/chat_models.md +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/docs/context_grounding_chain.md +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/docs/context_grounding_retriever.md +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/docs/interrupt_models.md +0 -0
- {uipath_langchain-0.0.90/docs/sample_images → uipath_langchain-0.0.91/docs/sample_images/multi-agent-distributed}/coder-agent-package-overview.png +0 -0
- {uipath_langchain-0.0.90/docs/sample_images → uipath_langchain-0.0.91/docs/sample_images/multi-agent-distributed}/coder-agent-process-configuration.png +0 -0
- {uipath_langchain-0.0.90/docs/sample_images → uipath_langchain-0.0.91/docs/sample_images/multi-agent-distributed}/planner-agent-package-overview.png +0 -0
- {uipath_langchain-0.0.90/docs/sample_images → uipath_langchain-0.0.91/docs/sample_images/multi-agent-distributed}/planner-agent-process-configuration.png +0 -0
- {uipath_langchain-0.0.90/docs/sample_images → uipath_langchain-0.0.91/docs/sample_images/multi-agent-distributed}/researcher-agent-package-overview.png +0 -0
- {uipath_langchain-0.0.90/docs/sample_images → uipath_langchain-0.0.91/docs/sample_images/multi-agent-distributed}/researcher-agent-process-configuration.png +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/company-research-agent/.env.example +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/company-research-agent/agent.mermaid +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/company-research-agent/graph.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/company-research-agent/langgraph.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/company-research-agent/pyproject.toml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/company-research-agent/uipath.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/company-research-agent/uv.lock +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/hitl-inbox-server/database.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/hitl-inbox-server/main.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/hitl-inbox-server/models.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/hitl-inbox-server/pyproject.toml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/hitl-inbox-server/schemas.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/hitl-inbox-server/templates/index.html +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/hitl-inbox-server/uv.lock +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/.env.example +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/coder.mermaid +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/langgraph.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/planner.mermaid +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/pyproject.toml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/researcher.mermaid +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/coder.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/planner.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/src/multi-agent-distributed/researcher.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/uipath.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-planner-researcher-coder-distributed/uv.lock +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-supervisor-researcher-coder/.env.example +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-supervisor-researcher-coder/README.md +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-supervisor-researcher-coder/agent.mermaid +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-supervisor-researcher-coder/graph.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-supervisor-researcher-coder/langgraph.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-supervisor-researcher-coder/pyproject.toml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-supervisor-researcher-coder/uipath.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/multi-agent-supervisor-researcher-coder/uv.lock +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/retrieval-chain/.env.example +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/retrieval-chain/README.md +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/retrieval-chain/main.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/retrieval-chain/pyproject.toml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/retrieval-chain/uv.lock +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/.env.example +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/README.md +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/agent.mermaid +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/langgraph.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/pyproject.toml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/src/simple-local-mcp/graph.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/src/simple-local-mcp/math_server.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/src/simple-local-mcp/weather_server.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/uipath.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-local-mcp/uv.lock +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-remote-mcp/.env.example +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-remote-mcp/README.md +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-remote-mcp/agent.mermaid +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-remote-mcp/langgraph.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-remote-mcp/main.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-remote-mcp/pyproject.toml +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-remote-mcp/uipath.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/simple-remote-mcp/uv.lock +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/ticket-classification/agent.mermaid +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/ticket-classification/escalation_app_solution/generic-escalation-app-solution-1.0.0.zip +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/ticket-classification/langgraph.json +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/__init__.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/__init__.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/_runtime/_context.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/_runtime/_escalation.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/_runtime/_exception.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/_runtime/_input.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/_runtime/_output.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/_utils/_graph.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/cli_init.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/cli_run.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_utils/_request_mixin.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_utils/_settings.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_utils/_sleep_policy.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/chat/__init__.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/chat/models.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/chat/utils/__init__.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/chat/utils/_chat_types.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/embeddings/__init__.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/embeddings/embeddings.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/middlewares.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/retrievers/__init__.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/retrievers/context_grounding_retriever.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/tracers/AsyncUiPathTracer.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/tracers/UiPathTracer.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/tracers/_events.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/tracers/_utils.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/utils/__init__.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/utils/_request_mixin.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/utils/_settings.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/utils/_sleep_policy.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/vectorstores/context_grounding_vectorstore.py +0 -0
- {uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/tests/test_dummy.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: uipath-langchain
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.91
|
|
4
4
|
Summary: UiPath Langchain
|
|
5
5
|
Project-URL: Homepage, https://uipath.com
|
|
6
6
|
Project-URL: Repository, https://github.com/UiPath/uipath-langchain-python
|
|
@@ -25,7 +25,7 @@ Requires-Dist: pydantic-settings>=2.6.0
|
|
|
25
25
|
Requires-Dist: python-dotenv>=1.0.1
|
|
26
26
|
Requires-Dist: requests>=2.23.3
|
|
27
27
|
Requires-Dist: types-requests>=2.32.0.20241016
|
|
28
|
-
Requires-Dist: uipath<2.1.0,>=2.0.
|
|
28
|
+
Requires-Dist: uipath<2.1.0,>=2.0.13
|
|
29
29
|
Provides-Extra: langchain
|
|
30
30
|
Description-Content-Type: text/markdown
|
|
31
31
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
uipath_langchain-0.0.91/docs/sample_images/ticket-classification/deploy-solution-package-wizard.png
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
uipath_langchain-0.0.91/docs/sample_images/ticket-classification/navigate-to-solution-folder.png
ADDED
|
Binary file
|
|
Binary file
|
uipath_langchain-0.0.91/docs/sample_images/ticket-classification/solution-destination-folder.png
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "uipath-langchain"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.91"
|
|
4
4
|
description = "UiPath Langchain"
|
|
5
5
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
7
|
dependencies = [
|
|
8
|
-
"uipath>=2.0.
|
|
8
|
+
"uipath>=2.0.13, <2.1.0",
|
|
9
9
|
"langgraph>=0.2.70",
|
|
10
10
|
"langchain-core>=0.3.34",
|
|
11
11
|
"langgraph-checkpoint-sqlite>=2.0.3",
|
|
@@ -208,16 +208,16 @@ uipath run coder '{"messages":[{"content":"Let me help you state the Pythagorean
|
|
|
208
208
|
|
|
209
209
|
6. **Create Agent Processes in Orchestrator**
|
|
210
210
|
- **Planner Agent**
|
|
211
|
-

|
|
212
|
-

|
|
211
|
+

|
|
212
|
+

|
|
213
213
|
|
|
214
214
|
- **Researcher Agent**
|
|
215
|
-

|
|
216
|
-

|
|
215
|
+

|
|
216
|
+

|
|
217
217
|
|
|
218
218
|
- **Coder Agent**
|
|
219
|
-

|
|
220
|
-

|
|
219
|
+

|
|
220
|
+

|
|
221
221
|
|
|
222
222
|
> **Note:** Ensure that the display names for the coder and researcher agent processes are *coder-agent* and *researcher-agent*,
|
|
223
223
|
and that all 3 agents are placed in the same folder.
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Support Ticket Classification System
|
|
2
|
+
|
|
3
|
+
Use LangGraph with Azure OpenAI to automatically classify support tickets into predefined categories with confidence scores. UiPath Action Center integration for human approval step.
|
|
4
|
+
|
|
5
|
+
## Debug
|
|
6
|
+
|
|
7
|
+
1. Clone the repository:
|
|
8
|
+
```bash
|
|
9
|
+
git clone
|
|
10
|
+
cd samples\ticket-classification
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. Install dependencies:
|
|
14
|
+
```bash
|
|
15
|
+
pip install uv
|
|
16
|
+
uv venv -p 3.11 .venv
|
|
17
|
+
.venv\Scripts\activate
|
|
18
|
+
uv sync
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
3. Create a `.env` file in the project root with the following configuration:
|
|
22
|
+
```env
|
|
23
|
+
UIPATH_URL=https://alpha.uipath.com/ada/byoa
|
|
24
|
+
UIPATH_ACCESS_TOKEN=xxx
|
|
25
|
+
AZURE_OPENAI_API_KEY=xxx
|
|
26
|
+
AZURE_OPENAI_ENDPOINT=xxx
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
uipath run <entrypoint> <input> [--resume]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Run
|
|
34
|
+
|
|
35
|
+
To classify a ticket, run the script using UiPath CLI:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
uipath run agent '{"message": "GET Assets API does not enforce proper permissions Assets.View", "ticket_id": "TICKET-2345"}'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Resume
|
|
42
|
+
|
|
43
|
+
To resume the graph with approval:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
uipath run agent true --resume
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Input Format
|
|
50
|
+
|
|
51
|
+
The input ticket should be in the following format:
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"message": "The ticket message or description",
|
|
55
|
+
"ticket_id": "Unique ticket identifier",
|
|
56
|
+
"assignee"[optional]: "username or email of the person assigned to handle escalations"
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Output Format
|
|
61
|
+
|
|
62
|
+
The script outputs JSON with the classification results:
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"label": "security",
|
|
66
|
+
"confidence": 0.9
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Deployment Guide
|
|
71
|
+
|
|
72
|
+
This guide walks you through deploying and running the ticket classification agent on the UiPath Platform.
|
|
73
|
+
|
|
74
|
+
### Prerequisites
|
|
75
|
+
- Access to UiPath Platform
|
|
76
|
+
- Python 3.11 or higher
|
|
77
|
+
- Git
|
|
78
|
+
|
|
79
|
+
### 1. Repository Setup
|
|
80
|
+
```bash
|
|
81
|
+
# Clone the repository
|
|
82
|
+
git clone https://github.com/UiPath/uipath-langchain-python.git
|
|
83
|
+
cd uipath-langchain-python/samples/ticket-classification
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 2. Action App Deployment
|
|
87
|
+
|
|
88
|
+
The Ticket Classification Agent utilizes HITL (Human In The Loop) technology, allowing the system to incorporate feedback directly from supervisory personnel. We'll leverage UiPath [Action Center](https://docs.uipath.com/action-center/automation-suite/2023.4/user-guide/introduction) for this functionality.
|
|
89
|
+
|
|
90
|
+
Follow these steps to deploy the pre-built application using [UiPath Solutions Management](https://docs.uipath.com/solutions-management/automation-cloud/latest/user-guide/solutions-management-overview):
|
|
91
|
+
|
|
92
|
+
1. **Upload Solution Package**
|
|
93
|
+
- Navigate to UiPath Solutions Management
|
|
94
|
+
- Drag and drop [generic-escalation-app-solution-1.0.0.zip](escalation_app_solution/generic-escalation-app-solution-1.0.0.zip) to the upload area
|
|
95
|
+
- Click the _Upload_ button
|
|
96
|
+
|
|
97
|
+

|
|
98
|
+
|
|
99
|
+
2. **Initiate Deployment**
|
|
100
|
+
- Wait for the package to be processed and ready for deployment
|
|
101
|
+
|
|
102
|
+

|
|
103
|
+
|
|
104
|
+
3. **Select Destination**
|
|
105
|
+
- Choose a destination folder or install as root folder under tenant
|
|
106
|
+
|
|
107
|
+

|
|
108
|
+
|
|
109
|
+
4. **Complete Configuration**
|
|
110
|
+
- Follow the solution configuration wizard prompts
|
|
111
|
+
|
|
112
|
+

|
|
113
|
+
|
|
114
|
+
5. **Activate the Apps**
|
|
115
|
+
- After deployment, activate the apps following the [UiPath documentation](https://docs.uipath.com/apps/automation-cloud/latest/user-guide/apps-in-solutions-management)
|
|
116
|
+
|
|
117
|
+

|
|
118
|
+

|
|
119
|
+
|
|
120
|
+
6. **Verify and Configure**
|
|
121
|
+
- Navigate to the solution folder to verify the escalation app creation
|
|
122
|
+
|
|
123
|
+

|
|
124
|
+
|
|
125
|
+
- Copy the folder path for configuration
|
|
126
|
+
|
|
127
|
+

|
|
128
|
+
|
|
129
|
+
- Update the `_PLACEHOLDER` string in `main.py` (line 148) with the copied folder path
|
|
130
|
+
|
|
131
|
+
### 3. Agent Setup and Publishing
|
|
132
|
+
|
|
133
|
+
1. **Set Up Python Environment**
|
|
134
|
+
```bash
|
|
135
|
+
# Install UV package manager
|
|
136
|
+
pip install uv
|
|
137
|
+
|
|
138
|
+
# Create and activate virtual environment
|
|
139
|
+
uv venv -p 3.11 .venv
|
|
140
|
+
|
|
141
|
+
# Windows
|
|
142
|
+
.venv\Scripts\activate
|
|
143
|
+
|
|
144
|
+
# Unix-like Systems
|
|
145
|
+
source .venv/bin/activate
|
|
146
|
+
|
|
147
|
+
# Install dependencies
|
|
148
|
+
uv sync
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
2. **UiPath Authentication**
|
|
152
|
+
```bash
|
|
153
|
+
uipath auth
|
|
154
|
+
```
|
|
155
|
+
After successful authentication in the browser, select the tenant for publishing the agent package:
|
|
156
|
+
```
|
|
157
|
+
Received log data
|
|
158
|
+
Received authentication information
|
|
159
|
+
Available tenants:
|
|
160
|
+
0: cosmin
|
|
161
|
+
1: DefaultTenant
|
|
162
|
+
2: Demo
|
|
163
|
+
3: lucian
|
|
164
|
+
4: Solutions
|
|
165
|
+
5: SolutionsTest
|
|
166
|
+
6: Test
|
|
167
|
+
7: TestRoles
|
|
168
|
+
Select tenant: 2
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
3. **Package and Publish**
|
|
172
|
+
```bash
|
|
173
|
+
# Create and publish the package
|
|
174
|
+
uipath pack
|
|
175
|
+
uipath publish
|
|
176
|
+
```
|
|
177
|
+
Select your preferred feed type when prompted:
|
|
178
|
+
```
|
|
179
|
+
Select feed type:
|
|
180
|
+
0: Tenant package feed
|
|
181
|
+
1: Personal workspace
|
|
182
|
+
Select feed: 1
|
|
183
|
+
```
|
|
184
|
+
Note: When publishing to personal workspace feed, the process will be auto-created for you.
|
|
185
|
+
|
|
186
|
+
### 4. Running and Monitoring the Agent
|
|
187
|
+
|
|
188
|
+
1. **Start the Agent**
|
|
189
|
+
- Navigate to your agent in the UiPath workspace
|
|
190
|
+
- Click "Run" to start a new job
|
|
191
|
+
|
|
192
|
+

|
|
193
|
+

|
|
194
|
+
|
|
195
|
+
2. **Monitor Progress**
|
|
196
|
+
- Track the agent's progress using the details side panel
|
|
197
|
+
|
|
198
|
+

|
|
199
|
+
|
|
200
|
+
3. **Handle Human-in-the-Loop Tasks**
|
|
201
|
+
- When a ticket is classified, a _Resume Condition_ tab will appear
|
|
202
|
+
- Use this link to navigate to UiPath Action Center for human intervention
|
|
203
|
+
|
|
204
|
+

|
|
205
|
+
|
|
206
|
+
For detailed information about UiPath Action Center and its features, refer to the [official documentation](https://docs.uipath.com/action-center/automation-suite/2024.10/user-guide/introduction).
|
|
@@ -3,7 +3,7 @@ import os
|
|
|
3
3
|
from typing import Literal, Optional, List
|
|
4
4
|
|
|
5
5
|
from langchain_core.messages import HumanMessage, SystemMessage
|
|
6
|
-
from langchain_openai import
|
|
6
|
+
from langchain_openai import ChatOpenAI
|
|
7
7
|
from langchain_core.output_parsers import PydanticOutputParser
|
|
8
8
|
from langgraph.graph import START, END, StateGraph, MessagesState
|
|
9
9
|
from langgraph.types import interrupt, Command
|
|
@@ -70,21 +70,6 @@ def prepare_input(graph_input: GraphInput) -> GraphState:
|
|
|
70
70
|
human_approval=None,
|
|
71
71
|
)
|
|
72
72
|
|
|
73
|
-
def get_azure_openai_api_key() -> str:
|
|
74
|
-
"""Get Azure OpenAI API key from environment or UiPath."""
|
|
75
|
-
api_key = os.getenv("AZURE_OPENAI_API_KEY")
|
|
76
|
-
|
|
77
|
-
if not api_key:
|
|
78
|
-
try:
|
|
79
|
-
api_key = uipath.assets.retrieve_credential("AZURE_OPENAI_API_KEY")
|
|
80
|
-
if not api_key:
|
|
81
|
-
raise ValueError("No API key found in credentials")
|
|
82
|
-
except Exception as e:
|
|
83
|
-
logger.error(f"Failed to get API key: {str(e)}")
|
|
84
|
-
raise RuntimeError("Failed to get Azure OpenAI API key")
|
|
85
|
-
|
|
86
|
-
return api_key
|
|
87
|
-
|
|
88
73
|
def decide_next_node(state: GraphState) -> Literal["classify", "notify_team"]:
|
|
89
74
|
if state["human_approval"] is True:
|
|
90
75
|
return "notify_team"
|
|
@@ -93,12 +78,7 @@ def decide_next_node(state: GraphState) -> Literal["classify", "notify_team"]:
|
|
|
93
78
|
|
|
94
79
|
async def classify(state: GraphState) -> Command:
|
|
95
80
|
"""Classify the support ticket using LLM."""
|
|
96
|
-
llm =
|
|
97
|
-
azure_deployment="gpt-4o-mini",
|
|
98
|
-
api_key=get_azure_openai_api_key(),
|
|
99
|
-
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
|
|
100
|
-
api_version="2024-10-21"
|
|
101
|
-
)
|
|
81
|
+
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
|
|
102
82
|
|
|
103
83
|
if state.get("last_predicted_category", None):
|
|
104
84
|
predicted_category = state["last_predicted_category"]
|
|
@@ -133,7 +113,7 @@ async def wait_for_human(state: GraphState) -> Command:
|
|
|
133
113
|
ticket_message = state["messages"][1].content
|
|
134
114
|
label = state["label"]
|
|
135
115
|
confidence = state["confidence"]
|
|
136
|
-
action_data = interrupt(CreateAction(
|
|
116
|
+
action_data = interrupt(CreateAction(app_name="escalation_agent_app",
|
|
137
117
|
title="Action Required: Review classification",
|
|
138
118
|
data={
|
|
139
119
|
"AgentOutput": (
|
|
@@ -145,6 +125,7 @@ async def wait_for_human(state: GraphState) -> Command:
|
|
|
145
125
|
"AgentName": "ticket-classification "},
|
|
146
126
|
app_version=1,
|
|
147
127
|
assignee=state.get("assignee", None),
|
|
128
|
+
app_folder_path="Shared/escalation_app",
|
|
148
129
|
))
|
|
149
130
|
|
|
150
131
|
return Command(
|
{uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/samples/ticket-classification/uipath.json
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"entryPoints": [
|
|
3
3
|
{
|
|
4
4
|
"filePath": "agent",
|
|
5
|
-
"uniqueId": "
|
|
5
|
+
"uniqueId": "f5678e12-7aa8-4a4c-bf62-b98dad8d9145",
|
|
6
6
|
"type": "agent",
|
|
7
7
|
"input": {
|
|
8
8
|
"type": "object",
|
|
@@ -54,23 +54,6 @@
|
|
|
54
54
|
],
|
|
55
55
|
"bindings": {
|
|
56
56
|
"version": "2.0",
|
|
57
|
-
"resources": [
|
|
58
|
-
{
|
|
59
|
-
"resource": "asset",
|
|
60
|
-
"key": "AZURE_OPENAI_API_KEY",
|
|
61
|
-
"value": {
|
|
62
|
-
"name": {
|
|
63
|
-
"defaultValue": "AZURE_OPENAI_API_KEY",
|
|
64
|
-
"isExpression": false,
|
|
65
|
-
"displayName": "Name"
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
"metadata": {
|
|
69
|
-
"ActivityName": "retrieve_credential",
|
|
70
|
-
"BindingsVersion": "2.1",
|
|
71
|
-
"DisplayLabel": "FullName"
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
]
|
|
57
|
+
"resources": []
|
|
75
58
|
}
|
|
76
59
|
}
|
|
@@ -1653,7 +1653,7 @@ wheels = [
|
|
|
1653
1653
|
|
|
1654
1654
|
[[package]]
|
|
1655
1655
|
name = "ticket-classification-agent"
|
|
1656
|
-
version = "0.0.
|
|
1656
|
+
version = "0.0.1"
|
|
1657
1657
|
source = { virtual = "." }
|
|
1658
1658
|
dependencies = [
|
|
1659
1659
|
{ name = "aiohttp" },
|
|
@@ -1679,7 +1679,7 @@ requires-dist = [
|
|
|
1679
1679
|
{ name = "pydantic", specifier = ">=2.10.6" },
|
|
1680
1680
|
{ name = "python-dotenv", specifier = ">=1.0.1" },
|
|
1681
1681
|
{ name = "typing-extensions", specifier = ">=4.12.2" },
|
|
1682
|
-
{ name = "uipath-langchain", specifier = "==0.0.
|
|
1682
|
+
{ name = "uipath-langchain", specifier = "==0.0.90" },
|
|
1683
1683
|
]
|
|
1684
1684
|
|
|
1685
1685
|
[[package]]
|
|
@@ -1826,7 +1826,7 @@ wheels = [
|
|
|
1826
1826
|
|
|
1827
1827
|
[[package]]
|
|
1828
1828
|
name = "uipath"
|
|
1829
|
-
version = "2.0.
|
|
1829
|
+
version = "2.0.9"
|
|
1830
1830
|
source = { registry = "https://pypi.org/simple" }
|
|
1831
1831
|
dependencies = [
|
|
1832
1832
|
{ name = "click" },
|
|
@@ -1839,14 +1839,14 @@ dependencies = [
|
|
|
1839
1839
|
{ name = "tomli" },
|
|
1840
1840
|
{ name = "types-requests" },
|
|
1841
1841
|
]
|
|
1842
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1842
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ca/b2/4be1b45c55be25428fd4b229cf9554a46f6ecd2abc076c6cd7bed9903137/uipath-2.0.9.tar.gz", hash = "sha256:5de6678bd3dd4cc4e97f0e5635a8c7f41a9736b1a7a40ebd3888753764f85be3", size = 210455 }
|
|
1843
1843
|
wheels = [
|
|
1844
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1844
|
+
{ url = "https://files.pythonhosted.org/packages/d7/74/f34b9b7db516e0c2e569618bd693a116f37e7b5f5bdd73e3db3cdcdc34c7/uipath-2.0.9-py3-none-any.whl", hash = "sha256:37212e2494c300aef08a593f4dcbbb1234dc7c26d2d665c2fe671dcd486ee286", size = 86475 },
|
|
1845
1845
|
]
|
|
1846
1846
|
|
|
1847
1847
|
[[package]]
|
|
1848
1848
|
name = "uipath-langchain"
|
|
1849
|
-
version = "0.0.
|
|
1849
|
+
version = "0.0.90"
|
|
1850
1850
|
source = { registry = "https://pypi.org/simple" }
|
|
1851
1851
|
dependencies = [
|
|
1852
1852
|
{ name = "httpx" },
|
|
@@ -1863,9 +1863,9 @@ dependencies = [
|
|
|
1863
1863
|
{ name = "types-requests" },
|
|
1864
1864
|
{ name = "uipath" },
|
|
1865
1865
|
]
|
|
1866
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1866
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e7/d0/945364a318dd04363364be56db5e771e0996ac0ae8487ebc28518da1274a/uipath_langchain-0.0.90.tar.gz", hash = "sha256:9cc19b71c6a05223771f36f1906737852a0b1f607757b740e0afad7e131872ed", size = 1475658 }
|
|
1867
1867
|
wheels = [
|
|
1868
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1868
|
+
{ url = "https://files.pythonhosted.org/packages/20/42/2238adcdad8b1184e0ff716a0d14918ddd5ff9f833504aed99ac8b537c45/uipath_langchain-0.0.90-py3-none-any.whl", hash = "sha256:eddcb8d3e72ed09e89c79300e03b7793d8567edf47f3f3338c4ad55ce18540b6", size = 50995 },
|
|
1869
1869
|
]
|
|
1870
1870
|
|
|
1871
1871
|
[[package]]
|
{uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/_cli/_runtime/_runtime.py
RENAMED
|
@@ -15,7 +15,7 @@ from uipath._cli._runtime._contracts import (
|
|
|
15
15
|
UiPathRuntimeResult,
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
-
from ..._utils import
|
|
18
|
+
from ..._utils import _instrument_traceable_attributes
|
|
19
19
|
from ...tracers import AsyncUiPathTracer
|
|
20
20
|
from ._context import LangGraphRuntimeContext
|
|
21
21
|
from ._exception import LangGraphRuntimeError
|
|
@@ -45,7 +45,7 @@ class LangGraphRuntime(UiPathBaseRuntime):
|
|
|
45
45
|
Raises:
|
|
46
46
|
LangGraphRuntimeError: If execution fails
|
|
47
47
|
"""
|
|
48
|
-
|
|
48
|
+
_instrument_traceable_attributes()
|
|
49
49
|
|
|
50
50
|
await self.validate()
|
|
51
51
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ..tracers._instrument_traceable import
|
|
1
|
+
from ..tracers._instrument_traceable import _instrument_traceable_attributes
|
|
2
2
|
from ._request_mixin import UiPathRequestMixin
|
|
3
3
|
|
|
4
|
-
__all__ = ["UiPathRequestMixin", "
|
|
4
|
+
__all__ = ["UiPathRequestMixin", "_instrument_traceable_attributes"]
|
{uipath_langchain-0.0.90 → uipath_langchain-0.0.91}/src/uipath_langchain/tracers/__init__.py
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
from ._instrument_traceable import
|
|
1
|
+
from ._instrument_traceable import _instrument_traceable_attributes
|
|
2
2
|
from .AsyncUiPathTracer import AsyncUiPathTracer
|
|
3
3
|
from .UiPathTracer import UiPathTracer
|
|
4
4
|
|
|
5
|
-
__all__ = ["AsyncUiPathTracer", "UiPathTracer", "
|
|
5
|
+
__all__ = ["AsyncUiPathTracer", "UiPathTracer", "_instrument_traceable_attributes"]
|