uipath-langchain 0.1.28__py3-none-any.whl → 0.1.34__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 (33) hide show
  1. uipath_langchain/_utils/_request_mixin.py +8 -0
  2. uipath_langchain/_utils/_settings.py +3 -2
  3. uipath_langchain/agent/guardrails/__init__.py +0 -16
  4. uipath_langchain/agent/guardrails/actions/__init__.py +2 -0
  5. uipath_langchain/agent/guardrails/actions/block_action.py +1 -1
  6. uipath_langchain/agent/guardrails/actions/escalate_action.py +17 -34
  7. uipath_langchain/agent/guardrails/actions/filter_action.py +55 -0
  8. uipath_langchain/agent/guardrails/actions/log_action.py +1 -1
  9. uipath_langchain/agent/guardrails/guardrail_nodes.py +161 -45
  10. uipath_langchain/agent/guardrails/guardrails_factory.py +200 -4
  11. uipath_langchain/agent/guardrails/types.py +0 -12
  12. uipath_langchain/agent/guardrails/utils.py +146 -0
  13. uipath_langchain/agent/react/agent.py +20 -7
  14. uipath_langchain/agent/react/constants.py +1 -2
  15. uipath_langchain/agent/{guardrails → react/guardrails}/guardrails_subgraph.py +57 -18
  16. uipath_langchain/agent/react/llm_node.py +41 -10
  17. uipath_langchain/agent/react/router.py +48 -37
  18. uipath_langchain/agent/react/types.py +15 -1
  19. uipath_langchain/agent/react/utils.py +1 -1
  20. uipath_langchain/agent/tools/__init__.py +2 -0
  21. uipath_langchain/agent/tools/mcp_tool.py +86 -0
  22. uipath_langchain/chat/__init__.py +4 -0
  23. uipath_langchain/chat/bedrock.py +16 -0
  24. uipath_langchain/chat/openai.py +56 -26
  25. uipath_langchain/chat/supported_models.py +9 -0
  26. uipath_langchain/chat/vertex.py +62 -46
  27. uipath_langchain/embeddings/embeddings.py +18 -12
  28. uipath_langchain/runtime/schema.py +72 -16
  29. {uipath_langchain-0.1.28.dist-info → uipath_langchain-0.1.34.dist-info}/METADATA +4 -2
  30. {uipath_langchain-0.1.28.dist-info → uipath_langchain-0.1.34.dist-info}/RECORD +33 -30
  31. {uipath_langchain-0.1.28.dist-info → uipath_langchain-0.1.34.dist-info}/WHEEL +0 -0
  32. {uipath_langchain-0.1.28.dist-info → uipath_langchain-0.1.34.dist-info}/entry_points.txt +0 -0
  33. {uipath_langchain-0.1.28.dist-info → uipath_langchain-0.1.34.dist-info}/licenses/LICENSE +0 -0
@@ -40,60 +40,59 @@ from langchain_google_genai import ChatGoogleGenerativeAI
40
40
  from pydantic import PrivateAttr
41
41
 
42
42
 
43
- def _rewrite_request_for_gateway(
44
- request: httpx.Request, gateway_url: str
45
- ) -> httpx.Request:
46
- """Rewrite a request to redirect to the UiPath gateway."""
47
- url_str = str(request.url)
48
- if "generateContent" in url_str or "streamGenerateContent" in url_str:
49
- is_streaming = "alt=sse" in url_str
50
-
51
- headers = dict(request.headers)
52
-
53
- headers["X-UiPath-Streaming-Enabled"] = "true" if is_streaming else "false"
54
-
55
- gateway_url_parsed = httpx.URL(gateway_url)
56
- if gateway_url_parsed.host:
57
- headers["host"] = gateway_url_parsed.host
58
-
59
- return httpx.Request(
60
- method=request.method,
61
- url=gateway_url,
62
- headers=headers,
63
- content=request.content,
64
- extensions=request.extensions,
65
- )
66
- return request
43
+ def _rewrite_vertex_url(original_url: str, gateway_url: str) -> httpx.URL | None:
44
+ """Rewrite Google GenAI URLs to UiPath gateway endpoint.
45
+
46
+ Handles URL patterns containing generateContent or streamGenerateContent.
47
+ Returns the gateway URL, or None if no rewrite needed.
48
+ """
49
+ if "generateContent" in original_url or "streamGenerateContent" in original_url:
50
+ return httpx.URL(gateway_url)
51
+ return None
67
52
 
68
53
 
