uipath-langchain 0.0.133__py3-none-any.whl → 0.1.28__py3-none-any.whl

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.
Files changed (83) hide show
  1. uipath_langchain/_cli/cli_init.py +130 -191
  2. uipath_langchain/_cli/cli_new.py +2 -3
  3. uipath_langchain/_resources/AGENTS.md +21 -0
  4. uipath_langchain/_resources/REQUIRED_STRUCTURE.md +92 -0
  5. uipath_langchain/_tracing/__init__.py +3 -2
  6. uipath_langchain/_tracing/_instrument_traceable.py +11 -12
  7. uipath_langchain/_utils/_request_mixin.py +327 -51
  8. uipath_langchain/_utils/_settings.py +2 -2
  9. uipath_langchain/agent/exceptions/__init__.py +6 -0
  10. uipath_langchain/agent/exceptions/exceptions.py +11 -0
  11. uipath_langchain/agent/guardrails/__init__.py +21 -0
  12. uipath_langchain/agent/guardrails/actions/__init__.py +11 -0
  13. uipath_langchain/agent/guardrails/actions/base_action.py +24 -0
  14. uipath_langchain/agent/guardrails/actions/block_action.py +42 -0
  15. uipath_langchain/agent/guardrails/actions/escalate_action.py +499 -0
  16. uipath_langchain/agent/guardrails/actions/log_action.py +58 -0
  17. uipath_langchain/agent/guardrails/guardrail_nodes.py +173 -0
  18. uipath_langchain/agent/guardrails/guardrails_factory.py +70 -0
  19. uipath_langchain/agent/guardrails/guardrails_subgraph.py +283 -0
  20. uipath_langchain/agent/guardrails/types.py +20 -0
  21. uipath_langchain/agent/react/__init__.py +14 -0
  22. uipath_langchain/agent/react/agent.py +117 -0
  23. uipath_langchain/agent/react/constants.py +2 -0
  24. uipath_langchain/agent/react/init_node.py +20 -0
  25. uipath_langchain/agent/react/llm_node.py +43 -0
  26. uipath_langchain/agent/react/router.py +97 -0
  27. uipath_langchain/agent/react/terminate_node.py +82 -0
  28. uipath_langchain/agent/react/tools/__init__.py +7 -0
  29. uipath_langchain/agent/react/tools/tools.py +50 -0
  30. uipath_langchain/agent/react/types.py +39 -0
  31. uipath_langchain/agent/react/utils.py +49 -0
  32. uipath_langchain/agent/tools/__init__.py +17 -0
  33. uipath_langchain/agent/tools/context_tool.py +53 -0
  34. uipath_langchain/agent/tools/escalation_tool.py +111 -0
  35. uipath_langchain/agent/tools/integration_tool.py +181 -0
  36. uipath_langchain/agent/tools/process_tool.py +49 -0
  37. uipath_langchain/agent/tools/static_args.py +138 -0
  38. uipath_langchain/agent/tools/structured_tool_with_output_type.py +14 -0
  39. uipath_langchain/agent/tools/tool_factory.py +45 -0
  40. uipath_langchain/agent/tools/tool_node.py +22 -0
  41. uipath_langchain/agent/tools/utils.py +11 -0
  42. uipath_langchain/chat/__init__.py +4 -0
  43. uipath_langchain/chat/bedrock.py +187 -0
  44. uipath_langchain/chat/mapper.py +309 -0
  45. uipath_langchain/chat/models.py +248 -35
  46. uipath_langchain/chat/openai.py +133 -0
  47. uipath_langchain/chat/supported_models.py +42 -0
  48. uipath_langchain/chat/vertex.py +255 -0
  49. uipath_langchain/embeddings/embeddings.py +131 -34
  50. uipath_langchain/middlewares.py +0 -6
  51. uipath_langchain/retrievers/context_grounding_retriever.py +7 -9
  52. uipath_langchain/runtime/__init__.py +36 -0
  53. uipath_langchain/runtime/_serialize.py +46 -0
  54. uipath_langchain/runtime/config.py +61 -0
  55. uipath_langchain/runtime/errors.py +43 -0
  56. uipath_langchain/runtime/factory.py +315 -0
  57. uipath_langchain/runtime/graph.py +159 -0
  58. uipath_langchain/runtime/runtime.py +453 -0
  59. uipath_langchain/runtime/schema.py +386 -0
  60. uipath_langchain/runtime/storage.py +115 -0
  61. uipath_langchain/vectorstores/context_grounding_vectorstore.py +90 -110
  62. {uipath_langchain-0.0.133.dist-info → uipath_langchain-0.1.28.dist-info}/METADATA +44 -23
  63. uipath_langchain-0.1.28.dist-info/RECORD +76 -0
  64. {uipath_langchain-0.0.133.dist-info → uipath_langchain-0.1.28.dist-info}/WHEEL +1 -1
  65. uipath_langchain-0.1.28.dist-info/entry_points.txt +5 -0
  66. uipath_langchain/_cli/_runtime/_context.py +0 -21
  67. uipath_langchain/_cli/_runtime/_conversation.py +0 -298
  68. uipath_langchain/_cli/_runtime/_exception.py +0 -17
  69. uipath_langchain/_cli/_runtime/_input.py +0 -139
  70. uipath_langchain/_cli/_runtime/_output.py +0 -234
  71. uipath_langchain/_cli/_runtime/_runtime.py +0 -379
  72. uipath_langchain/_cli/_utils/_graph.py +0 -199
  73. uipath_langchain/_cli/cli_dev.py +0 -44
  74. uipath_langchain/_cli/cli_eval.py +0 -78
  75. uipath_langchain/_cli/cli_run.py +0 -82
  76. uipath_langchain/_tracing/_oteladapter.py +0 -222
  77. uipath_langchain/_tracing/_utils.py +0 -28
  78. uipath_langchain/builder/agent_config.py +0 -191
  79. uipath_langchain/tools/preconfigured.py +0 -191
  80. uipath_langchain-0.0.133.dist-info/RECORD +0 -41
  81. uipath_langchain-0.0.133.dist-info/entry_points.txt +0 -2
  82. /uipath_langchain/{tools/__init__.py → py.typed} +0 -0
  83. {uipath_langchain-0.0.133.dist-info → uipath_langchain-0.1.28.dist-info}/licenses/LICENSE +0 -0
