uipath-langchain 0.1.24__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.
@@ -0,0 +1,255 @@
1
+ import os
2
+ from typing import Any, Optional
3
+
4
+ import httpx
5
+ from uipath._utils._ssl_context import get_httpx_client_kwargs
6
+ from uipath.utils import EndpointManager
7
+
8
+ from .supported_models import GeminiModels
9
+
10
+
11
+ def _check_genai_dependencies() -> None:
12
+ """Check if required dependencies for UiPathChatVertex are installed."""
13
+ import importlib.util
14
+
15
+ missing_packages = []
16
+
17
+ if importlib.util.find_spec("langchain_google_genai") is None:
18
+ missing_packages.append("langchain-google-genai")
19
+
20
+ if importlib.util.find_spec("google.genai") is None:
21
+ missing_packages.append("google-genai")
22
+
23
+ if missing_packages:
24
+ packages_str = ", ".join(missing_packages)
25
+ raise ImportError(
26
+ f"The following packages are required to use UiPathChatVertex: {packages_str}\n"
27
+ "Please install them using one of the following methods:\n\n"
28
+ " # Using pip:\n"
29
+ f" pip install uipath-langchain[vertex]\n\n"
30
+ " # Using uv:\n"
31
+ f" uv add 'uipath-langchain[vertex]'\n\n"
32
+ )
33
+
34
+
35
+ _check_genai_dependencies()
36
+
37
+ import google.genai
38
+ from google.genai import types as genai_types
39
+ from langchain_google_genai import ChatGoogleGenerativeAI
40
+ from pydantic import PrivateAttr
41
+
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
67
+
68
+
69
+ class _UrlRewriteTransport(httpx.BaseTransport):
70
+ """Transport that rewrites URLs to redirect to UiPath gateway."""
71
+
72
+ def __init__(self, gateway_url: str):
73
+ self.gateway_url = gateway_url
74
+ self._transport = httpx.HTTPTransport()
75
+
76
+ 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()
82
+
83
+
84
+ class _AsyncUrlRewriteTransport(httpx.AsyncBaseTransport):
85
+ """Async transport that rewrites URLs to redirect to UiPath gateway."""
86
+
87
+ def __init__(self, gateway_url: str):
88
+ self.gateway_url = gateway_url
89
+ self._transport = httpx.AsyncHTTPTransport()
90
+
91
+ 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()
97
+
98
+
99
+ class UiPathChatVertex(ChatGoogleGenerativeAI):
100
+ """UiPath Vertex AI Chat model that routes requests through UiPath's LLM Gateway."""
101
+
102
+ _vendor: str = PrivateAttr(default="vertexai")
103
+ _model_name: str = PrivateAttr()
104
+ _uipath_token: str = PrivateAttr()
105
+ _uipath_llmgw_url: Optional[str] = PrivateAttr(default=None)
106
+
107
+ def __init__(
108
+ self,
109
+ org_id: Optional[str] = None,
110
+ tenant_id: Optional[str] = None,
111
+ token: Optional[str] = None,
112
+ model_name: str = GeminiModels.gemini_2_5_flash,
113
+ temperature: Optional[float] = None,
114
+ **kwargs: Any,
115
+ ):
116
+ org_id = org_id or os.getenv("UIPATH_ORGANIZATION_ID")
117
+ tenant_id = tenant_id or os.getenv("UIPATH_TENANT_ID")
118
+ token = token or os.getenv("UIPATH_ACCESS_TOKEN")
119
+
120
+ if not org_id:
121
+ raise ValueError(
122
+ "UIPATH_ORGANIZATION_ID environment variable or org_id parameter is required"
123
+ )
124
+ if not tenant_id:
125
+ raise ValueError(
126
+ "UIPATH_TENANT_ID environment variable or tenant_id parameter is required"
127
+ )
128
+ if not token:
129
+ raise ValueError(
130
+ "UIPATH_ACCESS_TOKEN environment variable or token parameter is required"
131
+ )
132
+
133
+ uipath_url = self._build_base_url(model_name)
134
+ headers = self._build_headers(token)
135
+
136
+ http_options = genai_types.HttpOptions(
137
+ httpx_client=httpx.Client(
138
+ transport=_UrlRewriteTransport(uipath_url),
139
+ headers=headers,
140
+ **get_httpx_client_kwargs(),
141
+ ),
142
+ httpx_async_client=httpx.AsyncClient(
143
+ transport=_AsyncUrlRewriteTransport(uipath_url),
144
+ headers=headers,
145
+ **get_httpx_client_kwargs(),
146
+ ),
147
+ )
148
+
149
+ if temperature is None and (
150
+ "gemini-3" in model_name or "gemini-2" in model_name
151
+ ):
152
+ temperature = 1.0
153
+
154
+ super().__init__(
155
+ model=model_name,
156
+ google_api_key="uipath-gateway",
157
+ temperature=temperature,
158
+ **kwargs,
159
+ )
160
+
161
+ custom_client = google.genai.Client(
162
+ api_key="uipath-gateway",
163
+ http_options=http_options,
164
+ )
165
+
166
+ object.__setattr__(self, "client", custom_client)
167
+
168
+ self._model_name = model_name
169
+ self._uipath_token = token
170
+ self._uipath_llmgw_url = uipath_url
171
+
172
+ if self.temperature is not None and not 0 <= self.temperature <= 2.0:
173
+ raise ValueError("temperature must be in the range [0.0, 2.0]")
174
+
175
+ if self.top_p is not None and not 0 <= self.top_p <= 1:
176
+ raise ValueError("top_p must be in the range [0.0, 1.0]")
177
+
178
+ if self.top_k is not None and self.top_k <= 0:
179
+ raise ValueError("top_k must be positive")
180
+
181
+ additional_headers = self.additional_headers or {}
182
+ self.default_metadata = tuple(additional_headers.items())
183
+
184
+ @staticmethod
185
+ def _build_headers(token: str) -> dict[str, str]:
186
+ """Build HTTP headers for UiPath Gateway requests."""
187
+ headers = {
188
+ "Authorization": f"Bearer {token}",
189
+ }
190
+ if job_key := os.getenv("UIPATH_JOB_KEY"):
191
+ headers["X-UiPath-JobKey"] = job_key
192
+ if process_key := os.getenv("UIPATH_PROCESS_KEY"):
193
+ headers["X-UiPath-ProcessKey"] = process_key
194
+ return headers
195
+
196
+ @staticmethod
197
+ def _build_base_url(model_name: str) -> str:
198
+ """Build the full URL for the UiPath LLM Gateway."""
199
+ env_uipath_url = os.getenv("UIPATH_URL")
200
+
201
+ if not env_uipath_url:
202
+ raise ValueError("UIPATH_URL environment variable is required")
203
+
204
+ vendor_endpoint = EndpointManager.get_vendor_endpoint()
205
+ formatted_endpoint = vendor_endpoint.format(
206
+ vendor="vertexai",
207
+ model=model_name,
208
+ )
209
+ return f"{env_uipath_url.rstrip('/')}/{formatted_endpoint}"
210
+
211
+ def _stream(self, messages, stop=None, run_manager=None, **kwargs):
212
+ """Streaming fallback - calls _generate and yields single response."""
213
+ from langchain_core.messages import AIMessageChunk
214
+ from langchain_core.outputs import ChatGenerationChunk
215
+
216
+ result = self._generate(messages, stop=stop, run_manager=run_manager, **kwargs)
217
+
218
+ if result.generations:
219
+ message = result.generations[0].message
220
+ chunk = AIMessageChunk(
221
+ content=message.content,
222
+ additional_kwargs=message.additional_kwargs,
223
+ response_metadata=getattr(message, "response_metadata", {}),
224
+ id=message.id,
225
+ tool_calls=getattr(message, "tool_calls", []),
226
+ tool_call_chunks=getattr(message, "tool_call_chunks", []),
227
+ )
228
+ if hasattr(message, "usage_metadata") and message.usage_metadata:
229
+ chunk.usage_metadata = message.usage_metadata
230
+
231
+ yield ChatGenerationChunk(message=chunk)
232
+
233
+ async def _astream(self, messages, stop=None, run_manager=None, **kwargs):
234
+ """Async streaming fallback - calls _agenerate and yields single response."""
235
+ from langchain_core.messages import AIMessageChunk
236
+ from langchain_core.outputs import ChatGenerationChunk
237
+
238
+ result = await self._agenerate(
239
+ messages, stop=stop, run_manager=run_manager, **kwargs
240
+ )
241
+
242
+ if result.generations:
243
+ message = result.generations[0].message
244
+ chunk = AIMessageChunk(
245
+ content=message.content,
246
+ additional_kwargs=message.additional_kwargs,
247
+ response_metadata=getattr(message, "response_metadata", {}),
248
+ id=message.id,
249
+ tool_calls=getattr(message, "tool_calls", []),
250
+ tool_call_chunks=getattr(message, "tool_call_chunks", []),
251
+ )
252
+ if hasattr(message, "usage_metadata") and message.usage_metadata:
253
+ chunk.usage_metadata = message.usage_metadata
254
+
255
+ yield ChatGenerationChunk(message=chunk)
@@ -7,6 +7,8 @@ from langchain_core.runnables.base import Runnable
7
7
  from langchain_core.runnables.graph import Graph, Node