69
- class _UrlRewriteTransport(httpx.BaseTransport):
54
+ class _UrlRewriteTransport(httpx.HTTPTransport):
70
55
  """Transport that rewrites URLs to redirect to UiPath gateway."""
71
56
 
72
- def __init__(self, gateway_url: str):
57
+ def __init__(self, gateway_url: str, verify: bool = True):
58
+ super().__init__(verify=verify)
73
59
  self.gateway_url = gateway_url
74
- self._transport = httpx.HTTPTransport()
75
60
 
76
61
  def handle_request(self, request: httpx.Request) -> httpx.Response:
77
- request = _rewrite_request_for_gateway(request, self.gateway_url)
78
- return self._transport.handle_request(request)
79
-
80
- def close(self) -> None:
81
- self._transport.close()
62
+ original_url = str(request.url)
63
+ new_url = _rewrite_vertex_url(original_url, self.gateway_url)
64
+ if new_url:
65
+ # Set streaming header based on original URL before modifying
66
+ is_streaming = "alt=sse" in original_url
67
+ request.headers["X-UiPath-Streaming-Enabled"] = (
68
+ "true" if is_streaming else "false"
69
+ )
70
+ # Update host header to match the new URL
71
+ request.headers["host"] = new_url.host
72
+ request.url = new_url
73
+ return super().handle_request(request)
82
74
 
83
75
 
84
- class _AsyncUrlRewriteTransport(httpx.AsyncBaseTransport):
76
+ class _AsyncUrlRewriteTransport(httpx.AsyncHTTPTransport):
85
77
  """Async transport that rewrites URLs to redirect to UiPath gateway."""
86
78
 
87
- def __init__(self, gateway_url: str):
79
+ def __init__(self, gateway_url: str, verify: bool = True):
80
+ super().__init__(verify=verify)
88
81
  self.gateway_url = gateway_url
89
- self._transport = httpx.AsyncHTTPTransport()
90
82
 
91
83
  async def handle_async_request(self, request: httpx.Request) -> httpx.Response:
92
- request = _rewrite_request_for_gateway(request, self.gateway_url)
93
- return await self._transport.handle_async_request(request)
94
-
95
- async def aclose(self) -> None:
96
- await self._transport.aclose()
84
+ original_url = str(request.url)
85
+ new_url = _rewrite_vertex_url(original_url, self.gateway_url)
86
+ if new_url:
87
+ # Set streaming header based on original URL before modifying
88
+ is_streaming = "alt=sse" in original_url
89
+ request.headers["X-UiPath-Streaming-Enabled"] = (
90
+ "true" if is_streaming else "false"
91
+ )
92
+ # Update host header to match the new URL
93
+ request.headers["host"] = new_url.host
94
+ request.url = new_url
95
+ return await super().handle_async_request(request)
97
96
 
98
97
 
99
98
  class UiPathChatVertex(ChatGoogleGenerativeAI):
@@ -103,6 +102,8 @@ class UiPathChatVertex(ChatGoogleGenerativeAI):
103
102
  _model_name: str = PrivateAttr()
104
103
  _uipath_token: str = PrivateAttr()
105
104
  _uipath_llmgw_url: Optional[str] = PrivateAttr(default=None)
105
+ _agenthub_config: Optional[str] = PrivateAttr(default=None)
106
+ _byo_connection_id: Optional[str] = PrivateAttr(default=None)
106
107
 
107
108
  def __init__(
108
109
  self,
@@ -111,6 +112,8 @@ class UiPathChatVertex(ChatGoogleGenerativeAI):
111
112
  token: Optional[str] = None,
112
113
  model_name: str = GeminiModels.gemini_2_5_flash,
113
114
  temperature: Optional[float] = None,
115
+ agenthub_config: Optional[str] = None,
116
+ byo_connection_id: Optional[str] = None,
114
117
  **kwargs: Any,
115
118
  ):
116
119
  org_id = org_id or os.getenv("UIPATH_ORGANIZATION_ID")
@@ -131,18 +134,21 @@ class UiPathChatVertex(ChatGoogleGenerativeAI):
131
134
  )
132
135
 
133
136
  uipath_url = self._build_base_url(model_name)
134
- headers = self._build_headers(token)
137
+ headers = self._build_headers(token, agenthub_config, byo_connection_id)
138
+
139
+ client_kwargs = get_httpx_client_kwargs()
140
+ verify = client_kwargs.get("verify", True)
135
141
 
