nvidia-nat 1.2.0rc5__py3-none-any.whl → 1.2.0rc7__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.
- {aiq → nat}/agent/react_agent/agent.py +12 -12
- {aiq → nat}/agent/react_agent/register.py +20 -20
- {aiq → nat}/agent/reasoning_agent/reasoning_agent.py +14 -14
- {aiq → nat}/agent/rewoo_agent/agent.py +7 -7
- {aiq → nat}/agent/rewoo_agent/prompt.py +11 -12
- {aiq → nat}/agent/rewoo_agent/register.py +47 -49
- {aiq → nat}/agent/tool_calling_agent/agent.py +4 -4
- {aiq → nat}/agent/tool_calling_agent/register.py +8 -8
- {aiq → nat}/authentication/api_key/api_key_auth_provider.py +6 -6
- {aiq → nat}/authentication/api_key/api_key_auth_provider_config.py +5 -5
- {aiq → nat}/authentication/api_key/register.py +4 -4
- {aiq → nat}/authentication/http_basic_auth/http_basic_auth_provider.py +10 -10
- {aiq → nat}/authentication/http_basic_auth/register.py +4 -4
- {aiq → nat}/authentication/interfaces.py +6 -6
- {aiq → nat}/authentication/oauth2/oauth2_auth_code_flow_provider.py +11 -11
- {aiq → nat}/authentication/oauth2/oauth2_auth_code_flow_provider_config.py +1 -1
- {aiq → nat}/authentication/oauth2/register.py +4 -4
- {aiq → nat}/authentication/register.py +3 -3
- {aiq → nat}/builder/builder.py +30 -30
- {aiq → nat}/builder/component_utils.py +23 -23
- {aiq → nat}/builder/context.py +35 -29
- {aiq → nat}/builder/embedder.py +1 -1
- {aiq → nat}/builder/eval_builder.py +13 -13
- {aiq → nat}/builder/evaluator.py +3 -3
- {aiq → nat}/builder/front_end.py +11 -11
- {aiq → nat}/builder/function.py +8 -8
- {aiq → nat}/builder/function_base.py +6 -6
- {aiq → nat}/builder/function_info.py +3 -3
- {aiq → nat}/builder/intermediate_step_manager.py +13 -13
- {aiq → nat}/builder/llm.py +1 -1
- {aiq → nat}/builder/retriever.py +1 -1
- {aiq → nat}/builder/user_interaction_manager.py +14 -10
- {aiq → nat}/builder/workflow.py +25 -25
- {aiq → nat}/builder/workflow_builder.py +86 -86
- {aiq → nat}/cli/cli_utils/config_override.py +2 -2
- {aiq → nat}/cli/cli_utils/validation.py +4 -4
- {aiq → nat}/cli/commands/configure/channel/add.py +2 -2
- {aiq → nat}/cli/commands/configure/channel/channel.py +4 -6
- {aiq → nat}/cli/commands/configure/channel/remove.py +2 -2
- {aiq → nat}/cli/commands/configure/channel/update.py +2 -2
- {aiq → nat}/cli/commands/configure/configure.py +3 -3
- {aiq → nat}/cli/commands/evaluate.py +3 -3
- {aiq → nat}/cli/commands/info/info.py +5 -7
- {aiq → nat}/cli/commands/info/list_channels.py +1 -1
- {aiq → nat}/cli/commands/info/list_components.py +14 -14
- {aiq → nat}/cli/commands/info/list_mcp.py +106 -15
- {aiq → nat}/cli/commands/registry/publish.py +9 -9
- {aiq → nat}/cli/commands/registry/pull.py +10 -10
- {aiq → nat}/cli/commands/registry/registry.py +5 -7
- {aiq → nat}/cli/commands/registry/remove.py +8 -8
- {aiq → nat}/cli/commands/registry/search.py +15 -15
- {aiq → nat}/cli/commands/sizing/calc.py +3 -3
- {aiq → nat}/cli/commands/start.py +15 -15
- {aiq → nat}/cli/commands/uninstall.py +5 -5
- {aiq → nat}/cli/commands/validate.py +1 -1
- {aiq → nat}/cli/commands/workflow/templates/pyproject.toml.j2 +4 -4
- {aiq → nat}/cli/commands/workflow/templates/workflow.py.j2 +4 -4
- {aiq → nat}/cli/commands/workflow/workflow.py +3 -3
- {aiq → nat}/cli/commands/workflow/workflow_commands.py +15 -11
- {aiq → nat}/cli/entrypoint.py +6 -6
- {aiq → nat}/cli/main.py +15 -2
- {aiq → nat}/cli/register_workflow.py +70 -70
- {aiq → nat}/cli/type_registry.py +82 -82
- {aiq → nat}/data_models/api_server.py +121 -99
- {aiq → nat}/data_models/authentication.py +2 -2
- {aiq → nat}/data_models/component.py +5 -1
- {aiq → nat}/data_models/component_ref.py +12 -12
- {aiq → nat}/data_models/config.py +17 -13
- {aiq → nat}/data_models/dataset_handler.py +58 -12
- {aiq → nat}/data_models/discovery_metadata.py +36 -66
- {aiq → nat}/data_models/evaluate.py +9 -9
- {aiq → nat}/data_models/intermediate_step.py +7 -7
- {aiq → nat}/data_models/retriever.py +2 -2
- {aiq → nat}/data_models/span.py +10 -7
- {aiq → nat}/data_models/step_adaptor.py +1 -1
- {aiq → nat}/data_models/telemetry_exporter.py +2 -2
- {aiq → nat}/embedder/nim_embedder.py +5 -5
- {aiq → nat}/embedder/openai_embedder.py +5 -5
- {aiq/retriever → nat/embedder}/register.py +2 -2
- {aiq → nat}/eval/config.py +4 -4
- {aiq → nat}/eval/dataset_handler/dataset_downloader.py +1 -1
- {aiq → nat}/eval/dataset_handler/dataset_filter.py +1 -1
- {aiq → nat}/eval/dataset_handler/dataset_handler.py +127 -14
- {aiq → nat}/eval/evaluate.py +38 -34
- {aiq → nat}/eval/evaluator/base_evaluator.py +9 -5
- {aiq → nat}/eval/evaluator/evaluator_model.py +4 -4
- {aiq → nat}/eval/intermediate_step_adapter.py +2 -2
- {aiq → nat}/eval/rag_evaluator/evaluate.py +8 -8
- {aiq → nat}/eval/rag_evaluator/register.py +7 -7
- {aiq → nat}/eval/remote_workflow.py +8 -8
- {aiq → nat}/eval/runners/config.py +2 -2
- {aiq → nat}/eval/runners/multi_eval_runner.py +4 -4
- {aiq → nat}/eval/runtime_event_subscriber.py +3 -3
- {aiq → nat}/eval/swe_bench_evaluator/evaluate.py +6 -6
- {aiq → nat}/eval/swe_bench_evaluator/register.py +4 -4
- {aiq → nat}/eval/trajectory_evaluator/evaluate.py +5 -5
- {aiq → nat}/eval/trajectory_evaluator/register.py +5 -5
- {aiq → nat}/eval/tunable_rag_evaluator/evaluate.py +3 -3
- {aiq → nat}/eval/tunable_rag_evaluator/register.py +6 -6
- {aiq → nat}/eval/utils/output_uploader.py +1 -1
- {aiq → nat}/eval/utils/weave_eval.py +6 -6
- {aiq → nat}/experimental/decorators/experimental_warning_decorator.py +6 -2
- {aiq → nat}/experimental/test_time_compute/editing/iterative_plan_refinement_editor.py +10 -10
- {aiq → nat}/experimental/test_time_compute/editing/llm_as_a_judge_editor.py +10 -10
- {aiq → nat}/experimental/test_time_compute/editing/motivation_aware_summarization.py +10 -10
- {aiq → nat}/experimental/test_time_compute/functions/execute_score_select_function.py +10 -10
- {aiq → nat}/experimental/test_time_compute/functions/plan_select_execute_function.py +17 -17
- aiq/experimental/test_time_compute/functions/its_tool_orchestration_function.py → nat/experimental/test_time_compute/functions/ttc_tool_orchestration_function.py +12 -12
- aiq/experimental/test_time_compute/functions/its_tool_wrapper_function.py → nat/experimental/test_time_compute/functions/ttc_tool_wrapper_function.py +10 -10
- {aiq → nat}/experimental/test_time_compute/models/editor_config.py +2 -2
- {aiq → nat}/experimental/test_time_compute/models/scoring_config.py +2 -2
- {aiq → nat}/experimental/test_time_compute/models/search_config.py +2 -2
- {aiq → nat}/experimental/test_time_compute/models/selection_config.py +2 -2
- {aiq → nat}/experimental/test_time_compute/models/strategy_base.py +4 -4
- {aiq → nat}/experimental/test_time_compute/register.py +2 -2
- {aiq → nat}/experimental/test_time_compute/scoring/llm_based_agent_scorer.py +11 -11
- {aiq → nat}/experimental/test_time_compute/scoring/llm_based_plan_scorer.py +11 -11
- {aiq → nat}/experimental/test_time_compute/scoring/motivation_aware_scorer.py +10 -10
- {aiq → nat}/experimental/test_time_compute/search/multi_llm_planner.py +10 -10
- {aiq → nat}/experimental/test_time_compute/search/multi_query_retrieval_search.py +10 -10
- {aiq → nat}/experimental/test_time_compute/search/single_shot_multi_plan_planner.py +11 -11
- {aiq → nat}/experimental/test_time_compute/selection/best_of_n_selector.py +7 -7
- {aiq → nat}/experimental/test_time_compute/selection/llm_based_agent_output_selector.py +11 -11
- {aiq → nat}/experimental/test_time_compute/selection/llm_based_output_merging_selector.py +11 -11
- {aiq → nat}/experimental/test_time_compute/selection/llm_based_plan_selector.py +11 -11
- {aiq → nat}/experimental/test_time_compute/selection/threshold_selector.py +7 -7
- {aiq → nat}/front_ends/console/authentication_flow_handler.py +6 -6
- {aiq → nat}/front_ends/console/console_front_end_config.py +2 -2
- {aiq → nat}/front_ends/console/console_front_end_plugin.py +9 -9
- {aiq → nat}/front_ends/console/register.py +5 -5
- {aiq → nat}/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py +4 -4
- {aiq → nat}/front_ends/fastapi/auth_flow_handlers/websocket_flow_handler.py +6 -6
- {aiq → nat}/front_ends/fastapi/fastapi_front_end_config.py +22 -15
- {aiq → nat}/front_ends/fastapi/fastapi_front_end_plugin.py +10 -10
- {aiq → nat}/front_ends/fastapi/fastapi_front_end_plugin_worker.py +110 -115
- {aiq → nat}/front_ends/fastapi/intermediate_steps_subscriber.py +10 -10
- {aiq → nat}/front_ends/fastapi/main.py +8 -8
- {aiq → nat}/front_ends/fastapi/message_handler.py +58 -36
- {aiq → nat}/front_ends/fastapi/message_validator.py +55 -48
- {aiq → nat}/front_ends/fastapi/register.py +5 -5
- {aiq → nat}/front_ends/fastapi/response_helpers.py +26 -26
- {aiq → nat}/front_ends/fastapi/step_adaptor.py +35 -37
- {aiq → nat}/front_ends/mcp/mcp_front_end_config.py +12 -8
- nat/front_ends/mcp/mcp_front_end_plugin.py +81 -0
- nat/front_ends/mcp/mcp_front_end_plugin_worker.py +143 -0
- {aiq → nat}/front_ends/mcp/register.py +5 -5
- {aiq → nat}/front_ends/mcp/tool_converter.py +20 -21
- {aiq → nat}/front_ends/simple_base/simple_front_end_plugin_base.py +6 -6
- {aiq → nat}/llm/aws_bedrock_llm.py +5 -5
- {aiq → nat}/llm/nim_llm.py +5 -5
- {aiq → nat}/llm/openai_llm.py +5 -5
- {aiq → nat}/memory/__init__.py +2 -2
- nat/meta/pypi.md +58 -0
- {aiq → nat}/object_store/__init__.py +2 -2
- {aiq → nat}/object_store/in_memory_object_store.py +6 -6
- {aiq → nat}/observability/exporter/base_exporter.py +9 -9
- {aiq → nat}/observability/exporter/exporter.py +1 -1
- {aiq → nat}/observability/exporter/file_exporter.py +6 -6
- {aiq → nat}/observability/exporter/processing_exporter.py +9 -9
- {aiq → nat}/observability/exporter/raw_exporter.py +4 -4
- {aiq → nat}/observability/exporter/span_exporter.py +57 -34
- {aiq → nat}/observability/exporter_manager.py +6 -6
- {aiq → nat}/observability/mixin/file_mixin.py +2 -2
- {aiq → nat}/observability/processor/batching_processor.py +1 -1
- {aiq → nat}/observability/processor/callback_processor.py +1 -1
- {aiq → nat}/observability/processor/intermediate_step_serializer.py +4 -4
- {aiq → nat}/observability/processor/processor.py +1 -1
- {aiq → nat}/observability/register.py +7 -7
- {aiq → nat}/profiler/calc/calc_runner.py +18 -18
- {aiq → nat}/profiler/calc/calculations.py +3 -3
- {aiq → nat}/profiler/calc/plot.py +2 -2
- {aiq → nat}/profiler/callbacks/agno_callback_handler.py +14 -14
- {aiq → nat}/profiler/callbacks/langchain_callback_handler.py +11 -11
- {aiq → nat}/profiler/callbacks/llama_index_callback_handler.py +12 -12
- {aiq → nat}/profiler/callbacks/semantic_kernel_callback_handler.py +11 -11
- {aiq → nat}/profiler/data_models.py +2 -2
- {aiq → nat}/profiler/decorators/framework_wrapper.py +6 -6
- {aiq → nat}/profiler/decorators/function_tracking.py +10 -10
- {aiq → nat}/profiler/forecasting/model_trainer.py +5 -5
- {aiq → nat}/profiler/forecasting/models/linear_model.py +5 -4
- {aiq → nat}/profiler/forecasting/models/random_forest_regressor.py +5 -4
- {aiq → nat}/profiler/inference_optimization/bottleneck_analysis/nested_stack_analysis.py +7 -7
- {aiq → nat}/profiler/inference_optimization/bottleneck_analysis/simple_stack_analysis.py +4 -4
- {aiq → nat}/profiler/inference_optimization/experimental/concurrency_spike_analysis.py +6 -6
- {aiq → nat}/profiler/inference_optimization/experimental/prefix_span_analysis.py +6 -6
- {aiq → nat}/profiler/inference_optimization/llm_metrics.py +2 -2
- {aiq → nat}/profiler/inference_optimization/prompt_caching.py +5 -5
- {aiq → nat}/profiler/inference_optimization/token_uniqueness.py +4 -4
- {aiq → nat}/profiler/inference_optimization/workflow_runtimes.py +3 -3
- {aiq → nat}/profiler/intermediate_property_adapter.py +3 -3
- {aiq → nat}/profiler/profile_runner.py +17 -17
- {aiq → nat}/profiler/utils.py +4 -4
- {aiq → nat}/registry_handlers/local/local_handler.py +19 -19
- {aiq → nat}/registry_handlers/local/register_local.py +4 -4
- {aiq → nat}/registry_handlers/metadata_factory.py +7 -7
- {aiq → nat}/registry_handlers/package_utils.py +37 -33
- {aiq → nat}/registry_handlers/pypi/pypi_handler.py +21 -21
- {aiq → nat}/registry_handlers/pypi/register_pypi.py +6 -6
- {aiq → nat}/registry_handlers/registry_handler_base.py +21 -21
- {aiq → nat}/registry_handlers/rest/register_rest.py +7 -7
- {aiq → nat}/registry_handlers/rest/rest_handler.py +19 -19
- {aiq → nat}/registry_handlers/schemas/package.py +3 -3
- {aiq → nat}/registry_handlers/schemas/publish.py +17 -12
- {aiq → nat}/registry_handlers/schemas/pull.py +6 -6
- {aiq → nat}/registry_handlers/schemas/remove.py +2 -2
- {aiq → nat}/registry_handlers/schemas/search.py +11 -11
- {aiq → nat}/retriever/interface.py +6 -2
- {aiq → nat}/retriever/milvus/register.py +7 -7
- {aiq → nat}/retriever/milvus/retriever.py +8 -8
- {aiq → nat}/retriever/models.py +10 -7
- {aiq → nat}/retriever/nemo_retriever/register.py +6 -6
- {aiq → nat}/retriever/nemo_retriever/retriever.py +10 -10
- {aiq/embedder → nat/retriever}/register.py +2 -4
- {aiq → nat}/runtime/loader.py +38 -33
- {aiq → nat}/runtime/runner.py +30 -25
- {aiq → nat}/runtime/session.py +19 -15
- {aiq → nat}/runtime/user_metadata.py +1 -1
- {aiq → nat}/settings/global_settings.py +11 -11
- {aiq → nat}/tool/chat_completion.py +6 -6
- {aiq → nat}/tool/code_execution/README.md +2 -2
- {aiq → nat}/tool/code_execution/code_sandbox.py +1 -1
- {aiq → nat}/tool/code_execution/register.py +5 -5
- {aiq → nat}/tool/code_execution/test_code_execution_sandbox.py +1 -1
- {aiq → nat}/tool/datetime_tools.py +4 -4
- {aiq → nat}/tool/document_search.py +6 -6
- {aiq → nat}/tool/github_tools/create_github_commit.py +4 -4
- {aiq → nat}/tool/github_tools/create_github_issue.py +4 -4
- {aiq → nat}/tool/github_tools/create_github_pr.py +4 -4
- {aiq → nat}/tool/github_tools/get_github_file.py +4 -4
- {aiq → nat}/tool/github_tools/get_github_issue.py +4 -4
- {aiq → nat}/tool/github_tools/get_github_pr.py +4 -4
- {aiq → nat}/tool/github_tools/update_github_issue.py +4 -4
- {aiq → nat}/tool/mcp/exceptions.py +1 -1
- {aiq → nat}/tool/mcp/mcp_client.py +2 -2
- {aiq → nat}/tool/mcp/mcp_tool.py +7 -7
- {aiq → nat}/tool/memory_tools/add_memory_tool.py +6 -6
- {aiq → nat}/tool/memory_tools/delete_memory_tool.py +6 -6
- {aiq → nat}/tool/memory_tools/get_memory_tool.py +6 -6
- {aiq → nat}/tool/nvidia_rag.py +4 -4
- {aiq → nat}/tool/retriever.py +20 -15
- {aiq → nat}/tool/server_tools.py +16 -16
- {aiq → nat}/utils/dump_distro_mapping.py +2 -2
- {aiq → nat}/utils/exception_handlers/mcp.py +8 -8
- {aiq → nat}/utils/io/yaml_tools.py +1 -1
- {aiq → nat}/utils/metadata_utils.py +2 -2
- {aiq → nat}/utils/reactive/base/observable_base.py +2 -2
- {aiq → nat}/utils/reactive/base/subject_base.py +1 -1
- {aiq → nat}/utils/reactive/observable.py +5 -5
- {aiq → nat}/utils/reactive/observer.py +1 -1
- {aiq → nat}/utils/reactive/subject.py +4 -4
- {aiq → nat}/utils/reactive/subscription.py +1 -1
- {aiq → nat}/utils/settings/global_settings.py +4 -4
- {aiq → nat}/utils/type_converter.py +1 -1
- {nvidia_nat-1.2.0rc5.dist-info → nvidia_nat-1.2.0rc7.dist-info}/METADATA +37 -37
- nvidia_nat-1.2.0rc7.dist-info/RECORD +434 -0
- nvidia_nat-1.2.0rc7.dist-info/entry_points.txt +21 -0
- nvidia_nat-1.2.0rc7.dist-info/top_level.txt +1 -0
- aiq/embedder/langchain_client.py +0 -41
- aiq/front_ends/mcp/mcp_front_end_plugin.py +0 -93
- aiq/meta/module_to_distro.json +0 -3
- aiq/meta/pypi.md +0 -58
- nvidia_nat-1.2.0rc5.dist-info/RECORD +0 -435
- nvidia_nat-1.2.0rc5.dist-info/entry_points.txt +0 -20
- nvidia_nat-1.2.0rc5.dist-info/top_level.txt +0 -1
- {aiq → nat}/agent/__init__.py +0 -0
- {aiq → nat}/agent/base.py +0 -0
- {aiq → nat}/agent/dual_node.py +0 -0
- {aiq → nat}/agent/react_agent/__init__.py +0 -0
- {aiq → nat}/agent/react_agent/output_parser.py +0 -0
- {aiq → nat}/agent/react_agent/prompt.py +0 -0
- {aiq → nat}/agent/reasoning_agent/__init__.py +0 -0
- {aiq → nat}/agent/register.py +0 -0
- {aiq → nat}/agent/rewoo_agent/__init__.py +0 -0
- {aiq → nat}/agent/tool_calling_agent/__init__.py +0 -0
- {aiq → nat}/authentication/__init__.py +0 -0
- {aiq → nat}/authentication/api_key/__init__.py +0 -0
- {aiq → nat}/authentication/exceptions/__init__.py +0 -0
- {aiq → nat}/authentication/exceptions/api_key_exceptions.py +0 -0
- {aiq → nat}/authentication/http_basic_auth/__init__.py +0 -0
- {aiq → nat}/authentication/oauth2/__init__.py +0 -0
- {aiq → nat}/builder/__init__.py +0 -0
- {aiq → nat}/builder/framework_enum.py +0 -0
- {aiq → nat}/cli/__init__.py +0 -0
- {aiq → nat}/cli/cli_utils/__init__.py +0 -0
- {aiq → nat}/cli/commands/__init__.py +0 -0
- {aiq → nat}/cli/commands/configure/__init__.py +0 -0
- {aiq → nat}/cli/commands/configure/channel/__init__.py +0 -0
- {aiq → nat}/cli/commands/info/__init__.py +0 -0
- {aiq → nat}/cli/commands/registry/__init__.py +0 -0
- {aiq → nat}/cli/commands/sizing/__init__.py +0 -0
- {aiq → nat}/cli/commands/sizing/sizing.py +0 -0
- {aiq → nat}/cli/commands/workflow/__init__.py +0 -0
- {aiq → nat}/cli/commands/workflow/templates/__init__.py.j2 +0 -0
- {aiq → nat}/cli/commands/workflow/templates/config.yml.j2 +0 -0
- {aiq → nat}/cli/commands/workflow/templates/register.py.j2 +0 -0
- {aiq → nat}/data_models/__init__.py +0 -0
- {aiq → nat}/data_models/common.py +0 -0
- {aiq → nat}/data_models/embedder.py +0 -0
- {aiq → nat}/data_models/evaluator.py +0 -0
- {aiq → nat}/data_models/front_end.py +0 -0
- {aiq → nat}/data_models/function.py +0 -0
- {aiq → nat}/data_models/function_dependencies.py +0 -0
- {aiq → nat}/data_models/interactive.py +0 -0
- {aiq → nat}/data_models/invocation_node.py +0 -0
- {aiq → nat}/data_models/llm.py +0 -0
- {aiq → nat}/data_models/logging.py +0 -0
- {aiq → nat}/data_models/memory.py +0 -0
- {aiq → nat}/data_models/object_store.py +0 -0
- {aiq → nat}/data_models/profiler.py +0 -0
- {aiq → nat}/data_models/registry_handler.py +0 -0
- {aiq → nat}/data_models/retry_mixin.py +0 -0
- {aiq → nat}/data_models/streaming.py +0 -0
- {aiq → nat}/data_models/swe_bench_model.py +0 -0
- {aiq → nat}/data_models/ttc_strategy.py +0 -0
- {aiq → nat}/embedder/__init__.py +0 -0
- {aiq → nat}/eval/__init__.py +0 -0
- {aiq → nat}/eval/dataset_handler/__init__.py +0 -0
- {aiq → nat}/eval/evaluator/__init__.py +0 -0
- {aiq → nat}/eval/rag_evaluator/__init__.py +0 -0
- {aiq → nat}/eval/register.py +0 -0
- {aiq → nat}/eval/runners/__init__.py +0 -0
- {aiq → nat}/eval/swe_bench_evaluator/__init__.py +0 -0
- {aiq → nat}/eval/trajectory_evaluator/__init__.py +0 -0
- {aiq → nat}/eval/tunable_rag_evaluator/__init__.py +0 -0
- {aiq → nat}/eval/usage_stats.py +0 -0
- {aiq → nat}/eval/utils/__init__.py +0 -0
- {aiq → nat}/eval/utils/tqdm_position_registry.py +0 -0
- {aiq → nat}/experimental/__init__.py +0 -0
- {aiq → nat}/experimental/decorators/__init__.py +0 -0
- {aiq → nat}/experimental/test_time_compute/__init__.py +0 -0
- {aiq → nat}/experimental/test_time_compute/editing/__init__.py +0 -0
- {aiq → nat}/experimental/test_time_compute/functions/__init__.py +0 -0
- {aiq → nat}/experimental/test_time_compute/models/__init__.py +0 -0
- {aiq → nat}/experimental/test_time_compute/models/stage_enums.py +0 -0
- {aiq → nat}/experimental/test_time_compute/models/tool_use_config.py +0 -0
- {aiq → nat}/experimental/test_time_compute/models/ttc_item.py +0 -0
- {aiq → nat}/experimental/test_time_compute/scoring/__init__.py +0 -0
- {aiq → nat}/experimental/test_time_compute/search/__init__.py +0 -0
- {aiq → nat}/experimental/test_time_compute/selection/__init__.py +0 -0
- {aiq → nat}/front_ends/__init__.py +0 -0
- {aiq → nat}/front_ends/console/__init__.py +0 -0
- {aiq → nat}/front_ends/cron/__init__.py +0 -0
- {aiq → nat}/front_ends/fastapi/__init__.py +0 -0
- {aiq → nat}/front_ends/fastapi/auth_flow_handlers/__init__.py +0 -0
- {aiq → nat}/front_ends/fastapi/fastapi_front_end_controller.py +0 -0
- {aiq → nat}/front_ends/fastapi/html_snippets/__init__.py +0 -0
- {aiq → nat}/front_ends/fastapi/html_snippets/auth_code_grant_success.py +0 -0
- {aiq → nat}/front_ends/fastapi/job_store.py +0 -0
- {aiq → nat}/front_ends/mcp/__init__.py +0 -0
- {aiq → nat}/front_ends/register.py +0 -0
- {aiq → nat}/front_ends/simple_base/__init__.py +0 -0
- {aiq → nat}/llm/__init__.py +0 -0
- {aiq → nat}/llm/register.py +0 -0
- {aiq → nat}/llm/utils/__init__.py +0 -0
- {aiq → nat}/llm/utils/env_config_value.py +0 -0
- {aiq → nat}/llm/utils/error.py +0 -0
- {aiq → nat}/memory/interfaces.py +0 -0
- {aiq → nat}/memory/models.py +0 -0
- {aiq → nat}/object_store/interfaces.py +0 -0
- {aiq → nat}/object_store/models.py +0 -0
- {aiq → nat}/object_store/register.py +0 -0
- {aiq → nat}/observability/__init__.py +0 -0
- {aiq → nat}/observability/exporter/__init__.py +0 -0
- {aiq → nat}/observability/mixin/__init__.py +0 -0
- {aiq → nat}/observability/mixin/batch_config_mixin.py +0 -0
- {aiq → nat}/observability/mixin/collector_config_mixin.py +0 -0
- {aiq → nat}/observability/mixin/file_mode.py +0 -0
- {aiq → nat}/observability/mixin/resource_conflict_mixin.py +0 -0
- {aiq → nat}/observability/mixin/serialize_mixin.py +0 -0
- {aiq → nat}/observability/mixin/type_introspection_mixin.py +0 -0
- {aiq → nat}/observability/processor/__init__.py +0 -0
- {aiq → nat}/observability/utils/__init__.py +0 -0
- {aiq → nat}/observability/utils/dict_utils.py +0 -0
- {aiq → nat}/observability/utils/time_utils.py +0 -0
- {aiq → nat}/plugins/.namespace +0 -0
- {aiq → nat}/profiler/__init__.py +0 -0
- {aiq → nat}/profiler/calc/__init__.py +0 -0
- {aiq → nat}/profiler/calc/data_models.py +0 -0
- {aiq → nat}/profiler/callbacks/__init__.py +0 -0
- {aiq → nat}/profiler/callbacks/base_callback_class.py +0 -0
- {aiq → nat}/profiler/callbacks/token_usage_base_model.py +0 -0
- {aiq → nat}/profiler/data_frame_row.py +0 -0
- {aiq → nat}/profiler/decorators/__init__.py +0 -0
- {aiq → nat}/profiler/forecasting/__init__.py +0 -0
- {aiq → nat}/profiler/forecasting/config.py +0 -0
- {aiq → nat}/profiler/forecasting/models/__init__.py +0 -0
- {aiq → nat}/profiler/forecasting/models/forecasting_base_model.py +0 -0
- {aiq → nat}/profiler/inference_metrics_model.py +0 -0
- {aiq → nat}/profiler/inference_optimization/__init__.py +0 -0
- {aiq → nat}/profiler/inference_optimization/bottleneck_analysis/__init__.py +0 -0
- {aiq → nat}/profiler/inference_optimization/data_models.py +0 -0
- {aiq → nat}/profiler/inference_optimization/experimental/__init__.py +0 -0
- {aiq → nat}/registry_handlers/__init__.py +0 -0
- {aiq → nat}/registry_handlers/local/__init__.py +0 -0
- {aiq → nat}/registry_handlers/pypi/__init__.py +0 -0
- {aiq → nat}/registry_handlers/register.py +0 -0
- {aiq → nat}/registry_handlers/rest/__init__.py +0 -0
- {aiq → nat}/registry_handlers/schemas/__init__.py +0 -0
- {aiq → nat}/registry_handlers/schemas/headers.py +0 -0
- {aiq → nat}/registry_handlers/schemas/status.py +0 -0
- {aiq → nat}/retriever/__init__.py +0 -0
- {aiq → nat}/retriever/milvus/__init__.py +0 -0
- {aiq → nat}/retriever/nemo_retriever/__init__.py +0 -0
- {aiq → nat}/runtime/__init__.py +0 -0
- {aiq → nat}/settings/__init__.py +0 -0
- {aiq → nat}/test/.namespace +0 -0
- {aiq → nat}/tool/__init__.py +0 -0
- {aiq → nat}/tool/code_execution/__init__.py +0 -0
- {aiq → nat}/tool/code_execution/local_sandbox/.gitignore +0 -0
- {aiq → nat}/tool/code_execution/local_sandbox/Dockerfile.sandbox +0 -0
- {aiq → nat}/tool/code_execution/local_sandbox/__init__.py +0 -0
- {aiq → nat}/tool/code_execution/local_sandbox/local_sandbox_server.py +0 -0
- {aiq → nat}/tool/code_execution/local_sandbox/sandbox.requirements.txt +0 -0
- {aiq → nat}/tool/code_execution/local_sandbox/start_local_sandbox.sh +0 -0
- {aiq → nat}/tool/code_execution/utils.py +0 -0
- {aiq → nat}/tool/github_tools/__init__.py +0 -0
- {aiq → nat}/tool/mcp/__init__.py +0 -0
- {aiq → nat}/tool/memory_tools/__init__.py +0 -0
- {aiq → nat}/tool/register.py +0 -0
- {aiq → nat}/utils/__init__.py +0 -0
- {aiq → nat}/utils/data_models/__init__.py +0 -0
- {aiq → nat}/utils/data_models/schema_validator.py +0 -0
- {aiq → nat}/utils/debugging_utils.py +0 -0
- {aiq → nat}/utils/exception_handlers/__init__.py +0 -0
- {aiq → nat}/utils/exception_handlers/automatic_retries.py +0 -0
- {aiq → nat}/utils/exception_handlers/schemas.py +0 -0
- {aiq → nat}/utils/io/__init__.py +0 -0
- {aiq → nat}/utils/io/model_processing.py +0 -0
- {aiq → nat}/utils/log_utils.py +0 -0
- {aiq → nat}/utils/optional_imports.py +0 -0
- {aiq → nat}/utils/producer_consumer_queue.py +0 -0
- {aiq → nat}/utils/reactive/__init__.py +0 -0
- {aiq → nat}/utils/reactive/base/__init__.py +0 -0
- {aiq → nat}/utils/reactive/base/observer_base.py +0 -0
- {aiq → nat}/utils/settings/__init__.py +0 -0
- {aiq → nat}/utils/string_utils.py +0 -0
- {aiq → nat}/utils/type_utils.py +0 -0
- {aiq → nat}/utils/url_utils.py +0 -0
- {nvidia_nat-1.2.0rc5.dist-info → nvidia_nat-1.2.0rc7.dist-info}/WHEEL +0 -0
- {nvidia_nat-1.2.0rc5.dist-info → nvidia_nat-1.2.0rc7.dist-info}/licenses/LICENSE-3rd-party.txt +0 -0
- {nvidia_nat-1.2.0rc5.dist-info → nvidia_nat-1.2.0rc7.dist-info}/licenses/LICENSE.md +0 -0
|
@@ -23,15 +23,15 @@ from uuid import uuid4
|
|
|
23
23
|
|
|
24
24
|
import litellm
|
|
25
25
|
|
|
26
|
-
from
|
|
27
|
-
from
|
|
28
|
-
from
|
|
29
|
-
from
|
|
30
|
-
from
|
|
31
|
-
from
|
|
32
|
-
from
|
|
33
|
-
from
|
|
34
|
-
from
|
|
26
|
+
from nat.builder.context import Context
|
|
27
|
+
from nat.builder.framework_enum import LLMFrameworkEnum
|
|
28
|
+
from nat.data_models.intermediate_step import IntermediateStepPayload
|
|
29
|
+
from nat.data_models.intermediate_step import IntermediateStepType
|
|
30
|
+
from nat.data_models.intermediate_step import StreamEventData
|
|
31
|
+
from nat.data_models.intermediate_step import TraceMetadata
|
|
32
|
+
from nat.data_models.intermediate_step import UsageInfo
|
|
33
|
+
from nat.profiler.callbacks.base_callback_class import BaseProfilerCallback
|
|
34
|
+
from nat.profiler.callbacks.token_usage_base_model import TokenUsageBaseModel
|
|
35
35
|
|
|
36
36
|
logger = logging.getLogger(__name__)
|
|
37
37
|
|
|
@@ -44,14 +44,14 @@ class AgnoProfilerHandler(BaseProfilerCallback):
|
|
|
44
44
|
- LLM Calls
|
|
45
45
|
|
|
46
46
|
to collect usage statistics (tokens, inputs, outputs, time intervals, etc.)
|
|
47
|
-
and store them in
|
|
47
|
+
and store them in NAT's usage_stats queue for subsequent analysis.
|
|
48
48
|
"""
|
|
49
49
|
|
|
50
50
|
def __init__(self) -> None:
|
|
51
51
|
super().__init__()
|
|
52
52
|
self._lock = threading.Lock()
|
|
53
53
|
self.last_call_ts = time.time()
|
|
54
|
-
self.step_manager =
|
|
54
|
+
self.step_manager = Context.get().intermediate_step_manager
|
|
55
55
|
|
|
56
56
|
# Original references to Agno methods (for uninstrumenting if needed)
|
|
57
57
|
self._original_tool_execute = None
|
|
@@ -73,8 +73,8 @@ class AgnoProfilerHandler(BaseProfilerCallback):
|
|
|
73
73
|
|
|
74
74
|
# Note: Agno doesn't have a class-based tool structure to patch directly.
|
|
75
75
|
# Instead, it uses decorators to convert functions to tools.
|
|
76
|
-
# In
|
|
77
|
-
# in packages/
|
|
76
|
+
# In NAT, tool executions are captured at the execute_agno_tool level
|
|
77
|
+
# in packages/nvidia_nat_agno/src/nat/plugins/agno/tool_wrapper.py
|
|
78
78
|
|
|
79
79
|
# To properly monitor Agno tool executions, we would need to either:
|
|
80
80
|
# 1. Patch the execute_agno_tool function in tool_wrapper.py
|
|
@@ -83,7 +83,7 @@ class AgnoProfilerHandler(BaseProfilerCallback):
|
|
|
83
83
|
# to patch those classes
|
|
84
84
|
|
|
85
85
|
# Recommended future enhancement:
|
|
86
|
-
# The execute_agno_tool function in packages/
|
|
86
|
+
# The execute_agno_tool function in packages/nvidia_nat_agno/src/nat/plugins/agno/tool_wrapper.py
|
|
87
87
|
# should be updated to directly push IntermediateStepPayload events to the step manager
|
|
88
88
|
# at the beginning and end of tool execution, similar to what this handler does for LLM calls.
|
|
89
89
|
|
|
@@ -29,16 +29,16 @@ from langchain_core.messages import BaseMessage
|
|
|
29
29
|
from langchain_core.outputs import ChatGeneration
|
|
30
30
|
from langchain_core.outputs import LLMResult
|
|
31
31
|
|
|
32
|
-
from
|
|
33
|
-
from
|
|
34
|
-
from
|
|
35
|
-
from
|
|
36
|
-
from
|
|
37
|
-
from
|
|
38
|
-
from
|
|
39
|
-
from
|
|
40
|
-
from
|
|
41
|
-
from
|
|
32
|
+
from nat.builder.context import Context
|
|
33
|
+
from nat.builder.framework_enum import LLMFrameworkEnum
|
|
34
|
+
from nat.data_models.intermediate_step import IntermediateStepPayload
|
|
35
|
+
from nat.data_models.intermediate_step import IntermediateStepType
|
|
36
|
+
from nat.data_models.intermediate_step import StreamEventData
|
|
37
|
+
from nat.data_models.intermediate_step import ToolSchema
|
|
38
|
+
from nat.data_models.intermediate_step import TraceMetadata
|
|
39
|
+
from nat.data_models.intermediate_step import UsageInfo
|
|
40
|
+
from nat.profiler.callbacks.base_callback_class import BaseProfilerCallback
|
|
41
|
+
from nat.profiler.callbacks.token_usage_base_model import TokenUsageBaseModel
|
|
42
42
|
|
|
43
43
|
logger = logging.getLogger(__name__)
|
|
44
44
|
|
|
@@ -68,7 +68,7 @@ class LangchainProfilerHandler(AsyncCallbackHandler, BaseProfilerCallback): # p
|
|
|
68
68
|
self._lock = threading.Lock()
|
|
69
69
|
self.last_call_ts = time.time()
|
|
70
70
|
|
|
71
|
-
self.step_manager =
|
|
71
|
+
self.step_manager = Context.get().intermediate_step_manager
|
|
72
72
|
self._state = IntermediateStepType.LLM_END
|
|
73
73
|
|
|
74
74
|
self._run_id_to_model_name = {}
|
|
@@ -26,15 +26,15 @@ from llama_index.core.callbacks import EventPayload
|
|
|
26
26
|
from llama_index.core.callbacks.base_handler import BaseCallbackHandler
|
|
27
27
|
from llama_index.core.llms import ChatResponse
|
|
28
28
|
|
|
29
|
-
from
|
|
30
|
-
from
|
|
31
|
-
from
|
|
32
|
-
from
|
|
33
|
-
from
|
|
34
|
-
from
|
|
35
|
-
from
|
|
36
|
-
from
|
|
37
|
-
from
|
|
29
|
+
from nat.builder.context import Context
|
|
30
|
+
from nat.builder.framework_enum import LLMFrameworkEnum
|
|
31
|
+
from nat.data_models.intermediate_step import IntermediateStepPayload
|
|
32
|
+
from nat.data_models.intermediate_step import IntermediateStepType
|
|
33
|
+
from nat.data_models.intermediate_step import StreamEventData
|
|
34
|
+
from nat.data_models.intermediate_step import TraceMetadata
|
|
35
|
+
from nat.data_models.intermediate_step import UsageInfo
|
|
36
|
+
from nat.profiler.callbacks.base_callback_class import BaseProfilerCallback
|
|
37
|
+
from nat.profiler.callbacks.token_usage_base_model import TokenUsageBaseModel
|
|
38
38
|
|
|
39
39
|
logger = logging.getLogger(__name__)
|
|
40
40
|
|
|
@@ -49,7 +49,7 @@ class LlamaIndexProfilerHandler(BaseCallbackHandler, BaseProfilerCallback):
|
|
|
49
49
|
- Response data
|
|
50
50
|
- Time intervals between calls
|
|
51
51
|
|
|
52
|
-
and appends them to
|
|
52
|
+
and appends them to ContextState.usage_stats.
|
|
53
53
|
"""
|
|
54
54
|
|
|
55
55
|
def __init__(self) -> None:
|
|
@@ -58,7 +58,7 @@ class LlamaIndexProfilerHandler(BaseCallbackHandler, BaseProfilerCallback):
|
|
|
58
58
|
self._lock = threading.Lock()
|
|
59
59
|
self.last_call_ts = time.time()
|
|
60
60
|
self._last_tool_map: dict[str, str] = {}
|
|
61
|
-
self.step_manager =
|
|
61
|
+
self.step_manager = Context.get().intermediate_step_manager
|
|
62
62
|
|
|
63
63
|
self._run_id_to_llm_input = {}
|
|
64
64
|
self._run_id_to_tool_input = {}
|
|
@@ -167,7 +167,7 @@ class LlamaIndexProfilerHandler(BaseCallbackHandler, BaseProfilerCallback):
|
|
|
167
167
|
except Exception as e:
|
|
168
168
|
logger.exception("Error getting model name: %s", e, exc_info=True)
|
|
169
169
|
|
|
170
|
-
# Append usage data to
|
|
170
|
+
# Append usage data to NAT usage stats
|
|
171
171
|
with self._lock:
|
|
172
172
|
stats = IntermediateStepPayload(
|
|
173
173
|
event_type=IntermediateStepType.LLM_END,
|
|
@@ -26,15 +26,15 @@ from pydantic import BaseModel
|
|
|
26
26
|
from pydantic import Field
|
|
27
27
|
from semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion_base import OpenAIChatCompletionBase
|
|
28
28
|
|
|
29
|
-
from
|
|
30
|
-
from
|
|
31
|
-
from
|
|
32
|
-
from
|
|
33
|
-
from
|
|
34
|
-
from
|
|
35
|
-
from
|
|
36
|
-
from
|
|
37
|
-
from
|
|
29
|
+
from nat.builder.context import Context
|
|
30
|
+
from nat.builder.framework_enum import LLMFrameworkEnum
|
|
31
|
+
from nat.data_models.intermediate_step import IntermediateStepPayload
|
|
32
|
+
from nat.data_models.intermediate_step import IntermediateStepType
|
|
33
|
+
from nat.data_models.intermediate_step import StreamEventData
|
|
34
|
+
from nat.data_models.intermediate_step import TraceMetadata
|
|
35
|
+
from nat.data_models.intermediate_step import UsageInfo
|
|
36
|
+
from nat.profiler.callbacks.base_callback_class import BaseProfilerCallback
|
|
37
|
+
from nat.profiler.callbacks.token_usage_base_model import TokenUsageBaseModel
|
|
38
38
|
|
|
39
39
|
logger = logging.getLogger(__name__)
|
|
40
40
|
|
|
@@ -55,14 +55,14 @@ class SemanticKernelProfilerHandler(BaseProfilerCallback):
|
|
|
55
55
|
- Tool calls
|
|
56
56
|
|
|
57
57
|
to collect usage statistics (tokens, inputs, outputs, time intervals, etc.)
|
|
58
|
-
and store them in
|
|
58
|
+
and store them in NAT's usage_stats queue for subsequent analysis.
|
|
59
59
|
"""
|
|
60
60
|
|
|
61
61
|
def __init__(self, workflow_llms: dict) -> None:
|
|
62
62
|
super().__init__()
|
|
63
63
|
self._lock = threading.Lock()
|
|
64
64
|
self.last_call_ts = time.time()
|
|
65
|
-
self.step_manager =
|
|
65
|
+
self.step_manager = Context.get().intermediate_step_manager
|
|
66
66
|
self._builder_llms = workflow_llms
|
|
67
67
|
|
|
68
68
|
# Original references to SK methods
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
|
|
16
16
|
from pydantic import BaseModel
|
|
17
17
|
|
|
18
|
-
from
|
|
19
|
-
from
|
|
18
|
+
from nat.profiler.inference_metrics_model import InferenceMetricsModel
|
|
19
|
+
from nat.profiler.inference_optimization.data_models import WorkflowRuntimeMetrics
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class ProfilerResults(BaseModel):
|
|
@@ -25,7 +25,7 @@ from contextlib import asynccontextmanager
|
|
|
25
25
|
from contextvars import ContextVar
|
|
26
26
|
from typing import Any
|
|
27
27
|
|
|
28
|
-
from
|
|
28
|
+
from nat.builder.framework_enum import LLMFrameworkEnum
|
|
29
29
|
|
|
30
30
|
logger = logging.getLogger(__name__)
|
|
31
31
|
|
|
@@ -56,7 +56,7 @@ def set_framework_profiler_handler(
|
|
|
56
56
|
if LLMFrameworkEnum.LANGCHAIN in frameworks and not _library_instrumented["langchain"]:
|
|
57
57
|
from langchain_core.tracers.context import register_configure_hook
|
|
58
58
|
|
|
59
|
-
from
|
|
59
|
+
from nat.profiler.callbacks.langchain_callback_handler import LangchainProfilerHandler
|
|
60
60
|
|
|
61
61
|
handler = LangchainProfilerHandler()
|
|
62
62
|
callback_handler_var.set(handler)
|
|
@@ -68,14 +68,14 @@ def set_framework_profiler_handler(
|
|
|
68
68
|
from llama_index.core import Settings
|
|
69
69
|
from llama_index.core.callbacks import CallbackManager
|
|
70
70
|
|
|
71
|
-
from
|
|
71
|
+
from nat.profiler.callbacks.llama_index_callback_handler import LlamaIndexProfilerHandler
|
|
72
72
|
|
|
73
73
|
handler = LlamaIndexProfilerHandler()
|
|
74
74
|
Settings.callback_manager = CallbackManager([handler])
|
|
75
75
|
logger.debug("LlamaIndex callback handler registered")
|
|
76
76
|
|
|
77
77
|
if LLMFrameworkEnum.CREWAI in frameworks and not _library_instrumented["crewai"]:
|
|
78
|
-
from
|
|
78
|
+
from nat.plugins.crewai.crewai_callback_handler import \
|
|
79
79
|
CrewAIProfilerHandler # pylint: disable=ungrouped-imports,line-too-long # noqa E501
|
|
80
80
|
|
|
81
81
|
handler = CrewAIProfilerHandler()
|
|
@@ -84,7 +84,7 @@ def set_framework_profiler_handler(
|
|
|
84
84
|
logger.debug("CrewAI callback handler registered")
|
|
85
85
|
|
|
86
86
|
if LLMFrameworkEnum.SEMANTIC_KERNEL in frameworks and not _library_instrumented["semantic_kernel"]:
|
|
87
|
-
from
|
|
87
|
+
from nat.profiler.callbacks.semantic_kernel_callback_handler import SemanticKernelProfilerHandler
|
|
88
88
|
|
|
89
89
|
handler = SemanticKernelProfilerHandler(workflow_llms=workflow_llms)
|
|
90
90
|
handler.instrument()
|
|
@@ -92,7 +92,7 @@ def set_framework_profiler_handler(
|
|
|
92
92
|
logger.debug("SemanticKernel callback handler registered")
|
|
93
93
|
|
|
94
94
|
if LLMFrameworkEnum.AGNO in frameworks and not _library_instrumented["agno"]:
|
|
95
|
-
from
|
|
95
|
+
from nat.profiler.callbacks.agno_callback_handler import AgnoProfilerHandler
|
|
96
96
|
|
|
97
97
|
handler = AgnoProfilerHandler()
|
|
98
98
|
handler.instrument()
|
|
@@ -20,11 +20,11 @@ from typing import Any
|
|
|
20
20
|
|
|
21
21
|
from pydantic import BaseModel
|
|
22
22
|
|
|
23
|
-
from
|
|
24
|
-
from
|
|
25
|
-
from
|
|
26
|
-
from
|
|
27
|
-
from
|
|
23
|
+
from nat.builder.context import Context
|
|
24
|
+
from nat.builder.intermediate_step_manager import IntermediateStepManager
|
|
25
|
+
from nat.data_models.intermediate_step import IntermediateStepPayload
|
|
26
|
+
from nat.data_models.intermediate_step import IntermediateStepType
|
|
27
|
+
from nat.data_models.intermediate_step import TraceMetadata
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
# --- Helper function to recursively serialize any object into JSON-friendly data ---
|
|
@@ -61,7 +61,7 @@ def push_intermediate_step(step_manager: IntermediateStepManager,
|
|
|
61
61
|
kwargs: Any = None,
|
|
62
62
|
output: Any = None,
|
|
63
63
|
metadata: dict[str, Any] | None = None) -> None:
|
|
64
|
-
"""Push an intermediate step to the
|
|
64
|
+
"""Push an intermediate step to the NAT Event Stream."""
|
|
65
65
|
|
|
66
66
|
payload = IntermediateStepPayload(UUID=identifier,
|
|
67
67
|
event_type=event_type,
|
|
@@ -110,7 +110,7 @@ def track_function(func: Any = None, *, metadata: dict[str, Any] | None = None):
|
|
|
110
110
|
|
|
111
111
|
@functools.wraps(func)
|
|
112
112
|
async def async_gen_wrapper(*args, **kwargs):
|
|
113
|
-
step_manager: IntermediateStepManager =
|
|
113
|
+
step_manager: IntermediateStepManager = Context.get().intermediate_step_manager
|
|
114
114
|
# 1) Serialize input
|
|
115
115
|
serialized_args, serialized_kwargs = _prepare_serialized_args_kwargs(*args, **kwargs)
|
|
116
116
|
|
|
@@ -156,7 +156,7 @@ def track_function(func: Any = None, *, metadata: dict[str, Any] | None = None):
|
|
|
156
156
|
# ---------------------
|
|
157
157
|
@functools.wraps(func)
|
|
158
158
|
async def async_wrapper(*args, **kwargs):
|
|
159
|
-
step_manager: IntermediateStepManager =
|
|
159
|
+
step_manager: IntermediateStepManager = Context.get().intermediate_step_manager
|
|
160
160
|
serialized_args, serialized_kwargs = _prepare_serialized_args_kwargs(*args, **kwargs)
|
|
161
161
|
invocation_id = str(uuid.uuid4())
|
|
162
162
|
push_intermediate_step(step_manager,
|
|
@@ -189,7 +189,7 @@ def track_function(func: Any = None, *, metadata: dict[str, Any] | None = None):
|
|
|
189
189
|
# ---------------------
|
|
190
190
|
@functools.wraps(func)
|
|
191
191
|
def sync_gen_wrapper(*args, **kwargs):
|
|
192
|
-
step_manager: IntermediateStepManager =
|
|
192
|
+
step_manager: IntermediateStepManager = Context.get().intermediate_step_manager
|
|
193
193
|
serialized_args, serialized_kwargs = _prepare_serialized_args_kwargs(*args, **kwargs)
|
|
194
194
|
invocation_id = str(uuid.uuid4())
|
|
195
195
|
push_intermediate_step(step_manager,
|
|
@@ -226,7 +226,7 @@ def track_function(func: Any = None, *, metadata: dict[str, Any] | None = None):
|
|
|
226
226
|
|
|
227
227
|
@functools.wraps(func)
|
|
228
228
|
def sync_wrapper(*args, **kwargs):
|
|
229
|
-
step_manager: IntermediateStepManager =
|
|
229
|
+
step_manager: IntermediateStepManager = Context.get().intermediate_step_manager
|
|
230
230
|
serialized_args, serialized_kwargs = _prepare_serialized_args_kwargs(*args, **kwargs)
|
|
231
231
|
invocation_id = str(uuid.uuid4())
|
|
232
232
|
push_intermediate_step(step_manager,
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
|
|
18
18
|
import logging
|
|
19
19
|
|
|
20
|
-
from
|
|
21
|
-
from
|
|
22
|
-
from
|
|
23
|
-
from
|
|
24
|
-
from
|
|
20
|
+
from nat.profiler.forecasting.config import DEFAULT_MODEL_TYPE
|
|
21
|
+
from nat.profiler.forecasting.models import ForecastingBaseModel
|
|
22
|
+
from nat.profiler.forecasting.models import LinearModel
|
|
23
|
+
from nat.profiler.forecasting.models import RandomForestModel
|
|
24
|
+
from nat.profiler.intermediate_property_adapter import IntermediatePropertyAdaptor
|
|
25
25
|
|
|
26
26
|
logger = logging.getLogger(__name__)
|
|
27
27
|
|
|
@@ -17,8 +17,8 @@ import logging
|
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
|
20
|
-
from
|
|
21
|
-
from
|
|
20
|
+
from nat.profiler.forecasting.models.forecasting_base_model import ForecastingBaseModel
|
|
21
|
+
from nat.profiler.intermediate_property_adapter import IntermediatePropertyAdaptor
|
|
22
22
|
|
|
23
23
|
logger = logging.getLogger(__name__)
|
|
24
24
|
|
|
@@ -34,8 +34,9 @@ class LinearModel(ForecastingBaseModel):
|
|
|
34
34
|
try:
|
|
35
35
|
from sklearn.linear_model import LinearRegression
|
|
36
36
|
except ImportError:
|
|
37
|
-
logger.error(
|
|
38
|
-
|
|
37
|
+
logger.error(
|
|
38
|
+
"scikit-learn is not installed. Please install scikit-learn to use the LinearModel "
|
|
39
|
+
"profiling model or install `nvidia-nat[profiler]` to install all necessary profiling packages.")
|
|
39
40
|
|
|
40
41
|
raise
|
|
41
42
|
|
|
@@ -17,8 +17,8 @@ import logging
|
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
|
20
|
-
from
|
|
21
|
-
from
|
|
20
|
+
from nat.profiler.forecasting.models.forecasting_base_model import ForecastingBaseModel
|
|
21
|
+
from nat.profiler.intermediate_property_adapter import IntermediatePropertyAdaptor
|
|
22
22
|
|
|
23
23
|
logger = logging.getLogger(__name__)
|
|
24
24
|
|
|
@@ -34,8 +34,9 @@ class RandomForestModel(ForecastingBaseModel):
|
|
|
34
34
|
try:
|
|
35
35
|
from sklearn.ensemble import RandomForestRegressor
|
|
36
36
|
except ImportError:
|
|
37
|
-
logger.error(
|
|
38
|
-
|
|
37
|
+
logger.error(
|
|
38
|
+
"scikit-learn is not installed. Please install scikit-learn to use the RandomForest "
|
|
39
|
+
"profiling model or install `nvidia-nat[profiler]` to install all necessary profiling packages.")
|
|
39
40
|
|
|
40
41
|
raise
|
|
41
42
|
|
|
@@ -34,12 +34,12 @@ import os
|
|
|
34
34
|
|
|
35
35
|
import pandas as pd
|
|
36
36
|
|
|
37
|
-
from
|
|
38
|
-
from
|
|
39
|
-
from
|
|
40
|
-
from
|
|
41
|
-
from
|
|
42
|
-
from
|
|
37
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
38
|
+
from nat.profiler.inference_optimization.data_models import CallNode
|
|
39
|
+
from nat.profiler.inference_optimization.data_models import ConcurrencyDistribution
|
|
40
|
+
from nat.profiler.inference_optimization.data_models import NestedCallProfilingResult
|
|
41
|
+
from nat.profiler.inference_optimization.data_models import NodeMetrics
|
|
42
|
+
from nat.profiler.utils import create_standardized_dataframe
|
|
43
43
|
|
|
44
44
|
logger = logging.getLogger(__name__)
|
|
45
45
|
|
|
@@ -304,7 +304,7 @@ def save_gantt_chart(all_nodes: list[CallNode], output_path: str) -> None:
|
|
|
304
304
|
import matplotlib.pyplot as plt
|
|
305
305
|
except ImportError:
|
|
306
306
|
logger.error("matplotlib is not installed. Please install matplotlib to use generate plots for the profiler "
|
|
307
|
-
"or install `
|
|
307
|
+
"or install `nvidia-nat[profiler]` to install all necessary profiling packages.")
|
|
308
308
|
|
|
309
309
|
raise
|
|
310
310
|
|
|
@@ -28,10 +28,10 @@ then analyze concurrency and produce a summary report.
|
|
|
28
28
|
import numpy as np
|
|
29
29
|
import pandas as pd
|
|
30
30
|
|
|
31
|
-
from
|
|
32
|
-
from
|
|
33
|
-
from
|
|
34
|
-
from
|
|
31
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
32
|
+
from nat.profiler.inference_optimization.data_models import SimpleBottleneckReport
|
|
33
|
+
from nat.profiler.inference_optimization.data_models import SimpleOperationStats
|
|
34
|
+
from nat.profiler.utils import create_standardized_dataframe
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
# ----------------------------------------------------------------------
|
|
@@ -34,12 +34,12 @@ Changes from previous version:
|
|
|
34
34
|
import numpy as np
|
|
35
35
|
import pandas as pd
|
|
36
36
|
|
|
37
|
-
from
|
|
38
|
-
from
|
|
39
|
-
from
|
|
40
|
-
from
|
|
41
|
-
from
|
|
42
|
-
from
|
|
37
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
38
|
+
from nat.profiler.inference_optimization.data_models import ConcurrencyAnalysisResult
|
|
39
|
+
from nat.profiler.inference_optimization.data_models import ConcurrencyCallNode
|
|
40
|
+
from nat.profiler.inference_optimization.data_models import ConcurrencyCorrelationStats
|
|
41
|
+
from nat.profiler.inference_optimization.data_models import ConcurrencySpikeInfo
|
|
42
|
+
from nat.profiler.utils import create_standardized_dataframe
|
|
43
43
|
|
|
44
44
|
# --------------------------------------------------------------------------------
|
|
45
45
|
# 1) Building the Per-Example Call Trees
|
|
@@ -32,11 +32,11 @@ import logging
|
|
|
32
32
|
import numpy as np
|
|
33
33
|
import pandas as pd
|
|
34
34
|
|
|
35
|
-
from
|
|
36
|
-
from
|
|
37
|
-
from
|
|
38
|
-
from
|
|
39
|
-
from
|
|
35
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
36
|
+
from nat.profiler.inference_optimization.data_models import FrequentPattern
|
|
37
|
+
from nat.profiler.inference_optimization.data_models import PrefixCallNode
|
|
38
|
+
from nat.profiler.inference_optimization.data_models import PrefixSpanSubworkflowResult
|
|
39
|
+
from nat.profiler.utils import create_standardized_dataframe
|
|
40
40
|
|
|
41
41
|
logger = logging.getLogger(__name__)
|
|
42
42
|
|
|
@@ -212,7 +212,7 @@ def run_prefixspan(sequences_map: dict[int, list[PrefixCallNode]],
|
|
|
212
212
|
from prefixspan import PrefixSpan
|
|
213
213
|
except ImportError:
|
|
214
214
|
logger.error("prefixspan is not installed. Please install prefixspan to run the prefix analysis in the "
|
|
215
|
-
"profiler or install `
|
|
215
|
+
"profiler or install `nvidia-nat[profiler]` to install all necessary profiling packages.")
|
|
216
216
|
|
|
217
217
|
raise
|
|
218
218
|
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
import numpy as np
|
|
17
17
|
import pandas as pd
|
|
18
18
|
|
|
19
|
-
from
|
|
20
|
-
from
|
|
19
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
20
|
+
from nat.profiler.utils import create_standardized_dataframe
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class LLMMetrics:
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
-
from
|
|
17
|
-
from
|
|
18
|
-
from
|
|
19
|
-
from
|
|
20
|
-
from
|
|
16
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
17
|
+
from nat.profiler.inference_optimization.data_models import CommonPrefixesOutput
|
|
18
|
+
from nat.profiler.inference_optimization.data_models import FrameworkLLMPrefixData
|
|
19
|
+
from nat.profiler.inference_optimization.data_models import PrefixInfo
|
|
20
|
+
from nat.profiler.utils import create_standardized_dataframe
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
# -----------------------------------------------------------
|
|
@@ -17,10 +17,10 @@ import re
|
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
|
|
20
|
-
from
|
|
21
|
-
from
|
|
22
|
-
from
|
|
23
|
-
from
|
|
20
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
21
|
+
from nat.profiler.inference_optimization.data_models import LLMUniquenessMetrics
|
|
22
|
+
from nat.profiler.inference_optimization.data_models import LLMUniquenessMetricsByLLM
|
|
23
|
+
from nat.profiler.utils import create_standardized_dataframe
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
# ----------------------------------------------------------------
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
|
|
16
16
|
import numpy as np
|
|
17
17
|
|
|
18
|
-
from
|
|
19
|
-
from
|
|
20
|
-
from
|
|
18
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
19
|
+
from nat.profiler.inference_optimization.data_models import WorkflowRuntimeMetrics
|
|
20
|
+
from nat.profiler.utils import create_standardized_dataframe
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def compute_workflow_runtime_metrics(all_steps: list[list[IntermediateStep]]) -> WorkflowRuntimeMetrics:
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
-
from
|
|
17
|
-
from
|
|
18
|
-
from
|
|
16
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
17
|
+
from nat.data_models.intermediate_step import IntermediateStepType
|
|
18
|
+
from nat.data_models.intermediate_step import TokenUsageBaseModel
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class IntermediatePropertyAdaptor(IntermediateStep):
|
|
@@ -23,13 +23,13 @@ from typing import Any
|
|
|
23
23
|
|
|
24
24
|
from pydantic import BaseModel
|
|
25
25
|
|
|
26
|
-
from
|
|
27
|
-
from
|
|
28
|
-
from
|
|
29
|
-
from
|
|
30
|
-
from
|
|
31
|
-
from
|
|
32
|
-
from
|
|
26
|
+
from nat.data_models.evaluate import ProfilerConfig
|
|
27
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
28
|
+
from nat.profiler.data_models import ProfilerResults
|
|
29
|
+
from nat.profiler.forecasting.model_trainer import ModelTrainer
|
|
30
|
+
from nat.profiler.inference_metrics_model import InferenceMetricsModel
|
|
31
|
+
from nat.profiler.utils import create_standardized_dataframe
|
|
32
|
+
from nat.utils.type_converter import TypeConverter
|
|
33
33
|
|
|
34
34
|
logger = logging.getLogger(__name__)
|
|
35
35
|
|
|
@@ -49,7 +49,7 @@ class InferenceOptimizationHolder(BaseModel):
|
|
|
49
49
|
|
|
50
50
|
class ProfilerRunner:
|
|
51
51
|
"""
|
|
52
|
-
A utility to run a series of prompts through
|
|
52
|
+
A utility to run a series of prompts through a NAT workflow for profiling:
|
|
53
53
|
|
|
54
54
|
- can load prompts from a file
|
|
55
55
|
- or generate them via an LLM
|
|
@@ -88,19 +88,19 @@ class ProfilerRunner:
|
|
|
88
88
|
writes out combined requests JSON, then computes and saves additional metrics,
|
|
89
89
|
and optionally fits a forecasting model.
|
|
90
90
|
"""
|
|
91
|
-
from
|
|
91
|
+
from nat.profiler.inference_optimization.bottleneck_analysis.nested_stack_analysis import \
|
|
92
92
|
multi_example_call_profiling
|
|
93
|
-
from
|
|
93
|
+
from nat.profiler.inference_optimization.bottleneck_analysis.simple_stack_analysis import \
|
|
94
94
|
profile_workflow_bottlenecks
|
|
95
|
-
from
|
|
95
|
+
from nat.profiler.inference_optimization.experimental.concurrency_spike_analysis import \
|
|
96
96
|
concurrency_spike_analysis
|
|
97
|
-
from
|
|
97
|
+
from nat.profiler.inference_optimization.experimental.prefix_span_analysis import \
|
|
98
98
|
prefixspan_subworkflow_with_text
|
|
99
|
-
from
|
|
100
|
-
from
|
|
101
|
-
from
|
|
102
|
-
from
|
|
103
|
-
from
|
|
99
|
+
from nat.profiler.inference_optimization.llm_metrics import LLMMetrics
|
|
100
|
+
from nat.profiler.inference_optimization.prompt_caching import get_common_prefixes
|
|
101
|
+
from nat.profiler.inference_optimization.token_uniqueness import compute_inter_query_token_uniqueness_by_llm
|
|
102
|
+
from nat.profiler.inference_optimization.workflow_runtimes import compute_workflow_runtime_metrics
|
|
103
|
+
from nat.profiler.intermediate_property_adapter import IntermediatePropertyAdaptor
|
|
104
104
|
|
|
105
105
|
# Convert the incoming DataFrame to a list of dicts and store
|
|
106
106
|
all_steps = [[IntermediatePropertyAdaptor.from_intermediate_step(step) for step in steps]
|
{aiq → nat}/profiler/utils.py
RENAMED
|
@@ -21,10 +21,10 @@ from typing import Any
|
|
|
21
21
|
|
|
22
22
|
import pandas as pd
|
|
23
23
|
|
|
24
|
-
from
|
|
25
|
-
from
|
|
26
|
-
from
|
|
27
|
-
from
|
|
24
|
+
from nat.builder.framework_enum import LLMFrameworkEnum
|
|
25
|
+
from nat.cli.type_registry import RegisteredFunctionInfo
|
|
26
|
+
from nat.data_models.intermediate_step import IntermediateStep
|
|
27
|
+
from nat.profiler.data_frame_row import DataFrameRow
|
|
28
28
|
|
|
29
29
|
# A simple set of regex patterns to scan for direct references to LLMFrameworkEnum
|
|
30
30
|
_FRAMEWORK_REGEX_MAP = {t: fr'\b{t._name_}\b' for t in LLMFrameworkEnum}
|