@@ -1,191 +0,0 @@
1
- import json
2
- import logging
3
- from typing import Iterable, Optional, Type
4
-
5
- import httpx
6
- from jsonschema_pydantic import jsonschema_to_pydantic as create_model # type: ignore
7
- from langchain_core.caches import BaseCache
8
- from langchain_core.runnables.utils import Output
9
- from langchain_core.tools import BaseTool, StructuredTool
10
- from langgraph.types import interrupt
11
- from pydantic import BaseModel
12
- from uipath import UiPath
13
- from uipath.agent.models.agent import (
14
- AgentDefinition,
15
- AgentEscalationChannel,
16
- AgentEscalationResourceConfig,
17
- AgentIntegrationToolResourceConfig,
18
- AgentProcessToolResourceConfig,
19
- AgentResourceConfig,
20
- )
21
- from uipath.models import CreateAction, InvokeProcess
22
-
23
- logger = logging.getLogger(__name__)
24
-
25
-
26
- def create_process_tool(resource: AgentProcessToolResourceConfig) -> Iterable[BaseTool]:
27
- async def process(**kwargs) -> BaseModel:
28
- return interrupt(
29
- InvokeProcess(
30
- name=resource.name,
31
- input_arguments=kwargs,
32
- process_folder_path=resource.properties.folder_path,
33
- )
34
- )
35
-
36
- input_schema = create_model(resource.input_schema)
37
-
38
- class ProcessTool(StructuredTool):
39
- @property
40
- def OutputType(self) -> type[Output]:
41
- return create_model(resource.output_schema)
42
-
43
- yield ProcessTool(
44
- name=resource.name,
45
- args_schema=input_schema,
46
- description=resource.description,
47
- coroutine=process,
48
- )
49
-
50
-
51
- def create_escalation_tool_from_channel(channel: AgentEscalationChannel) -> BaseTool:
52
- async def escalate(**kwargs) -> BaseModel:
53
- recipients = channel.recipients
54
- if len(recipients) > 1:
55
- logger.warning(
56
- "Received more than one recipient. Defaulting to first recipient."
57
- )
58
- assignee = recipients[0].value if recipients else None
59
- return interrupt(
60
- CreateAction(
61
- title=channel.description,
62
- data=kwargs,
63
- assignee=assignee,
64
- app_name=channel.properties.app_name,
65
- app_folder_path=None, # Channels specify folder name but not folder path.
66
- app_folder_key=channel.properties.resource_key,
67
- app_key=channel.properties.resource_key,
68
- app_version=channel.properties.app_version,
69
- )
70
- )
71
-
72
- input_schema = create_model(channel.input_schema)
73
-
74
- class EscalationTool(StructuredTool):
75
- @property
76
- def OutputType(self) -> type[Output]:
77
- return create_model(channel.output_schema)
78
-
79
- return EscalationTool(
80
- name=channel.name,
81
- args_schema=input_schema,
82
- description=channel.description,
83
- coroutine=escalate,
84
- )
85
-
86
-
87
- def create_escalation_tool(
88
- resource: AgentEscalationResourceConfig,
89
- ) -> Iterable[BaseTool]:
90
- for channel in resource.channels:
91
- yield create_escalation_tool_from_channel(channel)
92
-
93
-
94
- def create_integration_tool(
95
- resource: AgentIntegrationToolResourceConfig,
96
- ) -> Iterable[BaseTool]:
97
- async def integration(**kwargs) -> BaseModel:
98
- uipath = UiPath()
99
- remote_connection = await uipath.connections.retrieve_async(
100
- resource.properties.connection.id
101
- )
102
- token = await uipath.connections.retrieve_token_async(
103
- resource.properties.connection.id
104
- )
105
- tool_url = f"{remote_connection.api_base_uri}/v3/element/instances/{remote_connection.element_instance_id}{resource.properties.tool_path}"
106
-
107
- response = await httpx.AsyncClient().request(
108
- resource.properties.method,
109
- tool_url,
110
- headers={"Authorization": f"Bearer {token.access_token}"},
111
- content=json.dumps(kwargs),
112
- )
113
- return response.json()
114
-
115
- input_schema = create_model(resource.input_schema)
116
-
117
- class IntegrationTool(StructuredTool):
118
- @property
119
- def OutputType(self) -> type[Output]:
120
- return create_model({})
121
-
122
- yield IntegrationTool(
123
- name=resource.name,
124
- args_schema=input_schema,
125
- description=resource.description,
126
- coroutine=integration,
127
- )
128
-
129
-
130
- def create_cached_wrapper_from_tool(
131
- wrapped: BaseTool, cache: Optional[BaseCache]
132
- ) -> BaseTool:
133
- if cache is None:
134
- return wrapped
135
- else:
136
-
137
- async def cached_invocation(**kwargs) -> BaseModel:
138
- namespace = f"{wrapped.name}.tool_invoke"
139
- key = str(kwargs)
140
- cached = cache.lookup(namespace, key)
141
- if cached:
142
- return cached[0]
143
- response = await wrapped.ainvoke(input=kwargs)
144
- cache.update(namespace, key, [response])
145
- return response
146
-
147
- input_schema = wrapped.args_schema
148
-
149
- class CachedTool(StructuredTool):
150
- OutputType: Type[BaseModel] = wrapped.OutputType
151
-
152
- return CachedTool(
153
- name=wrapped.name,
154
- args_schema=input_schema,
155
- description=wrapped.description,
156
- coroutine=cached_invocation,
157
- )
158
-
159
-
160
- def create_cached_wrapper(
161
- tools: Iterable[BaseTool], cache: Optional[BaseCache]
162
- ) -> Iterable[BaseTool]:
163
- for wrapped in tools:
164
- yield create_cached_wrapper_from_tool(wrapped, cache)
165
-
166
-
167
- def create_resource_tool(
168
- resource: AgentResourceConfig, cache: Optional[BaseCache] = None
169
- ) -> Iterable[BaseTool]:
170
- match resource:
171
- case AgentProcessToolResourceConfig():
172
- return create_cached_wrapper(create_process_tool(resource), cache)
173
- case AgentIntegrationToolResourceConfig():
174
- return create_cached_wrapper(create_integration_tool(resource), cache)
175
- case AgentEscalationResourceConfig():
176
- return create_cached_wrapper(create_escalation_tool(resource), cache)
177
- case _:
178
- raise NotImplementedError()
179
-
180
-
181
- def safe_extract_tools(
182
- agent_definition: AgentDefinition, cache: Optional[BaseCache] = None
183
- ) -> list[BaseTool]:
184
- tools = []
185
- for resource in agent_definition.resources:
186
- try:
187
- for structured_tool in create_resource_tool(resource, cache):
188
- tools.append(structured_tool)
189
- except NotImplementedError:
190
- logger.warning(f"Unable to convert {resource.name} into a tool.")
191
- return tools
@@ -1,41 +0,0 @@
1
- uipath_langchain/__init__.py,sha256=VBrvQn7d3nuOdN7zEnV2_S-uhmkjgEIlXiFVeZxZakQ,80
2
- uipath_langchain/middlewares.py,sha256=6ljfbtWekrYc5G9KWDLSaViJ1DVIaNM-4qeB1BfHywE,731
3
- uipath_langchain/_cli/__init__.py,sha256=juqd9PbXs4yg45zMJ7BHAOPQjb7sgEbWE9InBtGZhfo,24
4
- uipath_langchain/_cli/cli_dev.py,sha256=3e9RldNGirIk9184NdLK6kDuGeeqZjekTxbSZRtXjBE,1505
5
- uipath_langchain/_cli/cli_eval.py,sha256=mvaKRF-pvxdNa2mk_ude9SYSd_kmMBo-hChlXokXOcw,2795
6
- uipath_langchain/_cli/cli_init.py,sha256=xhxJ8tuMSrVUNHvltgyPpOrvgMA-wq9shHeYYwvHILs,8199
7
- uipath_langchain/_cli/cli_new.py,sha256=KKLxCzz7cDQ__rRr_a496IHWlSQXhmrBNgmKHnXAnTY,2336
8
- uipath_langchain/_cli/cli_run.py,sha256=hRcoXJgOIFceCswzTfZKyzqVee3j-oSh-13EfuQmmE8,2614
9
- uipath_langchain/_cli/_runtime/_context.py,sha256=yyzYJDmk2fkH4T5gm4cLGRyXtjLESrpzHBT9euqluTA,817
10
- uipath_langchain/_cli/_runtime/_conversation.py,sha256=S1KTx_q-La7ikPRT3nBcIp8t-J9CF0QB0DCduQIIB28,11149
11
- uipath_langchain/_cli/_runtime/_exception.py,sha256=USKkLYkG-dzjX3fEiMMOHnVUpiXJs_xF0OQXCCOvbYM,546
12
- uipath_langchain/_cli/_runtime/_input.py,sha256=Zx-8ZEr5Z796gdd3NnrlNObMIuXJobAV9mZwOql67Lo,5658
13
- uipath_langchain/_cli/_runtime/_output.py,sha256=yJOZPWv2FRUJWv1NRs9JmpB4QMTDXu8jrxoaKrfJvzw,9078
14
- uipath_langchain/_cli/_runtime/_runtime.py,sha256=cVt0TlsEBmKv6EcFTtCOT9ITsguzLDqFGMdhPOiBPRc,14318
15
- uipath_langchain/_cli/_templates/langgraph.json.template,sha256=eeh391Gta_hoRgaNaZ58nW1LNvCVXA7hlAH6l7Veous,107
16
- uipath_langchain/_cli/_templates/main.py.template,sha256=GpSblGH2hwS9ibqQmX2iB2nsmOA5zDfEEF4ChLiMxbQ,875
17
- uipath_langchain/_cli/_utils/_graph.py,sha256=nMJWy8FmaD9rqPUY2lHc5uVpUzbXD1RO12uJnhe0kdo,6803
18
- uipath_langchain/_tracing/__init__.py,sha256=UqrLc_WimpzKY82M0LJsgJ-HFQUQFjOmOlD1XQ8V-R4,181
19
- uipath_langchain/_tracing/_instrument_traceable.py,sha256=8f9FyAKWE6kH1N8ErbpwqZHAzNjGwbLjQn7jdX5yAgA,4343
20
- uipath_langchain/_tracing/_oteladapter.py,sha256=bhbLLTBwZ1rLDL-BgbvB8oR11y1Tp8jEw2mrAuVJ5go,8433
21
- uipath_langchain/_tracing/_utils.py,sha256=r_fiSk3HDDAcePY_UbbEYiSbNqzn5gFeMPYBDvGrFx0,902
22
- uipath_langchain/_utils/__init__.py,sha256=-w-4TD9ZnJDCpj4VIPXhJciukrmDJJbmnOFnhAkAaEU,81
23
- uipath_langchain/_utils/_request_mixin.py,sha256=ddKFs_0mjoFCmvPTiOTPJh1IIqYUo5CUka-B7zAZphE,19695
24
- uipath_langchain/_utils/_settings.py,sha256=2fExMQJ88YptfldmzMfZIpsx-m1gfMkeYGf5t6KIe0A,3084
25
- uipath_langchain/_utils/_sleep_policy.py,sha256=e9pHdjmcCj4CVoFM1jMyZFelH11YatsgWfpyrfXzKBQ,1251
26
- uipath_langchain/builder/agent_config.py,sha256=b9WODKPjvufj41Ow_dQn5CnaTAjAZyQoNhuAl8vfiso,5809
27
- uipath_langchain/chat/__init__.py,sha256=WDcvy91ixvZ3Mq7Ae94g5CjyQwXovDBnEv1NlD5SXBE,116
28
- uipath_langchain/chat/models.py,sha256=m5PRAFXzUamt6-1K9uSlWUvZg_NfVyYHkgoQDJ-1rGs,10527
29
- uipath_langchain/embeddings/__init__.py,sha256=QICtYB58ZyqFfDQrEaO8lTEgAU5NuEKlR7iIrS0OBtc,156
30
- uipath_langchain/embeddings/embeddings.py,sha256=45gKyb6HVKigwE-0CXeZcAk33c0mteaEdPGa8hviqcw,4339
31
- uipath_langchain/retrievers/__init__.py,sha256=rOn7PyyHgZ4pMnXWPkGqmuBmx8eGuo-Oyndo7Wm9IUU,108
32
- uipath_langchain/retrievers/context_grounding_retriever.py,sha256=YLCIwy89LhLnNqcM0YJ5mZoeNyCs5UiKD3Wly8gnW1E,2239
33
- uipath_langchain/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- uipath_langchain/tools/preconfigured.py,sha256=Ucl9mta_su66j-5uOC-vZzyc3V2-Em6q9WO1qsmQv48,6291
35
- uipath_langchain/vectorstores/__init__.py,sha256=w8qs1P548ud1aIcVA_QhBgf_jZDrRMK5Lono78yA8cs,114
36
- uipath_langchain/vectorstores/context_grounding_vectorstore.py,sha256=TncIXG-YsUlO0R5ZYzWsM-Dj1SVCZbzmo2LraVxXelc,9559
37
- uipath_langchain-0.0.133.dist-info/METADATA,sha256=zcSdl4I5iJsBi0jOf7IUUprBv39KfQZyrM1EzVH1OCQ,4275
38
- uipath_langchain-0.0.133.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
39
- uipath_langchain-0.0.133.dist-info/entry_points.txt,sha256=FUtzqGOEntlJKMJIXhQUfT7ZTbQmGhke1iCmDWZaQZI,81
40
- uipath_langchain-0.0.133.dist-info/licenses/LICENSE,sha256=JDpt-uotAkHFmxpwxi6gwx6HQ25e-lG4U_Gzcvgp7JY,1063
41
- uipath_langchain-0.0.133.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- [uipath.middlewares]
2
- register = uipath_langchain.middlewares:register_middleware
File without changes