136
142
  http_options = genai_types.HttpOptions(
137
143
  httpx_client=httpx.Client(
138
- transport=_UrlRewriteTransport(uipath_url),
144
+ transport=_UrlRewriteTransport(uipath_url, verify=verify),
139
145
  headers=headers,
140
- **get_httpx_client_kwargs(),
146
+ **client_kwargs,
141
147
  ),
142
148
  httpx_async_client=httpx.AsyncClient(
143
- transport=_AsyncUrlRewriteTransport(uipath_url),
149
+ transport=_AsyncUrlRewriteTransport(uipath_url, verify=verify),
144
150
  headers=headers,
145
- **get_httpx_client_kwargs(),
151
+ **client_kwargs,
146
152
  ),
147
153
  )
148
154
 
@@ -168,6 +174,8 @@ class UiPathChatVertex(ChatGoogleGenerativeAI):
168
174
  self._model_name = model_name
169
175
  self._uipath_token = token
170
176
  self._uipath_llmgw_url = uipath_url
177
+ self._agenthub_config = agenthub_config
178
+ self._byo_connection_id = byo_connection_id
171
179
 
172
180
  if self.temperature is not None and not 0 <= self.temperature <= 2.0:
173
181
  raise ValueError("temperature must be in the range [0.0, 2.0]")
@@ -182,11 +190,19 @@ class UiPathChatVertex(ChatGoogleGenerativeAI):
182
190
  self.default_metadata = tuple(additional_headers.items())
183
191
 
184
192
  @staticmethod
185
- def _build_headers(token: str) -> dict[str, str]:
193
+ def _build_headers(
194
+ token: str,
195
+ agenthub_config: Optional[str] = None,
196
+ byo_connection_id: Optional[str] = None,
197
+ ) -> dict[str, str]:
186
198
  """Build HTTP headers for UiPath Gateway requests."""
187
199
  headers = {
188
200
  "Authorization": f"Bearer {token}",
189
201
  }
202
+ if agenthub_config:
203
+ headers["X-UiPath-AgentHub-Config"] = agenthub_config
204
+ if byo_connection_id:
205
+ headers["X-UiPath-LlmGateway-ByoIsConnectionId"] = byo_connection_id
190
206
  if job_key := os.getenv("UIPATH_JOB_KEY"):
191
207
  headers["X-UiPath-JobKey"] = job_key
192
208
  if process_key := os.getenv("UIPATH_PROCESS_KEY"):
@@ -4,6 +4,7 @@ from typing import Any
4
4
  import httpx
5
5
  from langchain_openai.embeddings import AzureOpenAIEmbeddings, OpenAIEmbeddings
6
6
  from pydantic import Field
7
+ from uipath._utils._ssl_context import get_httpx_client_kwargs
7
8
  from uipath.utils import EndpointManager
8
9
 
9
10
  from uipath_langchain._utils._request_mixin import UiPathRequestMixin
@@ -26,19 +27,24 @@ class UiPathAzureOpenAIEmbeddings(UiPathRequestMixin, AzureOpenAIEmbeddings):
26
27
  )
27
28
 
28
29
  def __init__(self, **kwargs):
30
+ default_client_kwargs = get_httpx_client_kwargs()
31
+ client_kwargs = {
32
+ **default_client_kwargs,
33
+ "event_hooks": {
34
+ "request": [self._log_request_duration],
35
+ "response": [self._log_response_duration],
36
+ },
37
+ }
38
+ aclient_kwargs = {
39
+ **default_client_kwargs,
40
+ "event_hooks": {
41
+ "request": [self._alog_request_duration],
42
+ "response": [self._alog_response_duration],
43
+ },
44
+ }
29
45
  super().__init__(
30
- http_client=httpx.Client(
31
- event_hooks={
32
- "request": [self._log_request_duration],
33
- "response": [self._log_response_duration],
34
- }
35
- ),
36
- http_async_client=httpx.AsyncClient(
37
- event_hooks={
38
- "request": [self._alog_request_duration],
39
- "response": [self._alog_response_duration],
40
- }
41
- ),
46
+ http_client=httpx.Client(**client_kwargs),
47
+ http_async_client=httpx.AsyncClient(**aclient_kwargs),
42
48
  **kwargs,
43
49
  )
44
50
  # Monkey-patch the OpenAI client to use your custom methods
@@ -1,3 +1,4 @@
1
+ from collections.abc import Iterable
1
2
  from dataclasses import dataclass
2
3
  from typing import Any, Callable, TypeVar
3
4
 
@@ -31,28 +32,83 @@ class SchemaDetails:
31
32
 
32
33
 
33
34
  def _unwrap_runnable_callable(
34
- runnable: Runnable[Any, Any], target_type: type[T]
35
+ runnable: Runnable[Any, Any],
36
+ target_type: type[T],
37
+ _seen: set[int] | None = None,
35
38
  ) -> T | None:
