nvidia-nat 1.4.0a20251112__py3-none-any.whl → 1.4.0a20251120__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.
- nat/builder/builder.py +52 -0
- nat/builder/component_utils.py +7 -1
- nat/builder/context.py +17 -0
- nat/builder/framework_enum.py +1 -0
- nat/builder/function.py +74 -3
- nat/builder/workflow.py +4 -2
- nat/builder/workflow_builder.py +129 -0
- nat/cli/register_workflow.py +50 -0
- nat/cli/type_registry.py +68 -0
- nat/data_models/component.py +2 -0
- nat/data_models/component_ref.py +11 -0
- nat/data_models/config.py +16 -0
- nat/data_models/function.py +14 -1
- nat/data_models/middleware.py +35 -0
- nat/data_models/runtime_enum.py +26 -0
- nat/eval/evaluate.py +10 -2
- nat/front_ends/fastapi/fastapi_front_end_config.py +22 -0
- nat/front_ends/fastapi/fastapi_front_end_plugin_worker.py +124 -0
- nat/front_ends/mcp/mcp_front_end_plugin.py +4 -0
- nat/front_ends/mcp/mcp_front_end_plugin_worker.py +26 -0
- nat/middleware/__init__.py +35 -0
- nat/middleware/cache_middleware.py +256 -0
- nat/middleware/function_middleware.py +186 -0
- nat/middleware/middleware.py +184 -0
- nat/middleware/register.py +35 -0
- nat/profiler/decorators/framework_wrapper.py +16 -0
- nat/retriever/milvus/register.py +11 -3
- nat/retriever/milvus/retriever.py +102 -40
- nat/runtime/runner.py +12 -1
- nat/runtime/session.py +10 -3
- nat/tool/code_execution/code_sandbox.py +1 -1
- {nvidia_nat-1.4.0a20251112.dist-info → nvidia_nat-1.4.0a20251120.dist-info}/METADATA +9 -3
- {nvidia_nat-1.4.0a20251112.dist-info → nvidia_nat-1.4.0a20251120.dist-info}/RECORD +38 -31
- {nvidia_nat-1.4.0a20251112.dist-info → nvidia_nat-1.4.0a20251120.dist-info}/entry_points.txt +1 -0
- {nvidia_nat-1.4.0a20251112.dist-info → nvidia_nat-1.4.0a20251120.dist-info}/WHEEL +0 -0
- {nvidia_nat-1.4.0a20251112.dist-info → nvidia_nat-1.4.0a20251120.dist-info}/licenses/LICENSE-3rd-party.txt +0 -0
- {nvidia_nat-1.4.0a20251112.dist-info → nvidia_nat-1.4.0a20251120.dist-info}/licenses/LICENSE.md +0 -0
- {nvidia_nat-1.4.0a20251112.dist-info → nvidia_nat-1.4.0a20251120.dist-info}/top_level.txt +0 -0
nat/retriever/milvus/register.py
CHANGED
|
@@ -48,6 +48,7 @@ class MilvusRetrieverConfig(RetrieverBaseConfig, name="milvus_retriever"):
|
|
|
48
48
|
description: str | None = Field(default=None,
|
|
49
49
|
description="If present it will be used as the tool description",
|
|
50
50
|
alias="collection_description")
|
|
51
|
+
use_async_client: bool = Field(default=False, description="Use AsyncMilvusClient for async I/O operations. ")
|
|
51
52
|
|
|
52
53
|
|
|
53
54
|
@register_retriever_provider(config_type=MilvusRetrieverConfig)
|
|
@@ -58,13 +59,20 @@ async def milvus_retriever(retriever_config: MilvusRetrieverConfig, builder: Bui
|
|
|
58
59
|
|
|
59
60
|
@register_retriever_client(config_type=MilvusRetrieverConfig, wrapper_type=None)
|
|
60
61
|
async def milvus_retriever_client(config: MilvusRetrieverConfig, builder: Builder):
|
|
61
|
-
from pymilvus import MilvusClient
|
|
62
|
-
|
|
63
62
|
from nat.retriever.milvus.retriever import MilvusRetriever
|
|
64
63
|
|
|
65
64
|
embedder = await builder.get_embedder(embedder_name=config.embedding_model, wrapper_type=LLMFrameworkEnum.LANGCHAIN)
|
|
66
65
|
|
|
67
|
-
|
|
66
|
+
# Create Milvus client based on use_async_client flag
|
|
67
|
+
if config.use_async_client:
|
|
68
|
+
from pymilvus import AsyncMilvusClient
|
|
69
|
+
|
|
70
|
+
milvus_client = AsyncMilvusClient(uri=str(config.uri), **config.connection_args)
|
|
71
|
+
else:
|
|
72
|
+
from pymilvus import MilvusClient
|
|
73
|
+
|
|
74
|
+
milvus_client = MilvusClient(uri=str(config.uri), **config.connection_args)
|
|
75
|
+
|
|
68
76
|
retriever = MilvusRetriever(
|
|
69
77
|
client=milvus_client,
|
|
70
78
|
embedder=embedder,
|
|
@@ -13,13 +13,18 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
+
import inspect
|
|
16
17
|
import logging
|
|
17
18
|
from functools import partial
|
|
19
|
+
from typing import TYPE_CHECKING
|
|
18
20
|
|
|
19
21
|
from langchain_core.embeddings import Embeddings
|
|
20
|
-
from pymilvus import MilvusClient
|
|
21
22
|
from pymilvus.client.abstract import Hit
|
|
22
23
|
|
|
24
|
+
if TYPE_CHECKING:
|
|
25
|
+
from pymilvus import AsyncMilvusClient
|
|
26
|
+
from pymilvus import MilvusClient
|
|
27
|
+
|
|
23
28
|
from nat.retriever.interface import Retriever
|
|
24
29
|
from nat.retriever.models import Document
|
|
25
30
|
from nat.retriever.models import RetrieverError
|
|
@@ -39,20 +44,27 @@ class MilvusRetriever(Retriever):
|
|
|
39
44
|
|
|
40
45
|
def __init__(
|
|
41
46
|
self,
|
|
42
|
-
client: MilvusClient,
|
|
47
|
+
client: "MilvusClient | AsyncMilvusClient",
|
|
43
48
|
embedder: Embeddings,
|
|
44
49
|
content_field: str = "text",
|
|
45
50
|
use_iterator: bool = False,
|
|
46
51
|
) -> None:
|
|
47
52
|
"""
|
|
48
|
-
Initialize the Milvus Retriever using a preconfigured MilvusClient
|
|
53
|
+
Initialize the Milvus Retriever using a preconfigured MilvusClient or AsyncMilvusClient
|
|
49
54
|
|
|
50
55
|
Args:
|
|
51
|
-
client (MilvusClient): Preinstantiate pymilvus.MilvusClient object.
|
|
52
56
|
"""
|
|
53
|
-
self._client = client
|
|
57
|
+
self._client: MilvusClient | AsyncMilvusClient = client
|
|
54
58
|
self._embedder = embedder
|
|
55
59
|
|
|
60
|
+
# Detect if client is async by inspecting method capabilities
|
|
61
|
+
search_method = getattr(client, "search", None)
|
|
62
|
+
list_collections_method = getattr(client, "list_collections", None)
|
|
63
|
+
self._is_async = any(
|
|
64
|
+
inspect.iscoroutinefunction(method) for method in (search_method, list_collections_method)
|
|
65
|
+
if method is not None)
|
|
66
|
+
logger.info("Initialized Milvus Retriever with %s client", "async" if self._is_async else "sync")
|
|
67
|
+
|
|
56
68
|
if use_iterator and "search_iterator" not in dir(self._client):
|
|
57
69
|
raise ValueError("This version of the pymilvus.MilvusClient does not support the search iterator.")
|
|
58
70
|
|
|
@@ -60,7 +72,7 @@ class MilvusRetriever(Retriever):
|
|
|
60
72
|
self._default_params = None
|
|
61
73
|
self._bound_params = []
|
|
62
74
|
self.content_field = content_field
|
|
63
|
-
logger.info("
|
|
75
|
+
logger.info("Milvus Retriever using %s for search.", self._search_func.__name__)
|
|
64
76
|
|
|
65
77
|
def bind(self, **kwargs) -> None:
|
|
66
78
|
"""
|
|
@@ -81,8 +93,13 @@ class MilvusRetriever(Retriever):
|
|
|
81
93
|
"""
|
|
82
94
|
return [param for param in ["query", "collection_name", "top_k", "filters"] if param not in self._bound_params]
|
|
83
95
|
|
|
84
|
-
def _validate_collection(self, collection_name: str) -> bool:
|
|
85
|
-
|
|
96
|
+
async def _validate_collection(self, collection_name: str) -> bool:
|
|
97
|
+
"""Validate that a collection exists."""
|
|
98
|
+
if self._is_async:
|
|
99
|
+
collections = await self._client.list_collections()
|
|
100
|
+
else:
|
|
101
|
+
collections = self._client.list_collections()
|
|
102
|
+
return collection_name in collections
|
|
86
103
|
|
|
87
104
|
async def search(self, query: str, **kwargs):
|
|
88
105
|
return await self._search_func(query=query, **kwargs)
|
|
@@ -108,39 +125,64 @@ class MilvusRetriever(Retriever):
|
|
|
108
125
|
collection_name,
|
|
109
126
|
top_k)
|
|
110
127
|
|
|
111
|
-
if not self._validate_collection(collection_name):
|
|
128
|
+
if not await self._validate_collection(collection_name):
|
|
112
129
|
raise CollectionNotFoundError(f"Collection: {collection_name} does not exist")
|
|
113
130
|
|
|
114
131
|
# If no output fields are specified, return all of them
|
|
115
132
|
if not output_fields:
|
|
116
|
-
|
|
133
|
+
if self._is_async:
|
|
134
|
+
collection_schema = await self._client.describe_collection(collection_name)
|
|
135
|
+
else:
|
|
136
|
+
collection_schema = self._client.describe_collection(collection_name)
|
|
117
137
|
output_fields = [
|
|
118
138
|
field["name"] for field in collection_schema.get("fields") if field["name"] != vector_field_name
|
|
119
139
|
]
|
|
120
140
|
|
|
121
|
-
search_vector = self._embedder.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
141
|
+
search_vector = await self._embedder.aembed_query(query)
|
|
142
|
+
|
|
143
|
+
# Create search iterator
|
|
144
|
+
if self._is_async:
|
|
145
|
+
search_iterator = await self._client.search_iterator(
|
|
146
|
+
collection_name=collection_name,
|
|
147
|
+
data=[search_vector],
|
|
148
|
+
batch_size=kwargs.get("batch_size", 1000),
|
|
149
|
+
filter=filters,
|
|
150
|
+
limit=top_k,
|
|
151
|
+
output_fields=output_fields,
|
|
152
|
+
search_params=search_params if search_params else {"metric_type": "L2"},
|
|
153
|
+
timeout=timeout,
|
|
154
|
+
anns_field=vector_field_name,
|
|
155
|
+
round_decimal=kwargs.get("round_decimal", -1),
|
|
156
|
+
partition_names=kwargs.get("partition_names", None),
|
|
157
|
+
)
|
|
158
|
+
else:
|
|
159
|
+
search_iterator = self._client.search_iterator(
|
|
160
|
+
collection_name=collection_name,
|
|
161
|
+
data=[search_vector],
|
|
162
|
+
batch_size=kwargs.get("batch_size", 1000),
|
|
163
|
+
filter=filters,
|
|
164
|
+
limit=top_k,
|
|
165
|
+
output_fields=output_fields,
|
|
166
|
+
search_params=search_params if search_params else {"metric_type": "L2"},
|
|
167
|
+
timeout=timeout,
|
|
168
|
+
anns_field=vector_field_name,
|
|
169
|
+
round_decimal=kwargs.get("round_decimal", -1),
|
|
170
|
+
partition_names=kwargs.get("partition_names", None),
|
|
171
|
+
)
|
|
136
172
|
|
|
137
173
|
results = []
|
|
138
174
|
try:
|
|
139
175
|
while True:
|
|
140
|
-
|
|
176
|
+
if self._is_async:
|
|
177
|
+
_res = await search_iterator.next()
|
|
178
|
+
else:
|
|
179
|
+
_res = search_iterator.next()
|
|
141
180
|
res = _res.get_res()
|
|
142
181
|
if len(_res) == 0:
|
|
143
|
-
|
|
182
|
+
if self._is_async:
|
|
183
|
+
await search_iterator.close()
|
|
184
|
+
else:
|
|
185
|
+
search_iterator.close()
|
|
144
186
|
break
|
|
145
187
|
|
|
146
188
|
if distance_cutoff and res[0][-1].distance > distance_cutoff:
|
|
@@ -176,10 +218,16 @@ class MilvusRetriever(Retriever):
|
|
|
176
218
|
collection_name,
|
|
177
219
|
top_k)
|
|
178
220
|
|
|
179
|
-
if not self._validate_collection(collection_name):
|
|
221
|
+
if not await self._validate_collection(collection_name):
|
|
180
222
|
raise CollectionNotFoundError(f"Collection: {collection_name} does not exist")
|
|
181
223
|
|
|
182
|
-
|
|
224
|
+
# Get collection schema
|
|
225
|
+
if self._is_async:
|
|
226
|
+
collection_schema = await self._client.describe_collection(collection_name)
|
|
227
|
+
else:
|
|
228
|
+
collection_schema = self._client.describe_collection(collection_name)
|
|
229
|
+
|
|
230
|
+
available_fields = [v.get("name") for v in collection_schema.get("fields", [])]
|
|
183
231
|
|
|
184
232
|
if self.content_field not in available_fields:
|
|
185
233
|
raise ValueError(f"The specified content field: {self.content_field} is not part of the schema.")
|
|
@@ -194,17 +242,31 @@ class MilvusRetriever(Retriever):
|
|
|
194
242
|
if self.content_field not in output_fields:
|
|
195
243
|
output_fields.append(self.content_field)
|
|
196
244
|
|
|
197
|
-
search_vector = self._embedder.
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
245
|
+
search_vector = await self._embedder.aembed_query(query)
|
|
246
|
+
|
|
247
|
+
# Perform search
|
|
248
|
+
if self._is_async:
|
|
249
|
+
res = await self._client.search(
|
|
250
|
+
collection_name=collection_name,
|
|
251
|
+
data=[search_vector],
|
|
252
|
+
filter=filters,
|
|
253
|
+
output_fields=output_fields,
|
|
254
|
+
search_params=search_params if search_params else {"metric_type": "L2"},
|
|
255
|
+
timeout=timeout,
|
|
256
|
+
anns_field=vector_field_name,
|
|
257
|
+
limit=top_k,
|
|
258
|
+
)
|
|
259
|
+
else:
|
|
260
|
+
res = self._client.search(
|
|
261
|
+
collection_name=collection_name,
|
|
262
|
+
data=[search_vector],
|
|
263
|
+
filter=filters,
|
|
264
|
+
output_fields=output_fields,
|
|
265
|
+
search_params=search_params if search_params else {"metric_type": "L2"},
|
|
266
|
+
timeout=timeout,
|
|
267
|
+
anns_field=vector_field_name,
|
|
268
|
+
limit=top_k,
|
|
269
|
+
)
|
|
208
270
|
|
|
209
271
|
return _wrap_milvus_results(res[0], content_field=self.content_field)
|
|
210
272
|
|
nat/runtime/runner.py
CHANGED
|
@@ -26,6 +26,7 @@ from nat.data_models.intermediate_step import IntermediateStepType
|
|
|
26
26
|
from nat.data_models.intermediate_step import StreamEventData
|
|
27
27
|
from nat.data_models.intermediate_step import TraceMetadata
|
|
28
28
|
from nat.data_models.invocation_node import InvocationNode
|
|
29
|
+
from nat.data_models.runtime_enum import RuntimeTypeEnum
|
|
29
30
|
from nat.observability.exporter_manager import ExporterManager
|
|
30
31
|
from nat.utils.reactive.subject import Subject
|
|
31
32
|
|
|
@@ -53,7 +54,8 @@ class Runner:
|
|
|
53
54
|
input_message: typing.Any,
|
|
54
55
|
entry_fn: Function,
|
|
55
56
|
context_state: ContextState,
|
|
56
|
-
exporter_manager: ExporterManager
|
|
57
|
+
exporter_manager: ExporterManager,
|
|
58
|
+
runtime_type: RuntimeTypeEnum = RuntimeTypeEnum.RUN_OR_SERVE):
|
|
57
59
|
"""
|
|
58
60
|
The Runner class is used to run a workflow. It handles converting input and output data types and running the
|
|
59
61
|
workflow with the specified concurrency.
|
|
@@ -68,6 +70,8 @@ class Runner:
|
|
|
68
70
|
The context state to use
|
|
69
71
|
exporter_manager : ExporterManager
|
|
70
72
|
The exporter manager to use
|
|
73
|
+
runtime_type : RuntimeTypeEnum
|
|
74
|
+
The runtime type (RUN_OR_SERVE, EVALUATE, OTHER)
|
|
71
75
|
"""
|
|
72
76
|
|
|
73
77
|
if (entry_fn is None):
|
|
@@ -86,6 +90,9 @@ class Runner:
|
|
|
86
90
|
|
|
87
91
|
self._exporter_manager = exporter_manager
|
|
88
92
|
|
|
93
|
+
self._runtime_type = runtime_type
|
|
94
|
+
self._runtime_type_token = None
|
|
95
|
+
|
|
89
96
|
@property
|
|
90
97
|
def context(self) -> Context:
|
|
91
98
|
return self._context
|
|
@@ -105,6 +112,8 @@ class Runner:
|
|
|
105
112
|
function_id="root",
|
|
106
113
|
))
|
|
107
114
|
|
|
115
|
+
self._runtime_type_token = self._context_state.runtime_type.set(self._runtime_type)
|
|
116
|
+
|
|
108
117
|
if (self._state == RunnerState.UNINITIALIZED):
|
|
109
118
|
self._state = RunnerState.INITIALIZED
|
|
110
119
|
else:
|
|
@@ -119,6 +128,8 @@ class Runner:
|
|
|
119
128
|
|
|
120
129
|
self._context_state.input_message.reset(self._input_message_token)
|
|
121
130
|
|
|
131
|
+
self._context_state.runtime_type.reset(self._runtime_type_token)
|
|
132
|
+
|
|
122
133
|
if (self._state not in (RunnerState.COMPLETED, RunnerState.FAILED)):
|
|
123
134
|
raise ValueError("Cannot exit the context without completing the workflow")
|
|
124
135
|
|
nat/runtime/session.py
CHANGED
|
@@ -35,6 +35,7 @@ from nat.data_models.authentication import AuthProviderBaseConfig
|
|
|
35
35
|
from nat.data_models.config import Config
|
|
36
36
|
from nat.data_models.interactive import HumanResponse
|
|
37
37
|
from nat.data_models.interactive import InteractionPrompt
|
|
38
|
+
from nat.data_models.runtime_enum import RuntimeTypeEnum
|
|
38
39
|
|
|
39
40
|
_T = typing.TypeVar("_T")
|
|
40
41
|
|
|
@@ -45,7 +46,10 @@ class UserManagerBase:
|
|
|
45
46
|
|
|
46
47
|
class SessionManager:
|
|
47
48
|
|
|
48
|
-
def __init__(self,
|
|
49
|
+
def __init__(self,
|
|
50
|
+
workflow: Workflow,
|
|
51
|
+
max_concurrency: int = 8,
|
|
52
|
+
runtime_type: RuntimeTypeEnum = RuntimeTypeEnum.RUN_OR_SERVE):
|
|
49
53
|
"""
|
|
50
54
|
The SessionManager class is used to run and manage a user workflow session. It runs and manages the context,
|
|
51
55
|
and configuration of a workflow with the specified concurrency.
|
|
@@ -56,6 +60,8 @@ class SessionManager:
|
|
|
56
60
|
The workflow to run
|
|
57
61
|
max_concurrency : int, optional
|
|
58
62
|
The maximum number of simultaneous workflow invocations, by default 8
|
|
63
|
+
runtime_type : RuntimeTypeEnum, optional
|
|
64
|
+
The type of runtime the session manager is operating in, by default RuntimeTypeEnum.RUN_OR_SERVE
|
|
59
65
|
"""
|
|
60
66
|
|
|
61
67
|
if (workflow is None):
|
|
@@ -66,6 +72,7 @@ class SessionManager:
|
|
|
66
72
|
self._max_concurrency = max_concurrency
|
|
67
73
|
self._context_state = ContextState.get()
|
|
68
74
|
self._context = Context(self._context_state)
|
|
75
|
+
self._runtime_type = runtime_type
|
|
69
76
|
|
|
70
77
|
# We save the context because Uvicorn spawns a new process
|
|
71
78
|
# for each request, and we need to restore the context vars
|
|
@@ -128,7 +135,7 @@ class SessionManager:
|
|
|
128
135
|
self._context_state.user_auth_callback.reset(token_user_authentication)
|
|
129
136
|
|
|
130
137
|
@asynccontextmanager
|
|
131
|
-
async def run(self, message):
|
|
138
|
+
async def run(self, message, runtime_type: RuntimeTypeEnum = RuntimeTypeEnum.RUN_OR_SERVE):
|
|
132
139
|
"""
|
|
133
140
|
Start a workflow run
|
|
134
141
|
"""
|
|
@@ -137,7 +144,7 @@ class SessionManager:
|
|
|
137
144
|
for k, v in self._saved_context.items():
|
|
138
145
|
k.set(v)
|
|
139
146
|
|
|
140
|
-
async with self._workflow.run(message) as runner:
|
|
147
|
+
async with self._workflow.run(message, runtime_type=runtime_type) as runner:
|
|
141
148
|
yield runner
|
|
142
149
|
|
|
143
150
|
def set_metadata_from_http_request(self, request: Request) -> None:
|
|
@@ -152,7 +152,7 @@ class LocalSandbox(Sandbox):
|
|
|
152
152
|
output_json = output.json()
|
|
153
153
|
assert isinstance(output_json, dict)
|
|
154
154
|
return output_json
|
|
155
|
-
except
|
|
155
|
+
except (requests.exceptions.JSONDecodeError, AssertionError) as e:
|
|
156
156
|
logger.exception("Error parsing output: %s. %s", output.text, e)
|
|
157
157
|
return {'process_status': 'error', 'stdout': '', 'stderr': f'Unknown error: {e} \"{output.text}\"'}
|
|
158
158
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nvidia-nat
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.0a20251120
|
|
4
4
|
Summary: NVIDIA NeMo Agent toolkit
|
|
5
5
|
Author: NVIDIA Corporation
|
|
6
6
|
Maintainer: NVIDIA Corporation
|
|
@@ -39,11 +39,11 @@ Requires-Dist: pkce==1.0.3
|
|
|
39
39
|
Requires-Dist: pkginfo~=1.12
|
|
40
40
|
Requires-Dist: platformdirs~=4.3
|
|
41
41
|
Requires-Dist: pydantic~=2.11
|
|
42
|
-
Requires-Dist: pymilvus~=2.
|
|
42
|
+
Requires-Dist: pymilvus~=2.5
|
|
43
43
|
Requires-Dist: python-dotenv~=1.1.1
|
|
44
44
|
Requires-Dist: PyYAML~=6.0
|
|
45
45
|
Requires-Dist: ragas~=0.2.14
|
|
46
|
-
Requires-Dist: rich
|
|
46
|
+
Requires-Dist: rich<15.0.0,>=14.0.0
|
|
47
47
|
Requires-Dist: tabulate~=0.9
|
|
48
48
|
Requires-Dist: uvicorn[standard]<0.36
|
|
49
49
|
Requires-Dist: wikipedia~=1.4
|
|
@@ -83,6 +83,8 @@ Provides-Extra: s3
|
|
|
83
83
|
Requires-Dist: nvidia-nat-s3; extra == "s3"
|
|
84
84
|
Provides-Extra: semantic-kernel
|
|
85
85
|
Requires-Dist: nvidia-nat-semantic-kernel; extra == "semantic-kernel"
|
|
86
|
+
Provides-Extra: strands
|
|
87
|
+
Requires-Dist: nvidia-nat-strands; extra == "strands"
|
|
86
88
|
Provides-Extra: telemetry
|
|
87
89
|
Requires-Dist: nvidia-nat-data-flywheel; extra == "telemetry"
|
|
88
90
|
Requires-Dist: nvidia-nat-opentelemetry; extra == "telemetry"
|
|
@@ -91,6 +93,8 @@ Requires-Dist: nvidia-nat-ragaai; extra == "telemetry"
|
|
|
91
93
|
Requires-Dist: nvidia-nat-weave; extra == "telemetry"
|
|
92
94
|
Provides-Extra: test
|
|
93
95
|
Requires-Dist: nvidia-nat-test; extra == "test"
|
|
96
|
+
Provides-Extra: vanna
|
|
97
|
+
Requires-Dist: nvidia-nat-vanna; extra == "vanna"
|
|
94
98
|
Provides-Extra: weave
|
|
95
99
|
Requires-Dist: nvidia-nat-weave; extra == "weave"
|
|
96
100
|
Provides-Extra: zep-cloud
|
|
@@ -109,6 +113,7 @@ Requires-Dist: nat_profiler_agent; extra == "examples"
|
|
|
109
113
|
Requires-Dist: nat_router_agent; extra == "examples"
|
|
110
114
|
Requires-Dist: nat_semantic_kernel_demo; extra == "examples"
|
|
111
115
|
Requires-Dist: nat_sequential_executor; extra == "examples"
|
|
116
|
+
Requires-Dist: nat_service_account_auth_mcp; extra == "examples"
|
|
112
117
|
Requires-Dist: nat_simple_auth; extra == "examples"
|
|
113
118
|
Requires-Dist: nat_simple_auth_mcp; extra == "examples"
|
|
114
119
|
Requires-Dist: nat_simple_web_query; extra == "examples"
|
|
@@ -120,6 +125,7 @@ Requires-Dist: nat_simple_calculator_mcp; extra == "examples"
|
|
|
120
125
|
Requires-Dist: nat_simple_calculator_observability; extra == "examples"
|
|
121
126
|
Requires-Dist: nat_simple_calculator_hitl; extra == "examples"
|
|
122
127
|
Requires-Dist: nat_simple_rag; extra == "examples"
|
|
128
|
+
Requires-Dist: nat_strands_demo; extra == "examples"
|
|
123
129
|
Requires-Dist: nat_swe_bench; extra == "examples"
|
|
124
130
|
Requires-Dist: nat_user_report; extra == "examples"
|
|
125
131
|
Provides-Extra: gunicorn
|
|
@@ -42,28 +42,28 @@ nat/authentication/oauth2/oauth2_auth_code_flow_provider_config.py,sha256=R261a2
|
|
|
42
42
|
nat/authentication/oauth2/oauth2_resource_server_config.py,sha256=WtqFMsJ-FzIjP7tjqs-tdYN4Pck0wxvdSyKIObNtU_8,5374
|
|
43
43
|
nat/authentication/oauth2/register.py,sha256=7rXhf-ilgSS_bUJsd9pOOCotL1FM8dKUt3ke1TllKkQ,1228
|
|
44
44
|
nat/builder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
|
-
nat/builder/builder.py,sha256=
|
|
46
|
-
nat/builder/component_utils.py,sha256=
|
|
47
|
-
nat/builder/context.py,sha256=
|
|
45
|
+
nat/builder/builder.py,sha256=tASkiXNAia1rG-IfBY80CJIGSOrPb4bb6hKzZqPwbNw,13290
|
|
46
|
+
nat/builder/component_utils.py,sha256=yUOGpc-26WZvJIMZylXr0ykVmoSC-CbRQ0AZvW1fMkQ,14129
|
|
47
|
+
nat/builder/context.py,sha256=_TqYF4Gsdnt7jvUmcwoTCM-CtlFqbHIlsA_BeSwHCS0,13895
|
|
48
48
|
nat/builder/embedder.py,sha256=NPkOEcxt_-wc53QRijCQQDLretRUYHRYaKoYmarmrBk,965
|
|
49
49
|
nat/builder/eval_builder.py,sha256=I-ScvupmorClYoVBIs_PhSsB7Xf9e2nGWe0rCZp3txo,6857
|
|
50
50
|
nat/builder/evaluator.py,sha256=xWHMND2vcAUkdFP7FU3jnVki1rUHeTa0-9saFh2hWKs,1162
|
|
51
|
-
nat/builder/framework_enum.py,sha256=
|
|
51
|
+
nat/builder/framework_enum.py,sha256=mClqqhe1LXQKCpi64GdeJen_C_DJ8V3AhgY9I2GAYi8,925
|
|
52
52
|
nat/builder/front_end.py,sha256=FCJ87NSshVVuTg8zZrq3YAr_u0RaYVZVcibnqlRFy-M,2173
|
|
53
|
-
nat/builder/function.py,sha256=
|
|
53
|
+
nat/builder/function.py,sha256=lGRDVs0tTjMkDZNJSbb3aTraA4Z2XBI7qRWUX83nxvw,30996
|
|
54
54
|
nat/builder/function_base.py,sha256=0Eg8RtjWhEU3Yme0CVxcRutobA0Qo8-YHZLI6L2qAgM,13116
|
|
55
55
|
nat/builder/function_info.py,sha256=7Rmrn-gOFrT2TIJklJwA_O-ycx_oimwZ0-qMYpbuZrU,25161
|
|
56
56
|
nat/builder/intermediate_step_manager.py,sha256=oHbvFg4R9Ka5a2KmUVETJFUxKZt90A96r9KH1TrJlR4,8999
|
|
57
57
|
nat/builder/llm.py,sha256=DW-2q64A06VChsXNEL5PfBjH3DcsnTKVoCEWDuP7MF4,951
|
|
58
58
|
nat/builder/retriever.py,sha256=ZyEqc7pFK31t_yr6Jaxa34c-tRas2edKqJZCNiVh9-0,970
|
|
59
59
|
nat/builder/user_interaction_manager.py,sha256=-Z2qbQes7a2cuXgT7KEbWeuok0HcCnRdw9WB8Ghyl9k,3081
|
|
60
|
-
nat/builder/workflow.py,sha256=
|
|
61
|
-
nat/builder/workflow_builder.py,sha256=
|
|
60
|
+
nat/builder/workflow.py,sha256=3BPPYseD96zzj3lT4Iy_FnoAPkQyMEHwVQxoCV4tiCI,7080
|
|
61
|
+
nat/builder/workflow_builder.py,sha256=nvnoua_DJzbvloJLQQ884UbN7z4S2lqlCj5Dg_X7hzA,64444
|
|
62
62
|
nat/cli/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
|
|
63
63
|
nat/cli/entrypoint.py,sha256=vN9G8fe-7ITmsVciJU11Fk7JaSxFnN5A4FrD7WjYbxg,5105
|
|
64
64
|
nat/cli/main.py,sha256=LZMKvoHYR926mghMjVpfLiI2qraqtrhMY9hvuAQCRWk,2258
|
|
65
|
-
nat/cli/register_workflow.py,sha256=
|
|
66
|
-
nat/cli/type_registry.py,sha256=
|
|
65
|
+
nat/cli/register_workflow.py,sha256=UxhCsyrLJgPBBTgJnTQilQFHUtsgVc39iS6da6jHtto,25135
|
|
66
|
+
nat/cli/type_registry.py,sha256=OkR-K1JL_UGJUITA_mx-SJp9qAX9yJzPFDApAXHHCuI,51671
|
|
67
67
|
nat/cli/cli_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
68
|
nat/cli/cli_utils/config_override.py,sha256=6eYS_dYsf-4fSc70_z9dVc66EaTDsjOVwVFWQfKGlZE,8899
|
|
69
69
|
nat/cli/cli_utils/validation.py,sha256=KVZvAkWZx-QVVBuCFTcH2muLzMB7ONQA1GE2TzEVN78,1288
|
|
@@ -117,16 +117,16 @@ nat/data_models/agent.py,sha256=IwDyb9Zc3R4Zd5rFeqt7q0EQswczAl5focxV9KozIzs,1625
|
|
|
117
117
|
nat/data_models/api_server.py,sha256=sX_faprmycij1Zy_PQqEMtAcbvGD8PG1kWKLAyNQx6M,30775
|
|
118
118
|
nat/data_models/authentication.py,sha256=XPu9W8nh4XRSuxPv3HxO-FMQ_JtTEoK6Y02JwnzDwTg,8457
|
|
119
119
|
nat/data_models/common.py,sha256=dOtZI6g9AvFplu40nTsUDnahafVa9c2VITq19V_cb50,7302
|
|
120
|
-
nat/data_models/component.py,sha256=
|
|
121
|
-
nat/data_models/component_ref.py,sha256=
|
|
122
|
-
nat/data_models/config.py,sha256=
|
|
120
|
+
nat/data_models/component.py,sha256=TA8wm5H8L_6hlihYqBmQvE2xRT2FXAsS4QxJ-0bZ4EU,1954
|
|
121
|
+
nat/data_models/component_ref.py,sha256=_hJiv-Uxogr0wT3u-2IwTLlRFIGRIBFilqSUuJk9kmY,4962
|
|
122
|
+
nat/data_models/config.py,sha256=6Sz06P3SnblHFD6Tm8FH1tE5C2HQe7ZVzD9vLYQxaMc,19695
|
|
123
123
|
nat/data_models/dataset_handler.py,sha256=1zz0456WGcGdLA9bodbMd1EMtQC8pns8TpvjNkk27No,5611
|
|
124
124
|
nat/data_models/discovery_metadata.py,sha256=_l97iQsqp_ihba8CbMBQ73mH1sipTQ19GiJDdzQYQGY,13432
|
|
125
125
|
nat/data_models/embedder.py,sha256=nPhthEQDtzAMGd8gFRB1ZfJpN5M9DJvv0h28ohHnTmI,1002
|
|
126
126
|
nat/data_models/evaluate.py,sha256=L0GdNh_c8jii-MiK8oHW9sUUsGO3l1FMsprr-UazT5c,4836
|
|
127
127
|
nat/data_models/evaluator.py,sha256=bd2njsyQB2t6ClJ66gJiCjYHsQpWZwPD7rsU0J109TI,939
|
|
128
128
|
nat/data_models/front_end.py,sha256=z8k6lSWjt1vMOYFbjWQxodpwAqPeuGS0hRBjsriDW2s,932
|
|
129
|
-
nat/data_models/function.py,sha256=
|
|
129
|
+
nat/data_models/function.py,sha256=8kqyjNRSpSfTS4pXis351SRT6vlKMBYMyoeZmBflnNs,2832
|
|
130
130
|
nat/data_models/function_dependencies.py,sha256=soDGXU4IwEn-3w3fGDm6vNLOR6jS6me-Ml_g7B6giBw,2901
|
|
131
131
|
nat/data_models/gated_field_mixin.py,sha256=1xycSpXc_fq8CucLp3khE1w0-JYfcbr__EJkbvxTD0w,9817
|
|
132
132
|
nat/data_models/interactive.py,sha256=qOkxyYPQYEBIBMDAA1rjfYcdvf6-iCM4qPV8Awc4VGw,8794
|
|
@@ -135,6 +135,7 @@ nat/data_models/invocation_node.py,sha256=nDRylgzBfJduGA-lme9xN4P6BdOYj0L6ytLHnT
|
|
|
135
135
|
nat/data_models/llm.py,sha256=HQKNeWx3ZT15W19b7QX5dHRD4jFs9RnM6f-gh1B_7iY,1526
|
|
136
136
|
nat/data_models/logging.py,sha256=1QtVjIQ99PgMYUuzw4h1FAoPRteZY7uf3oFTqV3ONgA,940
|
|
137
137
|
nat/data_models/memory.py,sha256=IKwe7CflCto30j4yI5yQtq8DXfMilAJ17S5NcsSDrOQ,1052
|
|
138
|
+
nat/data_models/middleware.py,sha256=yk2b0WYFEt0RPXGgYPWi4_flYDB6TexFQCWsO9U-F70,1271
|
|
138
139
|
nat/data_models/object_store.py,sha256=S8YY6i8ALgRPuggUI1FCG-xbvwPWuaCg1lJnZOx5scM,1515
|
|
139
140
|
nat/data_models/openai_mcp.py,sha256=UkAalZE0my8a_sq-GynjsfDoSOw2NWLNZM9hcV23TzY,1911
|
|
140
141
|
nat/data_models/optimizable.py,sha256=dG9YGM6MwAReLXimk31CzzOlbknGwsk0znfAiDuOeuI,8981
|
|
@@ -143,6 +144,7 @@ nat/data_models/profiler.py,sha256=z3IlEhj-veB4Yz85271bTkScSUkVwK50tR3dwlDRgcE,1
|
|
|
143
144
|
nat/data_models/registry_handler.py,sha256=g1rFaz4uSydMJn7qpdX-DNHJd_rNf8tXYN49dLDYHPo,968
|
|
144
145
|
nat/data_models/retriever.py,sha256=IJAIaeEXM8zj_towrvZ30Uoxt8e4WvOXrQwqGloS1qI,1202
|
|
145
146
|
nat/data_models/retry_mixin.py,sha256=s7UAhAHhlwTJ3uz6POVaSD8Y5DwKnU8mmo7OkRzeaW8,1863
|
|
147
|
+
nat/data_models/runtime_enum.py,sha256=T6TKBtexRbxcZb8H1Esd9ogEhQwh_nDu57MuxwtPXHg,878
|
|
146
148
|
nat/data_models/span.py,sha256=1ylpLf0UKwJSpKbwuFian9ut40GnF-AXsWYep1n2Y_0,8056
|
|
147
149
|
nat/data_models/step_adaptor.py,sha256=1qn56wB_nIYBM5IjN4ftsltCAkqaJd3Sqe5v0TRR4K8,2615
|
|
148
150
|
nat/data_models/streaming.py,sha256=sSqJqLqb70qyw69_4R9QC2RMbRw7UjTLPdo3FYBUGxE,1159
|
|
@@ -157,7 +159,7 @@ nat/embedder/openai_embedder.py,sha256=To7aCg8UyWPwSoA0MAHanH_MAKFDi3EcZxgLU1xYE
|
|
|
157
159
|
nat/embedder/register.py,sha256=TM_LKuSlJr3tEceNVuHfAx_yrCzf1sryD5Ycep5rNGo,883
|
|
158
160
|
nat/eval/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
|
|
159
161
|
nat/eval/config.py,sha256=G0LE4JpZaQy3PvERldVATFpQCiDQcVJGUFChgorqzNo,2377
|
|
160
|
-
nat/eval/evaluate.py,sha256=
|
|
162
|
+
nat/eval/evaluate.py,sha256=BdddPjtvtZR0RXzJNxHPPl9uBovOJE3PiUTkRAbJWqQ,27421
|
|
161
163
|
nat/eval/intermediate_step_adapter.py,sha256=mquQfPbq4-Owid2GzSyxtGNXoZ0i8crB6sA49rxnyrU,4483
|
|
162
164
|
nat/eval/register.py,sha256=Vce8HGsu6KDj7MA_5W2ziQtss1F180ndMjuqGiHxTe8,1358
|
|
163
165
|
nat/eval/remote_workflow.py,sha256=JAAbD0s753AOjo9baT4OqcB5dVEDmN34jPe0Uk13LcU,6024
|
|
@@ -240,10 +242,10 @@ nat/front_ends/console/register.py,sha256=2Kf6Mthx6jzWzU8YdhYIR1iABmZDvs1UXM_20n
|
|
|
240
242
|
nat/front_ends/cron/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
|
|
241
243
|
nat/front_ends/fastapi/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
|
|
242
244
|
nat/front_ends/fastapi/dask_client_mixin.py,sha256=N_tw4yxA7EKIFTKp5_C2ZksIZucWxRYkFjmZszkAkXc,2072
|
|
243
|
-
nat/front_ends/fastapi/fastapi_front_end_config.py,sha256=
|
|
245
|
+
nat/front_ends/fastapi/fastapi_front_end_config.py,sha256=lKRINEsWTLYMHJ6RRe9Gc1zP6I49yKEhNPak6lTe034,13603
|
|
244
246
|
nat/front_ends/fastapi/fastapi_front_end_controller.py,sha256=ei-34KCMpyaeAgeAN4gVvSGFjewjjRhHZPN0FqAfhDY,2548
|
|
245
247
|
nat/front_ends/fastapi/fastapi_front_end_plugin.py,sha256=5akdWipe8onOTdSqrbGq9KO71y0_BNQQJ3JAFj6LmFY,11575
|
|
246
|
-
nat/front_ends/fastapi/fastapi_front_end_plugin_worker.py,sha256=
|
|
248
|
+
nat/front_ends/fastapi/fastapi_front_end_plugin_worker.py,sha256=Q7_FTWgMlWnp70OszJhXhJxExfyhfQXHmUsQJB6Bi74,67115
|
|
247
249
|
nat/front_ends/fastapi/intermediate_steps_subscriber.py,sha256=kbyWlBVpyvyQQjeUnFG9nsR4RaqqNkx567ZSVwwl2RU,3104
|
|
248
250
|
nat/front_ends/fastapi/job_store.py,sha256=cWIBnIgRdkGL7qbBunEKzTYzdPp3l3QCDHMP-qTZJpc,22743
|
|
249
251
|
nat/front_ends/fastapi/main.py,sha256=s8gXCy61rJjK1aywMRpgPvzlkMGsCS-kI_0EIy4JjBM,2445
|
|
@@ -261,8 +263,8 @@ nat/front_ends/fastapi/html_snippets/auth_code_grant_success.py,sha256=BNpWwzmA5
|
|
|
261
263
|
nat/front_ends/mcp/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
|
|
262
264
|
nat/front_ends/mcp/introspection_token_verifier.py,sha256=s7Q4Q6rWZJ0ZVujSxxpvVI6Bnhkg1LJQ3RLkvhzFIGE,2836
|
|
263
265
|
nat/front_ends/mcp/mcp_front_end_config.py,sha256=QHmz0OdB6pdUU9TH65NjLk7JsAnR-F6xisel5Bv2Po4,5744
|
|
264
|
-
nat/front_ends/mcp/mcp_front_end_plugin.py,sha256=
|
|
265
|
-
nat/front_ends/mcp/mcp_front_end_plugin_worker.py,sha256=
|
|
266
|
+
nat/front_ends/mcp/mcp_front_end_plugin.py,sha256=dU2j6eD2xnDNeD-g8ydem4NuA82ccq3L6Y_8h_Ho5uc,6891
|
|
267
|
+
nat/front_ends/mcp/mcp_front_end_plugin_worker.py,sha256=ySbQOBdq2giLlldA7LHvIvgzA_YRAsEuf2cONT6WFwI,16438
|
|
266
268
|
nat/front_ends/mcp/memory_profiler.py,sha256=OpcpLBAGCdQwYSFZbtAqdfncrnGYVjDcMpWydB71hjY,12811
|
|
267
269
|
nat/front_ends/mcp/register.py,sha256=3aJtgG5VaiqujoeU1-Eq7Hl5pWslIlIwGFU2ASLTXgM,1173
|
|
268
270
|
nat/front_ends/mcp/tool_converter.py,sha256=IOHb8UoW_TVvRoiML2yi6nlbx13KgcmUsuYOGS3xYe0,13349
|
|
@@ -283,6 +285,11 @@ nat/memory/__init__.py,sha256=ARS_HJipPR4mLDqw3VISSQLzeezru_vgNgsi1Ku0GRE,828
|
|
|
283
285
|
nat/memory/interfaces.py,sha256=lyj1TGr3Fhibul8Y64Emj-BUEqDotmmFoVCEMqTujUA,5531
|
|
284
286
|
nat/memory/models.py,sha256=c5dA7nKHQ4AS1_ptQZcfC_oXO495-ehocnf_qXTE6c8,4319
|
|
285
287
|
nat/meta/pypi.md,sha256=BRG0KqnZlxRYorEkCpb8RoOe3RQC6FlvVeMWCcdAzY4,4502
|
|
288
|
+
nat/middleware/__init__.py,sha256=a-loyfA57ztnMUMv6ddTOui3lAGCxCHHX17fUKzjZNg,1426
|
|
289
|
+
nat/middleware/cache_middleware.py,sha256=DeiKyUKORoHGq47VHz_xW_dTaEKqPPotALg0QF6V44Q,10539
|
|
290
|
+
nat/middleware/function_middleware.py,sha256=oaTjcfsLIq-AT-fScltBa3yfkV-zC1PHdqutsr9eut4,7288
|
|
291
|
+
nat/middleware/middleware.py,sha256=s4Yz3FX1g-gE7YQ0RX51-dPs6u5K_2-WHmyoWvD9FR8,6512
|
|
292
|
+
nat/middleware/register.py,sha256=Wmhtaz8ZMk2T5kBrSC5IF5MbX2B5_2bQp2MIGJ2WavY,1451
|
|
286
293
|
nat/object_store/__init__.py,sha256=81UKtZ6qcc__hfNjMnEYBHE16k7XBXX6R5IJNg1zfRs,831
|
|
287
294
|
nat/object_store/in_memory_object_store.py,sha256=98UgQK2YdXTTQjBfQS-mjBCCugm1XUB7DZCFS8xe9yQ,2644
|
|
288
295
|
nat/object_store/interfaces.py,sha256=5NbsE9TccihOf5ScG04hE1eNOaiajOZIUOeK_Kvukk8,2519
|
|
@@ -345,7 +352,7 @@ nat/profiler/callbacks/llama_index_callback_handler.py,sha256=niXcwdWbsvsNZotpBu
|
|
|
345
352
|
nat/profiler/callbacks/semantic_kernel_callback_handler.py,sha256=BknzhQNB-MDMhR4QC9JScCp-zXq7KZ33SFb7X0MiTaI,11087
|
|
346
353
|
nat/profiler/callbacks/token_usage_base_model.py,sha256=txWll6XpXrv8oQfF7Bl22W6Ya1P_GxIQpucKQqiRXfI,1292
|
|
347
354
|
nat/profiler/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
348
|
-
nat/profiler/decorators/framework_wrapper.py,sha256=
|
|
355
|
+
nat/profiler/decorators/framework_wrapper.py,sha256=7zpwnJzbnBUsPtDkdn5SOvUvCMlfTGu5NbR9SpRB8MU,8466
|
|
349
356
|
nat/profiler/decorators/function_tracking.py,sha256=-ai_4djCbNwMan5SiTq3MVMBrcKoUWyxzviAV-Eh4xg,16771
|
|
350
357
|
nat/profiler/forecasting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
351
358
|
nat/profiler/forecasting/config.py,sha256=5BhMa8csuPCjEnTaNQjo_2IoO7esh1ch02MoSWkvwPw,791
|
|
@@ -401,15 +408,15 @@ nat/retriever/interface.py,sha256=CRvx-UBFoa_bDcHrr_kkKhgUx2fthcaH_p50s59zE6Y,14
|
|
|
401
408
|
nat/retriever/models.py,sha256=J75RLAFCPaxFUzJHSe25s6mqKcRPcw9wZjkQeuIaNGo,2432
|
|
402
409
|
nat/retriever/register.py,sha256=jzvq063XByWmFbCft2pv0_uHgIwnhN1d9WNDPgQTexQ,872
|
|
403
410
|
nat/retriever/milvus/__init__.py,sha256=GUJrgGtpvyMUCjUBvR3faAdv-tZzbU9W-izgx9aMEQg,680
|
|
404
|
-
nat/retriever/milvus/register.py,sha256=
|
|
405
|
-
nat/retriever/milvus/retriever.py,sha256=
|
|
411
|
+
nat/retriever/milvus/register.py,sha256=TInHJJAAde0nQJRYApe_WKnUeXsttdd8uV-rki8-OgY,4387
|
|
412
|
+
nat/retriever/milvus/retriever.py,sha256=rCe0REtrgvuCPSLhpeQNnd6hu12bqmIGJ37Ckk4S3tk,12180
|
|
406
413
|
nat/retriever/nemo_retriever/__init__.py,sha256=GUJrgGtpvyMUCjUBvR3faAdv-tZzbU9W-izgx9aMEQg,680
|
|
407
414
|
nat/retriever/nemo_retriever/register.py,sha256=j0K5wz4jS9LbSXMknKUjkZ5bnqLGqrkcKGKTQNSg0ro,2953
|
|
408
415
|
nat/retriever/nemo_retriever/retriever.py,sha256=gi3_qJFqE-iqRh3of_cmJg-SwzaQ3z24zA9LwY_MSLY,6930
|
|
409
416
|
nat/runtime/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
|
|
410
417
|
nat/runtime/loader.py,sha256=obUdAgZVYCPGC0R8u3wcoKFJzzSPQgJvrbU4OWygtog,7953
|
|
411
|
-
nat/runtime/runner.py,sha256=
|
|
412
|
-
nat/runtime/session.py,sha256=
|
|
418
|
+
nat/runtime/runner.py,sha256=uZdcfYIFASGYORFhXxR1RHCu0ygKhtQ1_8L_X-lwR0k,12714
|
|
419
|
+
nat/runtime/session.py,sha256=N9I0TSKWIUmfJ5V1-TrdXEkGGnZIcetWvvqL_bPqFDk,9560
|
|
413
420
|
nat/runtime/user_metadata.py,sha256=ce37NRYJWnMOWk6A7VAQ1GQztjMmkhMOq-uYf2gNCwo,3692
|
|
414
421
|
nat/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
415
422
|
nat/settings/global_settings.py,sha256=dEw9nkyx7pEEufmLS1o3mWhcXy7-ZpES4BZx1OWfg5M,12467
|
|
@@ -425,7 +432,7 @@ nat/tool/retriever.py,sha256=FP5JL1vCQNrqaKz4F1up-osjxEPhxPFOyaScrgByc34,3877
|
|
|
425
432
|
nat/tool/server_tools.py,sha256=sxsgaF5ZjKIc3cSLldt1MDhY3kptrDnkP3kVYvVexfY,3679
|
|
426
433
|
nat/tool/code_execution/README.md,sha256=sl3YX4As95HX61XqTXOGnUcHBV1lla-OeuTnLI4qgng,4019
|
|
427
434
|
nat/tool/code_execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
428
|
-
nat/tool/code_execution/code_sandbox.py,sha256=
|
|
435
|
+
nat/tool/code_execution/code_sandbox.py,sha256=PCTdQMWA3CAmjVJ-RQy7pxWkdMnF3OrWkxmplMNUFhs,10123
|
|
429
436
|
nat/tool/code_execution/register.py,sha256=zPFzYqaQhH2B3K8iildVYY_7RKgpoRNKdAo00KmBLQI,3322
|
|
430
437
|
nat/tool/code_execution/utils.py,sha256=__W-T1kaphFKYSc2AydQW8lCdvD7zAccarvs7XVFTtI,4194
|
|
431
438
|
nat/tool/code_execution/local_sandbox/.gitignore,sha256=BrV-H5osDtwwIx0eieoexolpnaJvc2DQLV15j95Qtyg,19
|
|
@@ -472,10 +479,10 @@ nat/utils/reactive/base/observer_base.py,sha256=6BiQfx26EMumotJ3KoVcdmFBYR_fnAss
|
|
|
472
479
|
nat/utils/reactive/base/subject_base.py,sha256=UQOxlkZTIeeyYmG5qLtDpNf_63Y7p-doEeUA08_R8ME,2521
|
|
473
480
|
nat/utils/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
474
481
|
nat/utils/settings/global_settings.py,sha256=9JaO6pxKT_Pjw6rxJRsRlFCXdVKCl_xUKU2QHZQWWNM,7294
|
|
475
|
-
nvidia_nat-1.4.
|
|
476
|
-
nvidia_nat-1.4.
|
|
477
|
-
nvidia_nat-1.4.
|
|
478
|
-
nvidia_nat-1.4.
|
|
479
|
-
nvidia_nat-1.4.
|
|
480
|
-
nvidia_nat-1.4.
|
|
481
|
-
nvidia_nat-1.4.
|
|
482
|
+
nvidia_nat-1.4.0a20251120.dist-info/licenses/LICENSE-3rd-party.txt,sha256=fOk5jMmCX9YoKWyYzTtfgl-SUy477audFC5hNY4oP7Q,284609
|
|
483
|
+
nvidia_nat-1.4.0a20251120.dist-info/licenses/LICENSE.md,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
484
|
+
nvidia_nat-1.4.0a20251120.dist-info/METADATA,sha256=pWdy7Ww1tM9rEivPnwiwnu4wOMnLGrViq7G95PS1hUw,10595
|
|
485
|
+
nvidia_nat-1.4.0a20251120.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
486
|
+
nvidia_nat-1.4.0a20251120.dist-info/entry_points.txt,sha256=rmr_Nr8Tp38euxp7MoNapg1FRCAaX7mD_-bzrFB0TME,739
|
|
487
|
+
nvidia_nat-1.4.0a20251120.dist-info/top_level.txt,sha256=lgJWLkigiVZuZ_O1nxVnD_ziYBwgpE2OStdaCduMEGc,8
|
|
488
|
+
nvidia_nat-1.4.0a20251120.dist-info/RECORD,,
|
{nvidia_nat-1.4.0a20251112.dist-info → nvidia_nat-1.4.0a20251120.dist-info}/entry_points.txt
RENAMED
|
@@ -9,6 +9,7 @@ nat_control_flow = nat.control_flow.register
|
|
|
9
9
|
nat_embedders = nat.embedder.register
|
|
10
10
|
nat_evaluators = nat.eval.register
|
|
11
11
|
nat_llms = nat.llm.register
|
|
12
|
+
nat_middleware = nat.middleware.register
|
|
12
13
|
nat_object_stores = nat.object_store.register
|
|
13
14
|
nat_observability = nat.observability.register
|
|
14
15
|
nat_retrievers = nat.retriever.register
|
|
File without changes
|
|
File without changes
|
{nvidia_nat-1.4.0a20251112.dist-info → nvidia_nat-1.4.0a20251120.dist-info}/licenses/LICENSE.md
RENAMED
|
File without changes
|
|
File without changes
|