docs(studio-web): document coded function integration [PRODEV-605]#1675
docs(studio-web): document coded function integration [PRODEV-605]#1675alexandra-c wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Extends the Studio Web integration documentation to include coded functions alongside coded agents, updating setup, sync, and CLI usage guidance so users can follow a single guide for both project types.
Changes:
- Updates the intro and Cloud Workspace flow to cover importing/pushing coded functions as well as coded agents.
- Expands Local Workspace setup with a dedicated Coded Function scaffold path.
- Adds agent/function tabbed examples for
uipath runanduipath debug, plus new notes around evaluations.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
d33e6df to
ee52f4e
Compare
| @@ -1,5 +1,7 @@ | |||
| # CLI Reference | |||
|
|
|||
| The following commands apply to both **coded functions** and **coded agents**. The entry point name (`main`, `agent`, or any key you define in `uipath.json`) is the first argument to `run`, `debug`, `eval`, and `invoke`. | |||
There was a problem hiding this comment.
uipath.json is the main manifest only for coded functions.
for coded agents each integration has its specific manifest where entrypoints are defined.
ex
uipath-langchain -> langgraph.json
uipath-llamaindex -> llamaindex.json
uipath-openai -> openai_agents.json
There was a problem hiding this comment.
Updated. The intro now clarifies the entry point is the uipath.json key for functions and the framework manifest for agents, with examples:
for a coded agent it is the entry point declared in the framework manifest —
langgraph.json(uipath-langchain),llama_index.json(uipath-llamaindex), oropenai_agents.json(uipath-openai-agents)
| /// tab | Bash/ZSH | ||
| ```console | ||
| uipath run agent '{"topic": "UiPath"}' | ||
| uipath run main '{"message": "hello"}' |
There was a problem hiding this comment.
main is too specific for functions IMO.
| uipath run main '{"message": "hello"}' | |
| uipath run <entrypoint> '{"message": "hello"}' |
we can have an info box where we give some examples if this is not clear enough. like
uipath run agent / uipath run function
There was a problem hiding this comment.
Done — the shell tabs now use uipath run <entrypoint> ..., and I added an info box with examples:
uipath run agent '{"message": "hello"}' # coded agent
uipath run main '{"message": "hello"}' # coded function
| @@ -0,0 +1,245 @@ | |||
| # Python Coded Agents | |||
|
|
|||
| A coded agent is Python code that uses an LLM reasoning loop to make decisions, call tools, and produce a result. You write the agent logic using a framework of your choice — the `uipath` SDK provides the platform layer: authentication, assets, buckets, connections, tracing, and human-in-the-loop. Package it with the CLI and deploy it as an Orchestrator job. | |||
There was a problem hiding this comment.
You write the agent logic using a framework of your choice -> I would mention somewhere around here our curated integrations. uipath-langchain (recommended) or one from uipath-integrations with repo links
There was a problem hiding this comment.
authentication, assets, buckets, connections, tracing, and human-in-the-loop. -> this is not a comprehensive list as it currently sounds like. I would also mention guardrails, AI Trust Layer here
There was a problem hiding this comment.
Fixed: now reads "uses one or more LLMs in a reasoning loop".
There was a problem hiding this comment.
Added — the intro now calls out our curated integrations: uipath-langchain (recommended) plus the uipath-integrations repo, both linked.
There was a problem hiding this comment.
Added guardrails and AI Trust Layer, and ended the list with "and more" so it no longer reads as exhaustive.
|
|
||
| A coded agent is Python code that uses an LLM reasoning loop to make decisions, call tools, and produce a result. You write the agent logic using a framework of your choice — the `uipath` SDK provides the platform layer: authentication, assets, buckets, connections, tracing, and human-in-the-loop. Package it with the CLI and deploy it as an Orchestrator job. | ||
|
|
||
| Use a coded agent when your automation needs multi-step reasoning, dynamic tool selection, or LLM-driven decisions. Use a [coded function](./functions.md) when your logic is deterministic and no LLM is required. |
There was a problem hiding this comment.
I would remove the automation part here
There was a problem hiding this comment.
Removed — now reads "Use a coded agent when your logic needs multi-step reasoning...".
|
|
||
| | Layer | Package | Responsibility | | ||
| |-------|---------|---------------| | ||
| | **Platform** | `uipath` | Auth, assets, buckets, connections, tracing, human-in-the-loop, CLI, packaging | |
There was a problem hiding this comment.
platform is in uipath-platform package.
let s change package to package(s) in column name and add here uipath-core, uipath-platform, uipath-llm-clients etc. (these are only a subset of our libraries)
There was a problem hiding this comment.
Done — renamed the column to Package(s) and listed uipath, uipath-core, uipath-platform, uipath-llm-clients, ....
| | PydanticAI | `uipath-pydantic-ai` | Type-safe agents with Pydantic models | | ||
| | Google ADK | `uipath-google-adk` | Gemini models, Google ecosystem | | ||
| | UiPath Agent Framework | `uipath-agent-framework` | UiPath-native agent primitives | |
There was a problem hiding this comment.
not documented yet, remove for now
There was a problem hiding this comment.
Removed all three (PydanticAI, Google ADK, UiPath Agent Framework) — from both this table and the Framework Guides table below. Also dropped them from the install list on the Studio Web page for consistency.
|
|
||
| ## Input & Output | ||
|
|
||
| Define `Input` and `Output` as Python dataclasses, the same way as [coded functions](./functions.md#input--output): |
There was a problem hiding this comment.
they can be dataclasees/baseModels/typedDicts etc. this depends on the framework used
I would remove this entire section
There was a problem hiding this comment.
Removed the entire Input & Output section — the shape depends on the framework.
|
|
||
| ## Platform Services | ||
|
|
||
| The `uipath` SDK gives your agent access to Orchestrator resources at runtime — credentials are injected automatically when running as a job. |
There was a problem hiding this comment.
not only orchestrator
There was a problem hiding this comment.
Generalized — now reads "access to UiPath platform resources" / "full set of platform services" instead of Orchestrator.
|
|
||
| --- | ||
|
|
||
| ## Quickstart |
There was a problem hiding this comment.
why do we need this section? we already have quickstarts for each framework. I would drop it
There was a problem hiding this comment.
Dropped the Quickstart section and replaced it with a pointer to the per-framework Framework Guides.
| @@ -0,0 +1,423 @@ | |||
| # Python Coded Functions | |||
|
|
|||
| A coded function is Python code with typed input and output that runs as an Orchestrator job. You write plain Python — no agent framework, no LLM required — package it with the CLI, and invoke it from Maestro processes, Coded Apps, or any UiPath job trigger. | |||
There was a problem hiding this comment.
UiPath job trigger -> this sounds weird for somebody that is unfamiliar with UiPath platform. I would just extend the enumeration with RPA and Agents
There was a problem hiding this comment.
Reworded — extended the enumeration: "Maestro processes, RPA workflows, coded agents, Coded Apps, or any UiPath job".
|
|
||
| ## Input & Output | ||
|
|
||
| Define `Input` and `Output` as Python dataclasses. The runtime validates against these at invocation time and exports them as JSON Schema for Maestro variable binding. |
There was a problem hiding this comment.
they can also be pydantic BaseModels or thin classes with typed annotations.
There was a problem hiding this comment.
why is maestro singled out here? same applies to RPA/Agents
There was a problem hiding this comment.
Added — now reads "dataclasses, pydantic BaseModels, or thin classes with typed annotations".
There was a problem hiding this comment.
Generalized — the exported JSON Schema is now described for "callers (Maestro processes, RPA workflows, agents, and others)", not Maestro alone.
|
|
||
| ### Error output pattern | ||
|
|
||
| Return business errors as typed output fields rather than raising exceptions. This lets Maestro inspect the error reason and route the process accordingly: |
There was a problem hiding this comment.
same here about maestro mention. we can include it as an example if we want, but this sounds like coded functions will be only available within maestro processes
There was a problem hiding this comment.
Same — now reads "lets the caller (a Maestro process, an RPA workflow, an agent, ...) inspect the error reason and route accordingly".
|
|
||
| ## Platform Services | ||
|
|
||
| `UiPath()` gives your function access to Orchestrator resources at runtime. Credentials are injected automatically when running as a job — no configuration needed. |
There was a problem hiding this comment.
same here. there are many more FPSs available through UiPath() interface.
full list here
There was a problem hiding this comment.
Done — added a link to the full uipath-platform package list so it is clear there are many more services than the few shown.
|
|
||
| --- | ||
|
|
||
| ## Platform Services |
There was a problem hiding this comment.
why is this a section? we have every service already documented. this just duplicates data
There was a problem hiding this comment.
Condensed the section to a short intro plus links to the per-service references, instead of duplicating each service with its own code block.
|
|
||
| ## Idempotency | ||
|
|
||
| Functions may be retried by Maestro after a transient failure. Always check for an existing result before writing to an external system: |
There was a problem hiding this comment.
same maestro phrasing
There was a problem hiding this comment.
Fixed — now reads "Functions may be retried by the caller after a transient failure".
| return Output(result_id=result_id, status="Created") | ||
| ``` | ||
|
|
||
| Use a stable, business-meaningful identifier (invoice number, order ID) as the idempotency key — avoid auto-generated IDs that don't exist before the first write. |
There was a problem hiding this comment.
this should be phrased as a recommendation, not as a hard rule. I suggest an info box
There was a problem hiding this comment.
Reframed as a recommendation in a tip info box rather than a hard rule:
/// tip
Prefer a stable, business-meaningful identifier (invoice number, order ID) as the idempotency key ...
///
|
|
||
| - Invoked as a **Maestro Service Task** — Maestro binds typed input/output to process variables automatically from the exported JSON Schema | ||
| - Triggered via the **Orchestrator API** (`POST /Jobs/StartJobs`) | ||
| - Run from the CLI: `uipath invoke main '{"..."}'` |
There was a problem hiding this comment.
only if it is deployed in personal workspace.
There was a problem hiding this comment.
Scoped — now reads "Run from the CLI with uipath invoke main ... (when deployed to your personal workspace)".
| ## Syncing Evaluations | ||
|
|
||
| Evaluations can be defined either in Studio Web or locally. They sync automatically when you use `uipath pull` and `uipath push`. | ||
| Evaluations can be defined either in Studio Web or locally, and sync automatically when you use `uipath pull` and `uipath push`. Defining and running evaluations in Studio Web is supported for coded agents only; coded functions can still be evaluated locally with `uipath eval`. |
There was a problem hiding this comment.
why do we have evals for coded functions? Evals are agent specific. classic python functions can (and should) be unit tested.
There was a problem hiding this comment.
Agreed — evals are now scoped to coded agents only. The page notes functions are plain Python to be unit-tested instead, and the "Syncing Evaluations" section is described as a coded-agent feature.
- Add docs/core/functions.md — full reference for coded functions: project structure, I/O types, platform services, tracing, multiple entry points, idempotency, pack/publish with screenshots - Add docs/core/agents.md — guide for coded agents: architecture, framework comparison table (LangChain, LlamaIndex, OpenAI Agents, PydanticAI, Google ADK, UiPath Agent Framework), quickstart, platform services, tracing, framework guides - Add three screenshots: Maestro execution trace, Orchestrator Processes list, Maestro Service Task with I/O binding - Update home page (index.md) with two clear entry points: Functions vs Agents with SDK dependency explained - Update nav: Getting Started → Coded Functions → Coded Agents → CLI - Neutralize agent-only language in cli/index.md, environment_variables.md, FAQ.md, traced.md, getting_started.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
683cd4d to
17eb20b
Compare
|



Extend the Studio Web integration guide to cover coded functions alongside coded agents
PRODEV-605