36
- """Unwrap a RunnableCallable to find an instance of the target type.
37
-
38
- Args:
39
- runnable: The runnable to unwrap
40
- target_type: The type to search for (e.g., BaseChatModel)
41
-
42
- Returns:
43
- Instance of target_type if found in the closure, None otherwise
39
+ """Try to find an instance of target_type (e.g., BaseChatModel)
40
+ inside a Runnable.
41
+
42
+ Handles:
43
+ - Direct model runnables
44
+ - LangGraph RunnableCallable
45
+ - LangChain function runnables (RunnableLambda, etc.)
46
+ - RunnableBinding / RunnableSequence with nested steps
44
47
  """
45
48
  if isinstance(runnable, target_type):
46
49
  return runnable
47
50
 
51
+ if _seen is None:
52
+ _seen = set()
53
+ obj_id = id(runnable)
54
+ if obj_id in _seen:
55
+ return None
56
+ _seen.add(obj_id)
57
+
58
+ func: Callable[..., Any] | None = None
59
+
60
+ # 1) LangGraph internal RunnableCallable
48
61
  if RunnableCallable is not None and isinstance(runnable, RunnableCallable):
49
- func: Callable[..., Any] | None = getattr(runnable, "func", None)
50
- if func is not None and hasattr(func, "__closure__") and func.__closure__:
51
- for cell in func.__closure__:
52
- if hasattr(cell, "cell_contents"):
53
- content = cell.cell_contents
54
- if isinstance(content, target_type):
55
- return content
62
+ func = getattr(runnable, "func", None)
63
+
64
+ # 2) Generic LangChain function-wrapping runnables
65
+ if func is None:
66
+ for attr_name in ("func", "_func", "afunc", "_afunc"):
67
+ maybe = getattr(runnable, attr_name, None)
68
+ if callable(maybe):
69
+ func = maybe
70
+ break
71
+
72
+ # 3) Look into the function closure for a model
73
+ if func is not None:
74
+ closure = getattr(func, "__closure__", None) or ()
75
+ for cell in closure:
76
+ content = getattr(cell, "cell_contents", None)
77
+ if isinstance(content, target_type):
78
+ return content
79
+ if isinstance(content, Runnable):
80
+ found = _unwrap_runnable_callable(content, target_type, _seen)
81
+ if found is not None:
82
+ return found
83
+
84
+ # 4) Deep-scan attributes, including nested runnables / containers
85
+ def _scan_value(value: Any) -> T | None:
86
+ if isinstance(value, target_type):
87
+ return value
88
+ if isinstance(value, Runnable):
89
+ return _unwrap_runnable_callable(value, target_type, _seen)
90
+ if isinstance(value, dict):
91
+ for v in value.values():
92
+ found = _scan_value(v)
93
+ if found is not None:
94
+ return found
95
+ # Handle lists, tuples, sets, etc. but avoid strings/bytes
96
+ if isinstance(value, Iterable) and not isinstance(value, (str, bytes)):
97
+ for item in value:
98
+ found = _scan_value(item)
99
+ if found is not None:
100
+ return found
101
+ return None
102
+
103
+ try:
104
+ attrs = vars(runnable)
105
+ except TypeError:
106
+ attrs = {}
107
+
108
+ for value in attrs.values():
109
+ found = _scan_value(value)
110
+ if found is not None:
111
+ return found
56
112
 
57
113
  return None
58
114
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath-langchain
3
- Version: 0.1.28
3
+ Version: 0.1.34
4
4
  Summary: Python SDK that enables developers to build and deploy LangGraph agents to the UiPath Cloud Platform
5
5
  Project-URL: Homepage, https://uipath.com
6
6
  Project-URL: Repository, https://github.com/UiPath/uipath-langchain-python
@@ -18,14 +18,16 @@ Requires-Dist: httpx>=0.27.0
18
18
  Requires-Dist: jsonpath-ng>=1.7.0
19
19
  Requires-Dist: jsonschema-pydantic-converter>=0.1.5
20
20
  Requires-Dist: langchain-core<2.0.0,>=1.0.0
21
+ Requires-Dist: langchain-mcp-adapters==0.2.1
21
22
  Requires-Dist: langchain-openai<2.0.0,>=1.0.0
22
23
  Requires-Dist: langchain<2.0.0,>=1.0.0
23
24
  Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.0.0
24
25
  Requires-Dist: langgraph<2.0.0,>=1.0.0
26
+ Requires-Dist: mcp==1.24.0
25
27
  Requires-Dist: openinference-instrumentation-langchain>=0.1.56
26
28
  Requires-Dist: pydantic-settings>=2.6.0
27
29
  Requires-Dist: python-dotenv>=1.0.1
28
- Requires-Dist: uipath<2.3.0,>=2.2.30
30
+ Requires-Dist: uipath<2.3.0,>=2.2.35
29
31
  Provides-Extra: bedrock
30
32
  Requires-Dist: boto3-stubs>=1.41.4; extra == 'bedrock'
31
33
  Requires-Dist: langchain-aws>=0.2.35; extra == 'bedrock'
@@ -11,51 +11,54 @@ uipath_langchain/_resources/REQUIRED_STRUCTURE.md,sha256=BRmWWFtM0qNXj5uumALVxq9
11
11
  uipath_langchain/_tracing/__init__.py,sha256=C2dRvQ2ynxCmyICgE-rJHimWKEcFRME_o9gfX84Mb3Y,123
12
12
  uipath_langchain/_tracing/_instrument_traceable.py,sha256=cIxtDvlrPxVSZLOvpl571HxFO3wg7pNem4rLUuMI2Vg,4276
13
13
  uipath_langchain/_utils/__init__.py,sha256=-w-4TD9ZnJDCpj4VIPXhJciukrmDJJbmnOFnhAkAaEU,81
14
- uipath_langchain/_utils/_request_mixin.py,sha256=GvZruUGqL-8ykj9FK2XB5GFpkiV23nhfPKY1ozbguLA,30924
15
- uipath_langchain/_utils/_settings.py,sha256=RMVVOdskShghz6mNLmXhHMmdwOiceAYDe8C_qPKedSk,3071
14
+ uipath_langchain/_utils/_request_mixin.py,sha256=VjOyH9fS8WhKEXufoAoSRhfaY1jumLacRwBsbaRsiy8,31307
15
+ uipath_langchain/_utils/_settings.py,sha256=6E4yGzrEj3P3DcqCx_Y_lHQREQRfBm0yH1mSitiSJIU,3188
16
16
  uipath_langchain/_utils/_sleep_policy.py,sha256=e9pHdjmcCj4CVoFM1jMyZFelH11YatsgWfpyrfXzKBQ,1251
17
17
  uipath_langchain/agent/exceptions/__init__.py,sha256=GFh8mtsoKYghTHe93rRbIycWOW8dPt0okQjZuc2N-Hc,158
18
18
  uipath_langchain/agent/exceptions/exceptions.py,sha256=G7LdeQ9uMljLGTlixWBHvNJ1ULtUIDIkzApjfbsF6_0,216
19
- uipath_langchain/agent/guardrails/__init__.py,sha256=gWxPFhbxqiBM6phdYeuR2EMVb-qwB71Ny16SzNAQ5kw,610
20
- uipath_langchain/agent/guardrails/guardrail_nodes.py,sha256=qXOnOfXsMY8hHoHzejjQfppuLTk8OsC1vyL98uNodJw,5467
21
- uipath_langchain/agent/guardrails/guardrails_factory.py,sha256=gkOkNO5uyhNBt1y7j4V3Ao-u1fh1gpTji3-N2bRS_l4,2248
22
- uipath_langchain/agent/guardrails/guardrails_subgraph.py,sha256=o38vdDS15LJmXY6FZ0wVHFBHQPm-zFRViG40Xoq9H70,9817
23
- uipath_langchain/agent/guardrails/types.py,sha256=Z5TS6EHnaanie3s1yfGhE4JXoFKuu01ESsbeFbbPie4,561
24
- uipath_langchain/agent/guardrails/actions/__init__.py,sha256=PiE5Eb39JYWrQG481aREV2I0tNMPEi7VtChBy7ZJqcc,253
19
+ uipath_langchain/agent/guardrails/__init__.py,sha256=2lM-DFLp8oHR6qpkZy8_E93RL_tXKhtzbbsL00_m6TA,114
20
+ uipath_langchain/agent/guardrails/guardrail_nodes.py,sha256=GNfgz45RY2Ic_xchB7KvP3asURxAK9ZBbs8Z7VE_Pac,9491
21
+ uipath_langchain/agent/guardrails/guardrails_factory.py,sha256=4_YvYi13CdVr5qxpwkDpnXjlGe6L4XNmnbMeu9_BVUM,8998
22
+ uipath_langchain/agent/guardrails/types.py,sha256=guVi19x7x5atcaXTUWK_c9O3bP6HfmnX_1Er1ErsnSE,169
23
+ uipath_langchain/agent/guardrails/utils.py,sha256=dmlfDG_tBzbGhfOJrfhysaCAuVHL0GEEzkXqFQDen1M,4652
24
+ uipath_langchain/agent/guardrails/actions/__init__.py,sha256=o_xoSaqcaOM33CRldvmnmux66BIK9fbcv994lB0m1-U,313
25
25
  uipath_langchain/agent/guardrails/actions/base_action.py,sha256=89POG1KQ0x1KPXKP8jT42M04SYoizp5E_co2-Ykq8gc,710
26
- uipath_langchain/agent/guardrails/actions/block_action.py,sha256=RZPF6xxFqs4G2OByBrE7V5nBdPIsb3AyMl-r-lf95yE,1367
27
- uipath_langchain/agent/guardrails/actions/escalate_action.py,sha256=BM04L7b0pVG5UOVi9ZA6U2TOMBf_UtpKl278i4TAMHk,18569
28
- uipath_langchain/agent/guardrails/actions/log_action.py,sha256=mA9qIMErZ7tnkDwGKGY9Q7gh55qiL5C6kn1-ljOGGtU,1961
26
+ uipath_langchain/agent/guardrails/actions/block_action.py,sha256=AMgpeHG41XbRV6bdFX78OLLJ-CTJ1lez6ai6s60zG4M,1374
27
+ uipath_langchain/agent/guardrails/actions/escalate_action.py,sha256=JAGIBLB9FHMa104pTa9ddKi6wW6Ll22qjSZBMzqsYvk,18050
28
+ uipath_langchain/agent/guardrails/actions/filter_action.py,sha256=PbHzz8_vZZ4X-kbHs9-ab3RFBXESlS5GOBEs8vSB-Sg,2185
29
+ uipath_langchain/agent/guardrails/actions/log_action.py,sha256=1nknvqYFBmBFACWLhtreU9Uun40_H2ETsg9c6-IacGM,1968
29
30
  uipath_langchain/agent/react/__init__.py,sha256=BhRWUMZ9yLtBr7SyRwS-XMKG9o84DROyedCMpE6j1RU,362
30
- uipath_langchain/agent/react/agent.py,sha256=w--Mu9ZD9P-f4yXeZHTtAwtcDDgRhxCI28pbs215aDw,4002
31
- uipath_langchain/agent/react/constants.py,sha256=B2yqryh242DETslaRYacUPbVdpjvvApjsBira_qhQwk,61
31
+ uipath_langchain/agent/react/agent.py,sha256=Foz9HagXh3lA-QDZSx6a302JAJnudL7YQ1njLShWSGA,4552
32
+ uipath_langchain/agent/react/constants.py,sha256=yRi3sRxl2CSlshcn_ooWRN3TCcKdRMxJIwmiUQpAtFE,38
32
33
  uipath_langchain/agent/react/init_node.py,sha256=plhyTecBOBsm-YHfi73ZN3pJhe24tpCMr53IfRzN6SA,566
33
- uipath_langchain/agent/react/llm_node.py,sha256=4q8JcAwzELyyBaYTaFtx5HP9neq_5UolfFsuqsh4pso,1468
34
- uipath_langchain/agent/react/router.py,sha256=yEKTa8tAeZnDxh_7AsJRBmg7Ygb7mSk0b0g0gPrvTI8,3616
34
+ uipath_langchain/agent/react/llm_node.py,sha256=Qy9A_s7L5IKfHXbhT8PChyUWYB-RRUjkW49C958wCRs,2484
35
+ uipath_langchain/agent/react/router.py,sha256=-I3Ym0-FLQfg1J0v9Wibb0Xq7rTN73_FLsjVxa31aTQ,4080
35
36
  uipath_langchain/agent/react/terminate_node.py,sha256=G2k2xMgocfNC13RjF9A2Kea6KiPINmdnxiZHQCS_fAY,2734
36
- uipath_langchain/agent/react/types.py,sha256=Mr1LYP6pUwDdxZYdtwtmcic4w8RcMGkXSqm6BJon7QQ,909
37
- uipath_langchain/agent/react/utils.py,sha256=HVaTdEdARIbGhQ2hA1kWdacmtOERYipKiqaLmu06usA,1278
37
+ uipath_langchain/agent/react/types.py,sha256=oZtWQiOwmghWUftrC0BzP5emNFq9uvWB2jUYFcWILPs,1417
38
+ uipath_langchain/agent/react/utils.py,sha256=EhrbvnkrftR79LTKHBVBv9e7oBzs0xgGXhtk_bLF_fQ,1285
39
+ uipath_langchain/agent/react/guardrails/guardrails_subgraph.py,sha256=NDtdngT6Z5amQzZMscX3rW2vupPSrY7hMlACukqQovk,11134
38
40
  uipath_langchain/agent/react/tools/__init__.py,sha256=LGfG8Dc32ffKdXQyMI2oYzhNnTs1wbzsddXz6eU-0MY,102
39
41
  uipath_langchain/agent/react/tools/tools.py,sha256=vFBGnFrGocX__sotKisMJr2lxRRVqA0-uThzzhPADIw,1443
40
- uipath_langchain/agent/tools/__init__.py,sha256=4QVwzP8gFM8pPJwRsJIIVElPOrQLeGzhue-zv4aVCtM,464
42
+ uipath_langchain/agent/tools/__init__.py,sha256=0ptYdkW3zIjdQljY7fsVKZKI-83lyprhCBoMJFlhgtg,527
41
43
  uipath_langchain/agent/tools/context_tool.py,sha256=oPvMVNxeb5q6xVlSScvMGcpT1wOUlFGOwsnFoP_dbuE,1772
42
44
  uipath_langchain/agent/tools/escalation_tool.py,sha256=VYNUEjfNMw3k2ESWMtn3RZ66WYRJcBvXpQaGzMXWCSw,3819
43
45
  uipath_langchain/agent/tools/integration_tool.py,sha256=EcCJ2g6NyyJj6sQeVyzLY1JL3sAtTAWu2dwVvWOkHgo,6555
46
+ uipath_langchain/agent/tools/mcp_tool.py,sha256=NjSWoCYXixIheLWqYUCiYdnkI1umHIvTEBXJphg_WTM,3202
44
47
  uipath_langchain/agent/tools/process_tool.py,sha256=3RkqqeXzmm8mSNaesEQKST1SvB8UEl2H69Qyh0lBv1c,1696
45
48
  uipath_langchain/agent/tools/static_args.py,sha256=_bS-ENdVNxSQ74fi6H0bk7FG9QVZTqitM6es3eLsGq4,4521
46
49
  uipath_langchain/agent/tools/structured_tool_with_output_type.py,sha256=9EZB1WlVt7FFBf20jX3Av9vJf9MaDNCnKLUhMBIrtLQ,354
47
50
  uipath_langchain/agent/tools/tool_factory.py,sha256=o0bd_IMIIsVc0d6gODf3Lk-yiG6eXC9o9NYMgumY4GI,1419
48
51
  uipath_langchain/agent/tools/tool_node.py,sha256=TnXsjoShvhsoBuV5RoUVoJCc2zYPKSnJYSC9MGJoeOk,707
49
52
  uipath_langchain/agent/tools/utils.py,sha256=DsFeZ7kDzFaZ0bGHQN6TlGMJ90wYr7P1Vo1rpHPHWws,401
50
- uipath_langchain/chat/__init__.py,sha256=fAoK-hKuShWDV9tbinJU9TSKRBG2wQQwK3UKZTAyMVM,254
51
- uipath_langchain/chat/bedrock.py,sha256=eonXWnGh3m9cmMifP49fnXsjmrRQLd3Wda5fFa11568,5863
53
+ uipath_langchain/chat/__init__.py,sha256=YlbvzwZz2269kQK438YK8PDIpt5EoRukmpedazpSHHY,387
54
+ uipath_langchain/chat/bedrock.py,sha256=-e1Spix8QizWJf7qLPTJ1-Bs6QLmAHF4VvZSb2kn_Uw,6662
52
55
  uipath_langchain/chat/mapper.py,sha256=XsWFbg6U4kW5Yj_ANvYUZ4HICybHcv9qWdfPPU8UTKA,11950
53
56
  uipath_langchain/chat/models.py,sha256=cbIRw-YhEvQcgt0DVTHc84lKIjeDhsQo5oxvBz9luD0,18168
54
- uipath_langchain/chat/openai.py,sha256=iZWRFbFGPJo0rgjIL1uGytGgvlYHzYQvuoIgyltOz98,4689
55
- uipath_langchain/chat/supported_models.py,sha256=KrTO8rex8sjC2NVUnuDoLLvz__ROKtxEtCXSk1xXTOU,1373
56
- uipath_langchain/chat/vertex.py,sha256=y68TrwJwWewkSNdv_smP9JzCQ9hvJw5o6tYVLV-_9wE,9261
57
+ uipath_langchain/chat/openai.py,sha256=laLJbSoviyD1HdHRGL7zmGuDZngFZvQb93yNcSoR3r4,5829
58
+ uipath_langchain/chat/supported_models.py,sha256=KttS2PZZzh_-fPub-bAenq2V0LfqCUPMmBtQnRP0Lik,1561
59
+ uipath_langchain/chat/vertex.py,sha256=KX584HDzW8x1x-BjfTXpYnl9ofAAVNsphto29O7uoD0,10428
57
60
  uipath_langchain/embeddings/__init__.py,sha256=QICtYB58ZyqFfDQrEaO8lTEgAU5NuEKlR7iIrS0OBtc,156
58
- uipath_langchain/embeddings/embeddings.py,sha256=MGUtnT0pkj97IjHKhROSd786g3ONwwkjgfQBSq3ayhc,6888
61
+ uipath_langchain/embeddings/embeddings.py,sha256=EeVWEpG-DhfewiHJAHNrUMtzIS2oF6rLUPNRtfRg0_8,7137
59
62
  uipath_langchain/retrievers/__init__.py,sha256=rOn7PyyHgZ4pMnXWPkGqmuBmx8eGuo-Oyndo7Wm9IUU,108
60
63
  uipath_langchain/retrievers/context_grounding_retriever.py,sha256=eVDt49dcyBVM8wgBn5FmaXK8gfgsOaNBC8tYnebiQeQ,2201
61
64
  uipath_langchain/runtime/__init__.py,sha256=h4pDyPy8kAYWvSohG3qFmx-bTVTIj1spbMqc7kO674E,1017
@@ -65,12 +68,12 @@ uipath_langchain/runtime/errors.py,sha256=iepiILaDtanusvyYBQSRsPDmKB-6GB94OXKATw
65
68
  uipath_langchain/runtime/factory.py,sha256=_fbYViNg6uuApUZiEJjYHQU2noH5dqFBTXWEPy-Oj_k,11043
66
69
  uipath_langchain/runtime/graph.py,sha256=1h_eaXkyN0G43BS0WUMoK_UNDao8jrmcyJqGVgwVEjM,5513
67
70
  uipath_langchain/runtime/runtime.py,sha256=cK7hewu6Mv8rQbUir03JgPUgv-zqVtYQ1YOfoMLB89I,16904
68
- uipath_langchain/runtime/schema.py,sha256=mzMnxKtRvREGEzmLyAYX3sSYLJTz6xIZe63u6Z6dPNs,13392
71
+ uipath_langchain/runtime/schema.py,sha256=BKtWYVVpK2FfdWO75iQEc-md7qh5z8DqsRPsbHJ_WBI,15130
69
72
  uipath_langchain/runtime/storage.py,sha256=Vem6kz0yGIUgIhTByzguvNOkb6N40b_ba8jcbjGo_eY,3954
70
73
  uipath_langchain/vectorstores/__init__.py,sha256=w8qs1P548ud1aIcVA_QhBgf_jZDrRMK5Lono78yA8cs,114
71
74
  uipath_langchain/vectorstores/context_grounding_vectorstore.py,sha256=SfRvIenOzn4r7jng_I9GIyknyeDx2hdW63O1rZY-ZLQ,8407
72
- uipath_langchain-0.1.28.dist-info/METADATA,sha256=rpoHmCK1gULm42RORNwYclg1fapZEA9M6_AbqDhSizo,5818
73
- uipath_langchain-0.1.28.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
74
- uipath_langchain-0.1.28.dist-info/entry_points.txt,sha256=Wptt1FbvhcDzNQxDlu2Lt1ngBOdDIFPlM1p8WzXf6wQ,171
75
- uipath_langchain-0.1.28.dist-info/licenses/LICENSE,sha256=JDpt-uotAkHFmxpwxi6gwx6HQ25e-lG4U_Gzcvgp7JY,1063
76
- uipath_langchain-0.1.28.dist-info/RECORD,,
75
+ uipath_langchain-0.1.34.dist-info/METADATA,sha256=Ntt7gH8D0fLKzbpKGWqW5iIu6O--cXe2J-eal5WPSDk,5890
76
+ uipath_langchain-0.1.34.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
77
+ uipath_langchain-0.1.34.dist-info/entry_points.txt,sha256=Wptt1FbvhcDzNQxDlu2Lt1ngBOdDIFPlM1p8WzXf6wQ,171
78
+ uipath_langchain-0.1.34.dist-info/licenses/LICENSE,sha256=JDpt-uotAkHFmxpwxi6gwx6HQ25e-lG4U_Gzcvgp7JY,1063
79
+ uipath_langchain-0.1.34.dist-info/RECORD,,