uipath 2.0.79__tar.gz → 2.0.81__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.
- {uipath-2.0.79 → uipath-2.0.81}/PKG-INFO +1 -1
- {uipath-2.0.79 → uipath-2.0.81}/docs/index.md +2 -2
- uipath-2.0.81/docs/sample_images/google-ADK-agent/agent-output.png +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/mkdocs.yml +1 -1
- {uipath-2.0.79 → uipath-2.0.81}/pyproject.toml +4 -1
- uipath-2.0.81/samples/google-ADK-agent/.env.example +2 -0
- uipath-2.0.81/samples/google-ADK-agent/README.md +110 -0
- uipath-2.0.81/samples/google-ADK-agent/input.json +3 -0
- uipath-2.0.81/samples/google-ADK-agent/multi_tool_agent/__init__.py +1 -0
- uipath-2.0.81/samples/google-ADK-agent/multi_tool_agent/agent.py +124 -0
- uipath-2.0.81/samples/google-ADK-agent/pyproject.toml +11 -0
- uipath-2.0.81/samples/google-ADK-agent/uv.lock +2496 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_runtime/_runtime.py +16 -5
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/_base_service.py +13 -2
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/processes_service.py +0 -1
- uipath-2.0.81/src/uipath/models/exceptions.py +36 -0
- {uipath-2.0.79 → uipath-2.0.81}/uv.lock +1700 -1700
- uipath-2.0.79/src/uipath/models/exceptions.py +0 -13
- {uipath-2.0.79 → uipath-2.0.81}/.cursorrules +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.editorconfig +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.gitattributes +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.github/workflows/cd.yml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.github/workflows/ci.yml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.github/workflows/commitlint.yml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.github/workflows/lint.yml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.github/workflows/publish-dev.yml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.github/workflows/publish-docs.yml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.github/workflows/slack.yml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.github/workflows/test.yml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.gitignore +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.pre-commit-config.yaml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.python-version +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.vscode/extensions.json +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.vscode/launch.json +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/.vscode/settings.json +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/CONTRIBUTING.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/LICENSE +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/README.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/CONTRIBUTING.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/FAQ.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/assets/env-preparation-failed-dark.png +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/assets/env-preparation-failed-light.png +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/assets/favicon.png +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/assets/logo-dark.svg +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/assets/logo-light.svg +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/cli/index.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/actions.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/assets/cloud_env_var_dark.gif +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/assets/cloud_env_var_light.gif +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/assets/cloud_env_var_secret_dark.png +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/assets/cloud_env_var_secret_light.png +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/assets/copy_path_dark.png +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/assets/copy_path_light.png +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/assets.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/attachments.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/buckets.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/connections.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/context_grounding.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/environment_variables.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/getting_started.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/jobs.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/processes.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/queues.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/core/traced.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/hooks.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/javascripts/extra.js +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/overrides/main.html +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/overrides/partials/actions.html +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/overrides/partials/logo.html +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/release_policy.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/docs/stylesheets/extra.css +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/justfile +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/py.typed +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/scripts/debug_test.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/scripts/lint_httpx_client.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/__init__.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/README.md +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/__init__.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/_auth_server.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/_client_credentials.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/_models.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/_portal_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/_utils.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/auth_config.json +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/index.html +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/localhost.crt +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_auth/localhost.key +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_runtime/_contracts.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_runtime/_escalation.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_runtime/_hitl.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_runtime/_logging.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_templates/.rels.template +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_templates/main.py.template +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_utils/_common.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_utils/_console.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_utils/_constants.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_utils/_debug.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_utils/_folders.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_utils/_input_args.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_utils/_processes.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/_utils/_tracing.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/cli_auth.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/cli_deploy.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/cli_init.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/cli_invoke.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/cli_new.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/cli_pack.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/cli_publish.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/cli_run.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/middlewares.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_cli/spinner.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_config.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_execution_context.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_folder_context.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/__init__.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/actions_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/api_client.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/assets_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/attachments_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/buckets_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/connections_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/context_grounding_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/folder_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/jobs_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/llm_gateway_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_services/queues_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_uipath.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/__init__.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/_endpoint.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/_infer_bindings.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/_logs.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/_read_overwrites.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/_request_override.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/_request_spec.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/_ssl_context.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/_url.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/_user_agent.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/_utils/constants.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/__init__.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/action_schema.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/actions.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/assets.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/attachment.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/buckets.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/connections.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/context_grounding.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/context_grounding_index.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/errors.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/interrupt_models.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/job.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/llm_gateway.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/processes.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/models/queues.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/py.typed +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/telemetry/__init__.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/telemetry/_constants.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/telemetry/_track.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/tracing/__init__.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/tracing/_otel_exporters.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/tracing/_traced.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/tracing/_utils.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/utils/__init__.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/src/uipath/utils/_endpoints_manager.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/__init__.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/conftest.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/mocks/bindings_script.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/mocks/pyproject.toml +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/mocks/simple_script.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/mocks/uipath-mock.json +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/mocks/uipath-simple-script-mock.json +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/test_hitl.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/test_init.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/test_invoke.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/test_new.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/test_pack.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/test_publish.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/test_run.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/test_utils.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/utils/project_details.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/cli/utils/uipath_json.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/conftest.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/conftest.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_actions_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_api_client.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_assets_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_attachments_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_base_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_buckets_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_connections_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_context_grounding_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_folder_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_jobs_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_llm_integration.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_llm_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_processes_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_queues_service.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/test_bindings_inference.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/test_config.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/sdk/test_overwrites.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/tracing/test_otel_exporters.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/tracing/test_span_utils.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/tracing/test_traced.py +0 -0
- {uipath-2.0.79 → uipath-2.0.81}/tests/tracing/test_tracing_manager.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: uipath
|
3
|
-
Version: 2.0.
|
3
|
+
Version: 2.0.81
|
4
4
|
Summary: Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools.
|
5
5
|
Project-URL: Homepage, https://uipath.com
|
6
6
|
Project-URL: Repository, https://github.com/UiPath/uipath-python
|
@@ -23,11 +23,11 @@ title: Getting Started
|
|
23
23
|
|
24
24
|
[Get Started](./langchain/quick_start.md)
|
25
25
|
|
26
|
-
- __UiPath
|
26
|
+
- __UiPath LlamaIndex SDK__
|
27
27
|
|
28
28
|
---
|
29
29
|
|
30
|
-
Build enterprise-grade UiPath agents using the
|
30
|
+
Build enterprise-grade UiPath agents using the LlamaIndex framework, with seamless integration from build to run.
|
31
31
|
|
32
32
|
[Get Started](./llamaindex/quick_start.md)
|
33
33
|
|
Binary file
|
@@ -59,7 +59,7 @@ nav:
|
|
59
59
|
- Context Grounding: langchain/context_grounding.md
|
60
60
|
- Human In The Loop: langchain/human_in_the_loop.md
|
61
61
|
- Sample Agents: https://github.com/UiPath/uipath-langchain-python/tree/main/samples
|
62
|
-
- UiPath
|
62
|
+
- UiPath LlamaIndex SDK:
|
63
63
|
- Getting Started: llamaindex/quick_start.md
|
64
64
|
- LLMs and Embeddings: llamaindex/llms_and_embeddings.md
|
65
65
|
- Context Grounding: llamaindex/context_grounding.md
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "uipath"
|
3
|
-
version = "2.0.
|
3
|
+
version = "2.0.81"
|
4
4
|
description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
|
5
5
|
readme = { file = "README.md", content-type = "text/markdown" }
|
6
6
|
requires-python = ">=3.10"
|
@@ -76,6 +76,7 @@ packages = ["src/uipath"]
|
|
76
76
|
[tool.ruff]
|
77
77
|
line-length = 88
|
78
78
|
indent-width = 4
|
79
|
+
exclude = ["samples/**"]
|
79
80
|
|
80
81
|
[tool.ruff.lint]
|
81
82
|
select = ["E", "F", "B", "I", "D"]
|
@@ -103,6 +104,8 @@ line-ending = "auto"
|
|
103
104
|
|
104
105
|
[tool.mypy]
|
105
106
|
plugins = ["pydantic.mypy"]
|
107
|
+
exclude = ["samples/.*"]
|
108
|
+
|
106
109
|
|
107
110
|
follow_imports = "silent"
|
108
111
|
warn_redundant_casts = true
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# UiPath Google ADK Agent
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
|
5
|
+
This project showcases how to run Google's Agent Development Kit (ADK) agents on the UiPath Platform using the UiPath SDK. The implementation follows the [Google ADK Quickstart](https://google.github.io/adk-docs/get-started/quickstart/#agentpy) guide, demonstrating the ability to deploy and execute ADK agents within the UiPath ecosystem.
|
6
|
+
|
7
|
+
## Features
|
8
|
+
|
9
|
+
- Integration with Google's Gemini model
|
10
|
+
- Seamless deployment to UiPath Platform
|
11
|
+
|
12
|
+
## Prerequisites
|
13
|
+
|
14
|
+
1. Python 3.10+
|
15
|
+
2. Google AI Studio API key
|
16
|
+
3. UiPath Platform account
|
17
|
+
|
18
|
+
## Setup and Configuration
|
19
|
+
|
20
|
+
1. **Create and activate a virtual environment**:
|
21
|
+
```bash
|
22
|
+
pip install uv
|
23
|
+
uv venv
|
24
|
+
# Windows
|
25
|
+
.venv\Scripts\activate
|
26
|
+
# Unix/MacOS
|
27
|
+
source .venv/bin/activate
|
28
|
+
```
|
29
|
+
|
30
|
+
2. **Install dependencies**:
|
31
|
+
```bash
|
32
|
+
uv sync
|
33
|
+
```
|
34
|
+
|
35
|
+
3. **Initialize UiPath configuration**:
|
36
|
+
```bash
|
37
|
+
uipath init .\multi_tool_agent\agent.py
|
38
|
+
```
|
39
|
+
This command will create (or update):
|
40
|
+
- `uipath.json`: Contains input/output schemas and bindings
|
41
|
+
- `.env`: Template for environment variables
|
42
|
+
|
43
|
+
For more details about the init command, see the [CLI Reference documentation](https://uipath.github.io/uipath-python/cli/#init).
|
44
|
+
|
45
|
+
4. **Configure environment variables**:
|
46
|
+
Update the `.env` file with:
|
47
|
+
```
|
48
|
+
GOOGLE_GENAI_USE_VERTEXAI=FALSE
|
49
|
+
GOOGLE_API_KEY=YOUR_API_KEY_HERE
|
50
|
+
```
|
51
|
+
|
52
|
+
## Deployment to UiPath Platform
|
53
|
+
|
54
|
+
1. **Authenticate with UiPath**:
|
55
|
+
```bash
|
56
|
+
uipath auth
|
57
|
+
```
|
58
|
+
|
59
|
+
2. **Package the agent**:
|
60
|
+
```bash
|
61
|
+
uipath pack
|
62
|
+
```
|
63
|
+
|
64
|
+
3. **Publish to your workspace**:
|
65
|
+
```bash
|
66
|
+
uipath publish --my-workspace
|
67
|
+
```
|
68
|
+
|
69
|
+
## Running the Agent
|
70
|
+
|
71
|
+
### On UiPath Platform
|
72
|
+
|
73
|
+
1. **Using CLI**:
|
74
|
+
```bash
|
75
|
+
uipath invoke agent --file input.json
|
76
|
+
```
|
77
|
+
|
78
|
+
2. **From Orchestrator**:
|
79
|
+
- Navigate to Processes
|
80
|
+
- Find your published agent
|
81
|
+
- Click Run
|
82
|
+
- Provide input parameters
|
83
|
+
|
84
|
+
### Local Development
|
85
|
+
|
86
|
+
For local testing and development:
|
87
|
+
```bash
|
88
|
+
uipath run agent --file input.json
|
89
|
+
# Debug mode
|
90
|
+
uipath run agent --file input.json --debug
|
91
|
+
```
|
92
|
+
|
93
|
+
## Example Query and Output
|
94
|
+
|
95
|
+
Query:
|
96
|
+
```
|
97
|
+
"What time is it in New York, and what's the weather like?"
|
98
|
+
```
|
99
|
+
|
100
|
+
When running on the UiPath Platform, you'll see the output in the job details:
|
101
|
+
|
102
|
+

|
103
|
+
|
104
|
+
## Notes
|
105
|
+
|
106
|
+
- The agent uses Google's Gemini model for natural language processing
|
107
|
+
- All agent interactions are logged and can be monitored through UiPath's tracing capabilities
|
108
|
+
- The agent can be extended with additional tools and capabilities
|
109
|
+
|
110
|
+
For more information about Google ADK, visit the [official documentation](https://google.github.io/adk-docs/).
|
@@ -0,0 +1 @@
|
|
1
|
+
from . import agent
|
@@ -0,0 +1,124 @@
|
|
1
|
+
import dataclasses
|
2
|
+
import datetime
|
3
|
+
from typing import Dict
|
4
|
+
from zoneinfo import ZoneInfo
|
5
|
+
|
6
|
+
from google.adk.agents import Agent
|
7
|
+
from google.adk.runners import Runner
|
8
|
+
from google.adk.sessions import InMemorySessionService
|
9
|
+
from google.genai.types import Content, Part
|
10
|
+
|
11
|
+
|
12
|
+
def get_weather(city: str) -> Dict[str, str]:
|
13
|
+
"""Retrieves the current weather report for a specified city.
|
14
|
+
|
15
|
+
Args:
|
16
|
+
city (str): The name of the city for which to retrieve the weather report.
|
17
|
+
|
18
|
+
Returns:
|
19
|
+
Dict[str, str]: Dictionary containing status and result or error message.
|
20
|
+
"""
|
21
|
+
if city.lower() == "new york":
|
22
|
+
return {
|
23
|
+
"status": "success",
|
24
|
+
"report": (
|
25
|
+
"The weather in New York is sunny with a temperature of 25 degrees"
|
26
|
+
" Celsius (77 degrees Fahrenheit)."
|
27
|
+
),
|
28
|
+
}
|
29
|
+
else:
|
30
|
+
return {
|
31
|
+
"status": "error",
|
32
|
+
"error_message": f"Weather information for '{city}' is not available.",
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
def get_current_time(city: str) -> Dict[str, str]:
|
37
|
+
"""Returns the current time in a specified city.
|
38
|
+
|
39
|
+
Args:
|
40
|
+
city (str): The name of the city for which to retrieve the current time.
|
41
|
+
|
42
|
+
Returns:
|
43
|
+
Dict[str, str]: Dictionary containing status and result or error message.
|
44
|
+
"""
|
45
|
+
if city.lower() == "new york":
|
46
|
+
tz_identifier = "America/New_York"
|
47
|
+
else:
|
48
|
+
return {
|
49
|
+
"status": "error",
|
50
|
+
"error_message": (f"Sorry, I don't have timezone information for {city}."),
|
51
|
+
}
|
52
|
+
|
53
|
+
tz = ZoneInfo(tz_identifier)
|
54
|
+
now = datetime.datetime.now(tz)
|
55
|
+
report = f"The current time in {city} is {now.strftime('%Y-%m-%d %H:%M:%S %Z%z')}"
|
56
|
+
return {"status": "success", "report": report}
|
57
|
+
|
58
|
+
|
59
|
+
root_agent = Agent(
|
60
|
+
name="weather_time_agent",
|
61
|
+
model="gemini-1.5-flash",
|
62
|
+
description=("Agent to answer questions about the time and weather in a city."),
|
63
|
+
instruction=(
|
64
|
+
"You are a helpful agent who can answer user questions about the time and weather in a city."
|
65
|
+
),
|
66
|
+
tools=[get_weather, get_current_time],
|
67
|
+
)
|
68
|
+
|
69
|
+
|
70
|
+
@dataclasses.dataclass
|
71
|
+
class AgentInput:
|
72
|
+
"""Input data structure for the agent.
|
73
|
+
|
74
|
+
Attributes:
|
75
|
+
query (str): The user's query string.
|
76
|
+
"""
|
77
|
+
|
78
|
+
query: str
|
79
|
+
|
80
|
+
|
81
|
+
def configure_ssl_context() -> None:
|
82
|
+
"""Configure SSL context with proper certificate paths."""
|
83
|
+
import os
|
84
|
+
import ssl
|
85
|
+
|
86
|
+
default_paths = ssl.get_default_verify_paths()
|
87
|
+
if default_paths.cafile:
|
88
|
+
os.environ["SSL_CERT_FILE"] = default_paths.cafile
|
89
|
+
if not os.getenv("SSL_CERT_DIR", None):
|
90
|
+
os.environ["SSL_CERT_DIR"] = default_paths.capath or "/etc/ssl/certs"
|
91
|
+
|
92
|
+
|
93
|
+
async def main(input: AgentInput) -> str:
|
94
|
+
"""Main entry point for the agent.
|
95
|
+
|
96
|
+
Args:
|
97
|
+
input (AgentInput): The input containing the user's query.
|
98
|
+
|
99
|
+
Returns:
|
100
|
+
str: The agent's response to the query.
|
101
|
+
"""
|
102
|
+
user_id = "test_user"
|
103
|
+
session_service = InMemorySessionService()
|
104
|
+
session = await session_service.create_session(
|
105
|
+
app_name="multi-tool-agent", user_id=user_id
|
106
|
+
)
|
107
|
+
configure_ssl_context()
|
108
|
+
|
109
|
+
runner = Runner(
|
110
|
+
app_name=session.app_name,
|
111
|
+
agent=root_agent,
|
112
|
+
session_service=session_service,
|
113
|
+
)
|
114
|
+
content = Content(parts=[Part(text=input.query)], role="user")
|
115
|
+
output = ""
|
116
|
+
async for event in runner.run_async(
|
117
|
+
new_message=content,
|
118
|
+
user_id=user_id,
|
119
|
+
session_id=session.id,
|
120
|
+
):
|
121
|
+
if event.content and event.content.parts:
|
122
|
+
if text := "".join(part.text or "" for part in event.content.parts):
|
123
|
+
output = text
|
124
|
+
return output
|