8
8
  from langgraph.graph.state import CompiledStateGraph
9
9
  from langgraph.prebuilt import ToolNode
10
+ from langgraph.pregel._read import PregelNode
11
+ from langgraph.pregel._write import ChannelWrite, ChannelWriteEntry
10
12
  from uipath.runtime.schema import (
11
13
  UiPathRuntimeEdge,
12
14
  UiPathRuntimeGraph,
@@ -193,7 +195,6 @@ def get_graph_schema(
193
195
  nodes: list[UiPathRuntimeNode] = []
194
196
  for node_id, node in graph.nodes.items():
195
197
  subgraph: UiPathRuntimeGraph | None = subgraphs_dict.get(node_id)
196
-
197
198
  nodes.append(
198
199
  UiPathRuntimeNode(
199
200
  id=node.id,
@@ -204,15 +205,51 @@ def get_graph_schema(
204
205
  )
205
206
  )
206
207
 
208
+ # Use a set to track unique edges (source, target)
209
+ seen_edges: set[tuple[str, str]] = set()
207
210
  edges: list[UiPathRuntimeEdge] = []
211
+
212
+ # First, add edges from graph.edges (static edges)
208
213
  for edge in graph.edges:
209
- edges.append(
210
- UiPathRuntimeEdge(
211
- source=edge.source,
212
- target=edge.target,
213
- label=getattr(edge, "data", None) or getattr(edge, "label", None),
214
+ edge_tuple = (edge.source, edge.target)
215
+ if edge_tuple not in seen_edges:
216
+ seen_edges.add(edge_tuple)
217
+ edges.append(
218
+ UiPathRuntimeEdge(
219
+ source=edge.source,
220
+ target=edge.target,
221
+ label=getattr(edge, "data", None) or getattr(edge, "label", None),
222
+ )
214
223
  )
215
- )
224
+
225
+ # Build a map of channel -> target node
226
+ channel_to_target: dict[str, str] = {}
227
+ node_spec: PregelNode
228
+ for node_name, node_spec in compiled_graph.nodes.items():
229
+ for trigger in node_spec.triggers:
230
+ if isinstance(trigger, str) and trigger.startswith("branch:to:"):
231
+ channel_to_target[trigger] = node_name
232
+
233
+ # Extract edges by looking at what each node writes to (dynamic edges from Command)
234
+ for source_name, node_spec in compiled_graph.nodes.items():
235
+ writer: Runnable[Any, Any]
236
+ for writer in node_spec.writers:
237
+ if isinstance(writer, ChannelWrite):
238
+ write_entry: Any
239
+ for write_entry in writer.writes:
240
+ if isinstance(write_entry, ChannelWriteEntry) and isinstance(
241
+ write_entry.channel, str
242
+ ):
243
+ target = channel_to_target.get(write_entry.channel)
244
+ if target:
245
+ edge_tuple = (source_name, target)
246
+ if edge_tuple not in seen_edges:
247
+ seen_edges.add(edge_tuple)
248
+ edges.append(
249
+ UiPathRuntimeEdge(
250
+ source=source_name, target=target, label=None
251
+ )
252
+ )
216
253
 
217
254
  return UiPathRuntimeGraph(nodes=nodes, edges=edges)
218
255
 
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath-langchain
3
- Version: 0.1.24
4
- Summary: UiPath Langchain
3
+ Version: 0.1.28
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
7
7
  Project-URL: Documentation, https://uipath.github.io/uipath-python/
@@ -13,6 +13,7 @@ Classifier: Programming Language :: Python :: 3.12
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Classifier: Topic :: Software Development :: Build Tools
15
15
  Requires-Python: >=3.11
16
+ Requires-Dist: aiosqlite==0.21.0
16
17
  Requires-Dist: httpx>=0.27.0
17
18
  Requires-Dist: jsonpath-ng>=1.7.0
18
19
  Requires-Dist: jsonschema-pydantic-converter>=0.1.5
@@ -24,18 +25,18 @@ Requires-Dist: langgraph<2.0.0,>=1.0.0
24
25
  Requires-Dist: openinference-instrumentation-langchain>=0.1.56
25
26
  Requires-Dist: pydantic-settings>=2.6.0
26
27
  Requires-Dist: python-dotenv>=1.0.1
27
- Requires-Dist: uipath<2.3.0,>=2.2.28
28
+ Requires-Dist: uipath<2.3.0,>=2.2.30
28
29
  Provides-Extra: bedrock
29
30
  Requires-Dist: boto3-stubs>=1.41.4; extra == 'bedrock'
30
31
  Requires-Dist: langchain-aws>=0.2.35; extra == 'bedrock'
31
32
  Provides-Extra: vertex
32
- Requires-Dist: langchain-community>=0.4.1; extra == 'vertex'
33
- Requires-Dist: langchain-google-vertexai>=2.1.2; extra == 'vertex'
34
- Requires-Dist: types-protobuf>=6.32.1.20251105; extra == 'vertex'
33
+ Requires-Dist: google-generativeai>=0.8.0; extra == 'vertex'
34
+ Requires-Dist: langchain-google-genai>=2.0.0; extra == 'vertex'
35
35
  Description-Content-Type: text/markdown
36
36
 
37
37
  # UiPath LangChain Python SDK
38
38
 
39
+ [![PyPI - Version](https://img.shields.io/pypi/v/uipath-langchain)](https://pypi.org/project/uipath-langchain/)
39
40
  [![PyPI downloads](https://img.shields.io/pypi/dm/uipath-langchain.svg)](https://pypi.org/project/uipath-langchain/)
40
41
  [![Python versions](https://img.shields.io/pypi/pyversions/uipath-langchain.svg)](https://pypi.org/project/uipath-langchain/)
41
42
 
@@ -17,17 +17,17 @@ uipath_langchain/_utils/_sleep_policy.py,sha256=e9pHdjmcCj4CVoFM1jMyZFelH11Yatsg
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
19
  uipath_langchain/agent/guardrails/__init__.py,sha256=gWxPFhbxqiBM6phdYeuR2EMVb-qwB71Ny16SzNAQ5kw,610
20
- uipath_langchain/agent/guardrails/guardrail_nodes.py,sha256=Wkxb1hnxunjQHalPRQHOkGWIh4HPjFHPzYCByQyNUgE,3772
20
+ uipath_langchain/agent/guardrails/guardrail_nodes.py,sha256=qXOnOfXsMY8hHoHzejjQfppuLTk8OsC1vyL98uNodJw,5467
21
21
  uipath_langchain/agent/guardrails/guardrails_factory.py,sha256=gkOkNO5uyhNBt1y7j4V3Ao-u1fh1gpTji3-N2bRS_l4,2248
22
- uipath_langchain/agent/guardrails/guardrails_subgraph.py,sha256=nBOm2U07zPxoE699Iqe4YZECo43C3BQ4uXbj55oUUCE,8739
22
+ uipath_langchain/agent/guardrails/guardrails_subgraph.py,sha256=o38vdDS15LJmXY6FZ0wVHFBHQPm-zFRViG40Xoq9H70,9817
23
23
  uipath_langchain/agent/guardrails/types.py,sha256=Z5TS6EHnaanie3s1yfGhE4JXoFKuu01ESsbeFbbPie4,561
24
24
  uipath_langchain/agent/guardrails/actions/__init__.py,sha256=PiE5Eb39JYWrQG481aREV2I0tNMPEi7VtChBy7ZJqcc,253
25
- uipath_langchain/agent/guardrails/actions/base_action.py,sha256=7Q8ArFLYkbTVsKinCDoU1TAI-ki0JLwTc3XknE8dxgA,673
26
- uipath_langchain/agent/guardrails/actions/block_action.py,sha256=5qBlwqxJdIsTvJ2h5m0N2_p9cIAcWeWas30GsxiBte4,1330
27
- uipath_langchain/agent/guardrails/actions/escalate_action.py,sha256=O2IY0FiVBQyfiNszzR2JgP1dRJC7hb03eSUIqpW9BFo,9491
28
- uipath_langchain/agent/guardrails/actions/log_action.py,sha256=ADvP0Sbx3oRbgI5KQfXyZTBUB0CT40QAqY4q8KzswVw,1924
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
29
29
  uipath_langchain/agent/react/__init__.py,sha256=BhRWUMZ9yLtBr7SyRwS-XMKG9o84DROyedCMpE6j1RU,362
30
- uipath_langchain/agent/react/agent.py,sha256=A5edIf7C43wCZZzx3FSQoAFION7RBHaz5c4KE9iadSU,3788
30
+ uipath_langchain/agent/react/agent.py,sha256=w--Mu9ZD9P-f4yXeZHTtAwtcDDgRhxCI28pbs215aDw,4002
31
31
  uipath_langchain/agent/react/constants.py,sha256=B2yqryh242DETslaRYacUPbVdpjvvApjsBira_qhQwk,61
32
32
  uipath_langchain/agent/react/init_node.py,sha256=plhyTecBOBsm-YHfi73ZN3pJhe24tpCMr53IfRzN6SA,566
33
33
  uipath_langchain/agent/react/llm_node.py,sha256=4q8JcAwzELyyBaYTaFtx5HP9neq_5UolfFsuqsh4pso,1468
@@ -49,11 +49,11 @@ uipath_langchain/agent/tools/tool_node.py,sha256=TnXsjoShvhsoBuV5RoUVoJCc2zYPKSn
49
49
  uipath_langchain/agent/tools/utils.py,sha256=DsFeZ7kDzFaZ0bGHQN6TlGMJ90wYr7P1Vo1rpHPHWws,401
50
50
  uipath_langchain/chat/__init__.py,sha256=fAoK-hKuShWDV9tbinJU9TSKRBG2wQQwK3UKZTAyMVM,254
51
51
  uipath_langchain/chat/bedrock.py,sha256=eonXWnGh3m9cmMifP49fnXsjmrRQLd3Wda5fFa11568,5863
52
- uipath_langchain/chat/gemini.py,sha256=Zlz5KVoHdzlemzFTmFVjKCloaFo2lMiBbBq9MCJ9Lds,11903
53
52
  uipath_langchain/chat/mapper.py,sha256=XsWFbg6U4kW5Yj_ANvYUZ4HICybHcv9qWdfPPU8UTKA,11950
54
53
  uipath_langchain/chat/models.py,sha256=cbIRw-YhEvQcgt0DVTHc84lKIjeDhsQo5oxvBz9luD0,18168
55
- uipath_langchain/chat/openai.py,sha256=M36pSDeWwnfO5EXcCsYnjfZ5C5jfko6ng_87qS-Z5tA,4594
54
+ uipath_langchain/chat/openai.py,sha256=iZWRFbFGPJo0rgjIL1uGytGgvlYHzYQvuoIgyltOz98,4689
56
55
  uipath_langchain/chat/supported_models.py,sha256=KrTO8rex8sjC2NVUnuDoLLvz__ROKtxEtCXSk1xXTOU,1373
56
+ uipath_langchain/chat/vertex.py,sha256=y68TrwJwWewkSNdv_smP9JzCQ9hvJw5o6tYVLV-_9wE,9261
57
57
  uipath_langchain/embeddings/__init__.py,sha256=QICtYB58ZyqFfDQrEaO8lTEgAU5NuEKlR7iIrS0OBtc,156
58
58
  uipath_langchain/embeddings/embeddings.py,sha256=MGUtnT0pkj97IjHKhROSd786g3ONwwkjgfQBSq3ayhc,6888
59
59
  uipath_langchain/retrievers/__init__.py,sha256=rOn7PyyHgZ4pMnXWPkGqmuBmx8eGuo-Oyndo7Wm9IUU,108
@@ -65,12 +65,12 @@ uipath_langchain/runtime/errors.py,sha256=iepiILaDtanusvyYBQSRsPDmKB-6GB94OXKATw
65
65
  uipath_langchain/runtime/factory.py,sha256=_fbYViNg6uuApUZiEJjYHQU2noH5dqFBTXWEPy-Oj_k,11043
66
66
  uipath_langchain/runtime/graph.py,sha256=1h_eaXkyN0G43BS0WUMoK_UNDao8jrmcyJqGVgwVEjM,5513
67
67
  uipath_langchain/runtime/runtime.py,sha256=cK7hewu6Mv8rQbUir03JgPUgv-zqVtYQ1YOfoMLB89I,16904
68
- uipath_langchain/runtime/schema.py,sha256=sbgf4Z_2T_r2sv1e8uYsAExZ1PNeVCODB9Hm4HZ4gQc,11547
68
+ uipath_langchain/runtime/schema.py,sha256=mzMnxKtRvREGEzmLyAYX3sSYLJTz6xIZe63u6Z6dPNs,13392
69
69
  uipath_langchain/runtime/storage.py,sha256=Vem6kz0yGIUgIhTByzguvNOkb6N40b_ba8jcbjGo_eY,3954
70
70
  uipath_langchain/vectorstores/__init__.py,sha256=w8qs1P548ud1aIcVA_QhBgf_jZDrRMK5Lono78yA8cs,114
71
71
  uipath_langchain/vectorstores/context_grounding_vectorstore.py,sha256=SfRvIenOzn4r7jng_I9GIyknyeDx2hdW63O1rZY-ZLQ,8407
72
- uipath_langchain-0.1.24.dist-info/METADATA,sha256=STmAiU3rEotgAApOuXj8bk4p3V6jOJcw3JVo7zEAOrA,5658
73
- uipath_langchain-0.1.24.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
74
- uipath_langchain-0.1.24.dist-info/entry_points.txt,sha256=Wptt1FbvhcDzNQxDlu2Lt1ngBOdDIFPlM1p8WzXf6wQ,171
75
- uipath_langchain-0.1.24.dist-info/licenses/LICENSE,sha256=JDpt-uotAkHFmxpwxi6gwx6HQ25e-lG4U_Gzcvgp7JY,1063
76
- uipath_langchain-0.1.24.dist-info/RECORD,,
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,,