Skip to content

feat(agent): classifier tool with typesafe and openai providers - #1937

Merged
ionut-mihalache-uipath merged 2 commits into
mainfrom
ccr-2add1d15-l3b9id
Oct 15, 2026
Merged

ionut-mihalache-uipath merged 2 commits into
mainfrom
ccr-2add1d15-l3b9id

Conversation

@ionut-mihalache-uipath

@ionut-mihalache-uipath ionut-mihalache-uipath commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • The jev-classifier internal tool type becomes classifier. Its settings hold the model and its provider, both required: typesafe for Jev, openai for OpenAI's Decisions API.
  • The question models gain the OpenAI Decisions shapes (choice with choices, score with labeled levels, predicate) next to the Jev ones. Each question rejects the fields of the other question types and of the other provider.
  • EndpointManager.get_vendor_decisions_endpoint() returns AgentHub's raw vendor decisions route, agenthub_/llm/raw/vendor/{vendor}/model/{model}/decisions. There is no Orchestrator variant: the orchestrator_/llm routes are no longer used, and a comment on UiPathEndpoints now says so.
  • Bumps uipath to 2.14.40 and uipath-platform to 0.2.38.

Why

OpenAI released a Decisions API that answers typed classification questions the way Jev does. The LLM Gateway now serves both on a /decisions route; Jev's /completions route is deprecated. One classifier tool with a provider is simpler for agent authors than two near-identical tools.

Breaking for the Jev tool: jev-classifier no longer parses. The tool is unreleased.

Testing

  • test_classifier_tool.py: 55 tests cover both providers' question shapes and the cross-provider and cross-type rejections.
  • New test_endpoints_manager.py checks that the decisions endpoint is AgentHub's whatever UIPATH_LLM_SERVICE says.
  • An agent definition with one tool per provider ran end to end through the decisions route.

🤖 Generated with Claude Code

Copilot AI balanced review requested due to automatic review settings October 9, 2026 15:31
@github-actions github-actions Bot added test:uipath-langchain Triggers tests in the uipath-langchain-python repository test:uipath-runtime test:uipath-integrations labels Oct 9, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The uipath lockfile still records the editable uipath-platform dependency at version 0.2.35.

0 open findings

What changed in this PR

Adds a unified classifier tool supporting TypeSafe Jev and OpenAI Decisions providers.

Changes:

  • Adds provider-specific classifier question models and validation.
  • Adds vendor decisions endpoint selection and tests.
  • Bumps package versions.
File Description
packages/​uipath/​src/​uipath/​agent/​models/​agent.py Defines unified classifier models and providers.
packages/​uipath/​tests/​agent/​models/​test_classifier_tool.py Tests classifier validation and question shapes.
packages/​uipath/​pyproject.toml Bumps uipath version.
packages/​uipath/​uv.lock Updates the locked uipath version.
packages/​uipath-platform/​src/​uipath/​platform/​common/​_endpoints_manager.py Adds decisions endpoint routing.
packages/​uipath-platform/​tests/​common/​test_endpoints_manager.py Tests AgentHub and Orchestrator routes.
packages/​uipath-platform/​pyproject.toml Bumps uipath-platform version.
packages/​uipath-platform/​uv.lock Updates the locked platform version.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@uipathepixa-dogfood

Copy link
Copy Markdown

Epixa-Dogfood Review

Review unavailable: required_pr_review_evidence_unavailable

Not reviewed: packages/uipath-platform/pyproject.toml, packages/uipath-platform/src/uipath/platform/common/_endpoints_manager.py, packages/uipath-platform/tests/common/test_endpoints_manager.py +5 more

What this PR does

The pull request author describes the intended change as follows: feat(agent): classifier tool with typesafe and Epixa runtime providers

This review did not reuse a local review of this change. Set up Epixa local review.

Full review: c627e1c 0 findings

OR_VENDOR_COMPLETION_ENDPOINT = (
"orchestrator_/llm/raw/vendor/{vendor}/model/{model}/completions"
)
OR_VENDOR_DECISION_ENDPOINT = (

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OR is no longer needed, was just temporary, and it's now deprecated, please remove and maybe add a coment about other or routes that are deprecated

@github-actions

Copy link
Copy Markdown

🚨 Heads up: uipath-langchain cross-tests are FAILING 🚨

Your changes may break the uipath-langchain-python integration.

⚠️ These checks are NOT enforced by branch protection rules. Please review the failures before merging.

🔍 Inspect the failed run →

@andreiancuta-uipath andreiancuta-uipath left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thought: The models/agent.py file is getting large. We might want to think about splitting it.

claude and others added 2 commits October 15, 2026 17:20
…esafe and openai providers

The `jev-classifier` internal tool type becomes `classifier`. Its settings hold
the model and its provider (`typesafe` for Jev, `openai` for the Decisions API),
both required. The question models gain the OpenAI Decisions shapes (choice with
choices, score with labeled levels, predicate) next to the Jev ones, and each
question rejects the fields of the other types and of the other provider.

Breaking for the unreleased Jev tool: `jev-classifier` no longer parses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F6qDf7FQSgba7JrYH4j6jw
The LLM Gateway serves typed classification decisions (OpenAI's Decisions API,
TypeSafe's Jev) on a raw vendor route next to /completions. AgentHub proxies it
as llm/raw/vendor/{vendor}/model/{model}/decisions, and
EndpointManager.get_vendor_decisions_endpoint() returns that route.

There is no Orchestrator variant: the orchestrator_/llm routes are no longer
used, and a comment on UiPathEndpoints now says so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🚨 Heads up: uipath-integrations cross-tests are FAILING 🚨

Your changes may break one or more integrations in uipath-integrations-python:

  • uipath-openai-agents
  • uipath-google-adk
  • uipath-agent-framework
  • uipath-llamaindex
  • uipath-pydantic-ai

⚠️ These checks are NOT enforced by branch protection rules. Please review the failures before merging.

🔍 Inspect the failed run →

@sonarqubecloud

Copy link
Copy Markdown

@ionut-mihalache-uipath
ionut-mihalache-uipath merged commit 1f61248 into main Oct 15, 2026
182 of 185 checks passed
@ionut-mihalache-uipath
ionut-mihalache-uipath deleted the ccr-2add1d15-l3b9id branch October 15, 2026 14:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:uipath-integrations test:uipath-langchain Triggers tests in the uipath-langchain-python repository test:uipath-runtime

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants