2424 set_uipath_deep_agent_runtime_spec ,
2525)
2626
27+ UiPathDeepAgentPrompt = str | Callable [[dict [str , Any ]], str ]
28+
2729
2830@dataclass (frozen = True )
2931class UiPathDeepAgent :
@@ -38,7 +40,8 @@ def create_uipath_deep_agent(
3840 model : BaseChatModel ,
3941 input_schema : type [BaseModel ] | None = None ,
4042 output_schema : type [BaseModel ],
41- system_prompt : str = "" ,
43+ system_prompt : UiPathDeepAgentPrompt = "" ,
44+ user_prompt : UiPathDeepAgentPrompt | None = None ,
4245 tools : Sequence [BaseTool ] = (),
4346 subagents : Sequence [SubAgent | CompiledSubAgent ] = (),
4447 backend : BackendProtocol | BackendFactory | None = None ,
@@ -60,6 +63,7 @@ def create_uipath_deep_agent(
6063 input_schema = input_schema ,
6164 output_schema = output_schema ,
6265 system_prompt = system_prompt ,
66+ user_prompt = user_prompt ,
6367 tools = tools ,
6468 subagents = subagents ,
6569 backend = backend ,
@@ -85,7 +89,8 @@ def create_uipath_deep_agent_graph(
8589 model : BaseChatModel ,
8690 input_schema : type [BaseModel ] | None = None ,
8791 output_schema : type [BaseModel ],
88- system_prompt : str = "" ,
92+ system_prompt : UiPathDeepAgentPrompt = "" ,
93+ user_prompt : UiPathDeepAgentPrompt | None = None ,
8994 tools : Sequence [BaseTool ] = (),
9095 subagents : Sequence [SubAgent | CompiledSubAgent ] = (),
9196 backend : BackendProtocol | BackendFactory | None = None ,
@@ -112,18 +117,27 @@ def create_uipath_deep_agent_graph(
112117 workspace_config_key = workspace_config_key ,
113118 )
114119 response_format = response_format or ToolStrategy (output_schema )
115- build_user_message = build_user_message or _default_user_message
120+ if user_prompt is not None and build_user_message is not None :
121+ raise ValueError ("Use either user_prompt or build_user_message, not both." )
122+
123+ static_system_prompt , build_system_message = _split_system_prompt (system_prompt )
124+ build_user_message = (
125+ _coerce_prompt_renderer (user_prompt )
126+ if user_prompt is not None
127+ else build_user_message or _default_user_message
128+ )
116129
117130 graph = create_advanced_agent_graph (
118131 model = model ,
119132 tools = tools ,
120133 subagents = subagents ,
121- system_prompt = system_prompt ,
134+ system_prompt = static_system_prompt ,
122135 backend = backend ,
123136 response_format = response_format ,
124137 input_schema = input_schema ,
125138 output_schema = output_schema ,
126139 build_user_message = build_user_message ,
140+ build_system_message = build_system_message ,
127141 )
128142 set_uipath_deep_agent_runtime_spec (
129143 graph ,
@@ -137,6 +151,22 @@ def create_uipath_deep_agent_graph(
137151 return graph
138152
139153
154+ def _split_system_prompt (
155+ system_prompt : UiPathDeepAgentPrompt ,
156+ ) -> tuple [str , Callable [[dict [str , Any ]], str ] | None ]:
157+ if callable (system_prompt ):
158+ return "" , system_prompt
159+ return system_prompt , None
160+
161+
162+ def _coerce_prompt_renderer (
163+ prompt : UiPathDeepAgentPrompt ,
164+ ) -> Callable [[dict [str , Any ]], str ]:
165+ if callable (prompt ):
166+ return prompt
167+ return lambda _args : prompt
168+
169+
140170def _default_user_message (args : dict [str , Any ]) -> str :
141171 if not args :
142172 return ""
0 commit comments