Skip to content

test(model-onboarding): four payloads per path, Studio Web coded-copy agents#1009

Open
denispetre wants to merge 1 commit into
mainfrom
feat/model-onboarding-agents
Open

test(model-onboarding): four payloads per path, Studio Web coded-copy agents#1009
denispetre wants to merge 1 commit into
mainfrom
feat/model-onboarding-agents

Conversation

@denispetre

Copy link
Copy Markdown
Contributor

What

The model-onboarding testcase now runs four capability payloads for every get_chat_model code path, all rolled into the single success boolean:

payload what it checks
simple plain ainvoke → non-empty completion
tools full tool-calling round trip (get_weather): the tool is executed and the final answer must use its result
files/<name> the coded file-processing agent (Studio Web "Clone as Coded Agent" of the low-code FileProcessingAgent): production ReAct stack (create_agent + Analyze Files internal tool), test file uploaded as a real platform attachment
is_tools call-only Activity-tool check: bind the coded copy's real IS tools (Slack Send Message to Channel, Outlook 365 Send Email) and assert the model returns a well-formed tool call — known bound name + required args (channel+messageToSend / message.toRecipients). Tools are never executed, nothing is sent, no connections needed

Design

  • Agents live under src/agents/, one subfolder per coded agent, documented in src/agents/README.md.
  • Each agent.py is the Studio Web generated main.py (downloaded via uip agent file get) with exactly one structural change: the hardcoded llm = get_chat_model('gpt-5.4', ...) becomes build_graph(llm, ...) / build_tools(...) so the testcase injects the model built from model_specmodel + API flavor stay configurable, and the run.sh / input.json / dispatch-workflow contract is unchanged.
  • Provenance: low-code twins + coded copies live in the alpha org llm_gateway_automated_testing — FileProcessingAgent (solution 1823d2d6-…, coded e7b8598c-…), IsToolsAgent (solution 925fc5db-…, coded 0959f23b-…).
  • The vertex path now pins vendor_type + api_flavor=GENERATE_CONTENT explicitly (was autodetect-only).

Verification

Graph compiles, input.json validates, both agents construct (integration tools under stub auth — create_integration_tool builds UiPath() at tool-creation time), the call-only assertion was exercised across all outcomes (well-formed ✓ with tool names, missing-args ✗, unknown-tool ✗, no-call ✗), and uipath init loads the graph. Live LLM cells run in CI / the on-demand model_onboarding.yml dispatch.

Supersedes #1007 (same end state, without the intermediate churn and provenance-copy files).

🤖 Generated with Claude Code

… agents

Every code path now runs four capability payloads, rolled into the single
success boolean:

- simple: plain ainvoke, non-empty completion
- tools: full tool-calling round trip (get_weather; executes the tool and
  asserts the final answer uses the result)
- files/<name>: the coded file-processing agent — Studio Web's "Clone as
  Coded Agent" of the low-code FileProcessingAgent — run through the
  production ReAct stack (create_agent + Analyze Files internal tool) with
  the test file uploaded as a real platform attachment
- is_tools: call-only Activity-tool check — bind the coded copy's real IS
  tools (Slack Send Message to Channel, Outlook 365 Send Email) and assert
  the model produces a well-formed tool call (known bound name + required
  args). Tools are never executed; nothing is sent; no connections needed.

Agents live under src/agents/, one subfolder per coded agent. Each agent.py
is the Studio Web generated main.py with exactly one structural change: the
hardcoded llm becomes build_graph(llm, ...)/build_tools(...) so the model
built from model_spec is injected — model + API flavor stay configurable.
The vertex path pins vendor_type + api_flavor=GENERATE_CONTENT explicitly.
utils.py is the generated interpolation helper, verbatim.

Verified: graph compiles, input.json validates, both agents construct, the
call-only assertion covers well-formed/missing-args/unknown-tool/no-call,
and `uipath init` loads the graph.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 24, 2026 15:44

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants