aiqtoolkit 1.1.0a20250503__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.

Potentially problematic release.


This version of aiqtoolkit might be problematic. Click here for more details.

Files changed (314) hide show
  1. aiq/agent/__init__.py +0 -0
  2. aiq/agent/base.py +76 -0
  3. aiq/agent/dual_node.py +67 -0
  4. aiq/agent/react_agent/__init__.py +0 -0
  5. aiq/agent/react_agent/agent.py +322 -0
  6. aiq/agent/react_agent/output_parser.py +104 -0
  7. aiq/agent/react_agent/prompt.py +46 -0
  8. aiq/agent/react_agent/register.py +148 -0
  9. aiq/agent/reasoning_agent/__init__.py +0 -0
  10. aiq/agent/reasoning_agent/reasoning_agent.py +224 -0
  11. aiq/agent/register.py +23 -0
  12. aiq/agent/rewoo_agent/__init__.py +0 -0
  13. aiq/agent/rewoo_agent/agent.py +410 -0
  14. aiq/agent/rewoo_agent/prompt.py +108 -0
  15. aiq/agent/rewoo_agent/register.py +158 -0
  16. aiq/agent/tool_calling_agent/__init__.py +0 -0
  17. aiq/agent/tool_calling_agent/agent.py +123 -0
  18. aiq/agent/tool_calling_agent/register.py +105 -0
  19. aiq/builder/__init__.py +0 -0
  20. aiq/builder/builder.py +223 -0
  21. aiq/builder/component_utils.py +303 -0
  22. aiq/builder/context.py +212 -0
  23. aiq/builder/embedder.py +24 -0
  24. aiq/builder/eval_builder.py +116 -0
  25. aiq/builder/evaluator.py +29 -0
  26. aiq/builder/framework_enum.py +24 -0
  27. aiq/builder/front_end.py +73 -0
  28. aiq/builder/function.py +297 -0
  29. aiq/builder/function_base.py +376 -0
  30. aiq/builder/function_info.py +627 -0
  31. aiq/builder/intermediate_step_manager.py +127 -0
  32. aiq/builder/llm.py +25 -0
  33. aiq/builder/retriever.py +25 -0
  34. aiq/builder/user_interaction_manager.py +71 -0
  35. aiq/builder/workflow.py +143 -0
  36. aiq/builder/workflow_builder.py +749 -0
  37. aiq/cli/__init__.py +14 -0
  38. aiq/cli/cli_utils/__init__.py +0 -0
  39. aiq/cli/cli_utils/config_override.py +233 -0
  40. aiq/cli/cli_utils/validation.py +37 -0
  41. aiq/cli/commands/__init__.py +0 -0
  42. aiq/cli/commands/configure/__init__.py +0 -0
  43. aiq/cli/commands/configure/channel/__init__.py +0 -0
  44. aiq/cli/commands/configure/channel/add.py +28 -0
  45. aiq/cli/commands/configure/channel/channel.py +36 -0
  46. aiq/cli/commands/configure/channel/remove.py +30 -0
  47. aiq/cli/commands/configure/channel/update.py +30 -0
  48. aiq/cli/commands/configure/configure.py +33 -0
  49. aiq/cli/commands/evaluate.py +139 -0
  50. aiq/cli/commands/info/__init__.py +14 -0
  51. aiq/cli/commands/info/info.py +37 -0
  52. aiq/cli/commands/info/list_channels.py +32 -0
  53. aiq/cli/commands/info/list_components.py +129 -0
  54. aiq/cli/commands/registry/__init__.py +14 -0
  55. aiq/cli/commands/registry/publish.py +88 -0
  56. aiq/cli/commands/registry/pull.py +118 -0
  57. aiq/cli/commands/registry/registry.py +38 -0
  58. aiq/cli/commands/registry/remove.py +108 -0
  59. aiq/cli/commands/registry/search.py +155 -0
  60. aiq/cli/commands/start.py +250 -0
  61. aiq/cli/commands/uninstall.py +83 -0
  62. aiq/cli/commands/validate.py +47 -0
  63. aiq/cli/commands/workflow/__init__.py +14 -0
  64. aiq/cli/commands/workflow/templates/__init__.py.j2 +0 -0
  65. aiq/cli/commands/workflow/templates/config.yml.j2 +16 -0
  66. aiq/cli/commands/workflow/templates/pyproject.toml.j2 +22 -0
  67. aiq/cli/commands/workflow/templates/register.py.j2 +5 -0
  68. aiq/cli/commands/workflow/templates/workflow.py.j2 +36 -0
  69. aiq/cli/commands/workflow/workflow.py +37 -0
  70. aiq/cli/commands/workflow/workflow_commands.py +313 -0
  71. aiq/cli/entrypoint.py +133 -0
  72. aiq/cli/main.py +44 -0
  73. aiq/cli/register_workflow.py +408 -0
  74. aiq/cli/type_registry.py +879 -0
  75. aiq/data_models/__init__.py +14 -0
  76. aiq/data_models/api_server.py +588 -0
  77. aiq/data_models/common.py +143 -0
  78. aiq/data_models/component.py +46 -0
  79. aiq/data_models/component_ref.py +135 -0
  80. aiq/data_models/config.py +349 -0
  81. aiq/data_models/dataset_handler.py +122 -0
  82. aiq/data_models/discovery_metadata.py +269 -0
  83. aiq/data_models/embedder.py +26 -0
  84. aiq/data_models/evaluate.py +104 -0
  85. aiq/data_models/evaluator.py +26 -0
  86. aiq/data_models/front_end.py +26 -0
  87. aiq/data_models/function.py +30 -0
  88. aiq/data_models/function_dependencies.py +64 -0
  89. aiq/data_models/interactive.py +237 -0
  90. aiq/data_models/intermediate_step.py +269 -0
  91. aiq/data_models/invocation_node.py +38 -0
  92. aiq/data_models/llm.py +26 -0
  93. aiq/data_models/logging.py +26 -0
  94. aiq/data_models/memory.py +26 -0
  95. aiq/data_models/profiler.py +53 -0
  96. aiq/data_models/registry_handler.py +26 -0
  97. aiq/data_models/retriever.py +30 -0
  98. aiq/data_models/step_adaptor.py +64 -0
  99. aiq/data_models/streaming.py +33 -0
  100. aiq/data_models/swe_bench_model.py +54 -0
  101. aiq/data_models/telemetry_exporter.py +26 -0
  102. aiq/embedder/__init__.py +0 -0
  103. aiq/embedder/langchain_client.py +41 -0
  104. aiq/embedder/nim_embedder.py +58 -0
  105. aiq/embedder/openai_embedder.py +42 -0
  106. aiq/embedder/register.py +24 -0
  107. aiq/eval/__init__.py +14 -0
  108. aiq/eval/config.py +42 -0
  109. aiq/eval/dataset_handler/__init__.py +0 -0
  110. aiq/eval/dataset_handler/dataset_downloader.py +106 -0
  111. aiq/eval/dataset_handler/dataset_filter.py +52 -0
  112. aiq/eval/dataset_handler/dataset_handler.py +169 -0
  113. aiq/eval/evaluate.py +323 -0
  114. aiq/eval/evaluator/__init__.py +14 -0
  115. aiq/eval/evaluator/evaluator_model.py +44 -0
  116. aiq/eval/intermediate_step_adapter.py +93 -0
  117. aiq/eval/rag_evaluator/__init__.py +0 -0
  118. aiq/eval/rag_evaluator/evaluate.py +138 -0
  119. aiq/eval/rag_evaluator/register.py +138 -0
  120. aiq/eval/register.py +23 -0
  121. aiq/eval/remote_workflow.py +128 -0
  122. aiq/eval/runtime_event_subscriber.py +52 -0
  123. aiq/eval/swe_bench_evaluator/__init__.py +0 -0
  124. aiq/eval/swe_bench_evaluator/evaluate.py +215 -0
  125. aiq/eval/swe_bench_evaluator/register.py +36 -0
  126. aiq/eval/trajectory_evaluator/__init__.py +0 -0
  127. aiq/eval/trajectory_evaluator/evaluate.py +118 -0
  128. aiq/eval/trajectory_evaluator/register.py +40 -0
  129. aiq/eval/tunable_rag_evaluator/__init__.py +0 -0
  130. aiq/eval/tunable_rag_evaluator/evaluate.py +263 -0
  131. aiq/eval/tunable_rag_evaluator/register.py +50 -0
  132. aiq/eval/utils/__init__.py +0 -0
  133. aiq/eval/utils/output_uploader.py +131 -0
  134. aiq/eval/utils/tqdm_position_registry.py +40 -0
  135. aiq/front_ends/__init__.py +14 -0
  136. aiq/front_ends/console/__init__.py +14 -0
  137. aiq/front_ends/console/console_front_end_config.py +32 -0
  138. aiq/front_ends/console/console_front_end_plugin.py +107 -0
  139. aiq/front_ends/console/register.py +25 -0
  140. aiq/front_ends/cron/__init__.py +14 -0
  141. aiq/front_ends/fastapi/__init__.py +14 -0
  142. aiq/front_ends/fastapi/fastapi_front_end_config.py +150 -0
  143. aiq/front_ends/fastapi/fastapi_front_end_plugin.py +103 -0
  144. aiq/front_ends/fastapi/fastapi_front_end_plugin_worker.py +607 -0
  145. aiq/front_ends/fastapi/intermediate_steps_subscriber.py +80 -0
  146. aiq/front_ends/fastapi/job_store.py +161 -0
  147. aiq/front_ends/fastapi/main.py +70 -0
  148. aiq/front_ends/fastapi/message_handler.py +279 -0
  149. aiq/front_ends/fastapi/message_validator.py +345 -0
  150. aiq/front_ends/fastapi/register.py +25 -0
  151. aiq/front_ends/fastapi/response_helpers.py +195 -0
  152. aiq/front_ends/fastapi/step_adaptor.py +315 -0
  153. aiq/front_ends/fastapi/websocket.py +148 -0
  154. aiq/front_ends/mcp/__init__.py +14 -0
  155. aiq/front_ends/mcp/mcp_front_end_config.py +32 -0
  156. aiq/front_ends/mcp/mcp_front_end_plugin.py +93 -0
  157. aiq/front_ends/mcp/register.py +27 -0
  158. aiq/front_ends/mcp/tool_converter.py +242 -0
  159. aiq/front_ends/register.py +22 -0
  160. aiq/front_ends/simple_base/__init__.py +14 -0
  161. aiq/front_ends/simple_base/simple_front_end_plugin_base.py +52 -0
  162. aiq/llm/__init__.py +0 -0
  163. aiq/llm/nim_llm.py +45 -0
  164. aiq/llm/openai_llm.py +45 -0
  165. aiq/llm/register.py +22 -0
  166. aiq/llm/utils/__init__.py +14 -0
  167. aiq/llm/utils/env_config_value.py +94 -0
  168. aiq/llm/utils/error.py +17 -0
  169. aiq/memory/__init__.py +20 -0
  170. aiq/memory/interfaces.py +183 -0
  171. aiq/memory/models.py +102 -0
  172. aiq/meta/module_to_distro.json +3 -0
  173. aiq/meta/pypi.md +59 -0
  174. aiq/observability/__init__.py +0 -0
  175. aiq/observability/async_otel_listener.py +433 -0
  176. aiq/observability/register.py +99 -0
  177. aiq/plugins/.namespace +1 -0
  178. aiq/profiler/__init__.py +0 -0
  179. aiq/profiler/callbacks/__init__.py +0 -0
  180. aiq/profiler/callbacks/agno_callback_handler.py +295 -0
  181. aiq/profiler/callbacks/base_callback_class.py +20 -0
  182. aiq/profiler/callbacks/langchain_callback_handler.py +278 -0
  183. aiq/profiler/callbacks/llama_index_callback_handler.py +205 -0
  184. aiq/profiler/callbacks/semantic_kernel_callback_handler.py +238 -0
  185. aiq/profiler/callbacks/token_usage_base_model.py +27 -0
  186. aiq/profiler/data_frame_row.py +51 -0
  187. aiq/profiler/decorators/__init__.py +0 -0
  188. aiq/profiler/decorators/framework_wrapper.py +131 -0
  189. aiq/profiler/decorators/function_tracking.py +254 -0
  190. aiq/profiler/forecasting/__init__.py +0 -0
  191. aiq/profiler/forecasting/config.py +18 -0
  192. aiq/profiler/forecasting/model_trainer.py +75 -0
  193. aiq/profiler/forecasting/models/__init__.py +22 -0
  194. aiq/profiler/forecasting/models/forecasting_base_model.py +40 -0
  195. aiq/profiler/forecasting/models/linear_model.py +196 -0
  196. aiq/profiler/forecasting/models/random_forest_regressor.py +268 -0
  197. aiq/profiler/inference_metrics_model.py +25 -0
  198. aiq/profiler/inference_optimization/__init__.py +0 -0
  199. aiq/profiler/inference_optimization/bottleneck_analysis/__init__.py +0 -0
  200. aiq/profiler/inference_optimization/bottleneck_analysis/nested_stack_analysis.py +452 -0
  201. aiq/profiler/inference_optimization/bottleneck_analysis/simple_stack_analysis.py +258 -0
  202. aiq/profiler/inference_optimization/data_models.py +386 -0
  203. aiq/profiler/inference_optimization/experimental/__init__.py +0 -0
  204. aiq/profiler/inference_optimization/experimental/concurrency_spike_analysis.py +468 -0
  205. aiq/profiler/inference_optimization/experimental/prefix_span_analysis.py +405 -0
  206. aiq/profiler/inference_optimization/llm_metrics.py +212 -0
  207. aiq/profiler/inference_optimization/prompt_caching.py +163 -0
  208. aiq/profiler/inference_optimization/token_uniqueness.py +107 -0
  209. aiq/profiler/inference_optimization/workflow_runtimes.py +72 -0
  210. aiq/profiler/intermediate_property_adapter.py +102 -0
  211. aiq/profiler/profile_runner.py +433 -0
  212. aiq/profiler/utils.py +184 -0
  213. aiq/registry_handlers/__init__.py +0 -0
  214. aiq/registry_handlers/local/__init__.py +0 -0
  215. aiq/registry_handlers/local/local_handler.py +176 -0
  216. aiq/registry_handlers/local/register_local.py +37 -0
  217. aiq/registry_handlers/metadata_factory.py +60 -0
  218. aiq/registry_handlers/package_utils.py +198 -0
  219. aiq/registry_handlers/pypi/__init__.py +0 -0
  220. aiq/registry_handlers/pypi/pypi_handler.py +251 -0
  221. aiq/registry_handlers/pypi/register_pypi.py +40 -0
  222. aiq/registry_handlers/register.py +21 -0
  223. aiq/registry_handlers/registry_handler_base.py +157 -0
  224. aiq/registry_handlers/rest/__init__.py +0 -0
  225. aiq/registry_handlers/rest/register_rest.py +56 -0
  226. aiq/registry_handlers/rest/rest_handler.py +237 -0
  227. aiq/registry_handlers/schemas/__init__.py +0 -0
  228. aiq/registry_handlers/schemas/headers.py +42 -0
  229. aiq/registry_handlers/schemas/package.py +68 -0
  230. aiq/registry_handlers/schemas/publish.py +63 -0
  231. aiq/registry_handlers/schemas/pull.py +82 -0
  232. aiq/registry_handlers/schemas/remove.py +36 -0
  233. aiq/registry_handlers/schemas/search.py +91 -0
  234. aiq/registry_handlers/schemas/status.py +47 -0
  235. aiq/retriever/__init__.py +0 -0
  236. aiq/retriever/interface.py +37 -0
  237. aiq/retriever/milvus/__init__.py +14 -0
  238. aiq/retriever/milvus/register.py +81 -0
  239. aiq/retriever/milvus/retriever.py +228 -0
  240. aiq/retriever/models.py +74 -0
  241. aiq/retriever/nemo_retriever/__init__.py +14 -0
  242. aiq/retriever/nemo_retriever/register.py +60 -0
  243. aiq/retriever/nemo_retriever/retriever.py +190 -0
  244. aiq/retriever/register.py +22 -0
  245. aiq/runtime/__init__.py +14 -0
  246. aiq/runtime/loader.py +188 -0
  247. aiq/runtime/runner.py +176 -0
  248. aiq/runtime/session.py +136 -0
  249. aiq/runtime/user_metadata.py +131 -0
  250. aiq/settings/__init__.py +0 -0
  251. aiq/settings/global_settings.py +318 -0
  252. aiq/test/.namespace +1 -0
  253. aiq/tool/__init__.py +0 -0
  254. aiq/tool/code_execution/__init__.py +0 -0
  255. aiq/tool/code_execution/code_sandbox.py +188 -0
  256. aiq/tool/code_execution/local_sandbox/Dockerfile.sandbox +60 -0
  257. aiq/tool/code_execution/local_sandbox/__init__.py +13 -0
  258. aiq/tool/code_execution/local_sandbox/local_sandbox_server.py +79 -0
  259. aiq/tool/code_execution/local_sandbox/sandbox.requirements.txt +4 -0
  260. aiq/tool/code_execution/local_sandbox/start_local_sandbox.sh +25 -0
  261. aiq/tool/code_execution/register.py +70 -0
  262. aiq/tool/code_execution/utils.py +100 -0
  263. aiq/tool/datetime_tools.py +42 -0
  264. aiq/tool/document_search.py +141 -0
  265. aiq/tool/github_tools/__init__.py +0 -0
  266. aiq/tool/github_tools/create_github_commit.py +133 -0
  267. aiq/tool/github_tools/create_github_issue.py +87 -0
  268. aiq/tool/github_tools/create_github_pr.py +106 -0
  269. aiq/tool/github_tools/get_github_file.py +106 -0
  270. aiq/tool/github_tools/get_github_issue.py +166 -0
  271. aiq/tool/github_tools/get_github_pr.py +256 -0
  272. aiq/tool/github_tools/update_github_issue.py +100 -0
  273. aiq/tool/mcp/__init__.py +14 -0
  274. aiq/tool/mcp/mcp_client.py +220 -0
  275. aiq/tool/mcp/mcp_tool.py +76 -0
  276. aiq/tool/memory_tools/__init__.py +0 -0
  277. aiq/tool/memory_tools/add_memory_tool.py +67 -0
  278. aiq/tool/memory_tools/delete_memory_tool.py +67 -0
  279. aiq/tool/memory_tools/get_memory_tool.py +72 -0
  280. aiq/tool/nvidia_rag.py +95 -0
  281. aiq/tool/register.py +36 -0
  282. aiq/tool/retriever.py +89 -0
  283. aiq/utils/__init__.py +0 -0
  284. aiq/utils/data_models/__init__.py +0 -0
  285. aiq/utils/data_models/schema_validator.py +58 -0
  286. aiq/utils/debugging_utils.py +43 -0
  287. aiq/utils/exception_handlers/__init__.py +0 -0
  288. aiq/utils/exception_handlers/schemas.py +114 -0
  289. aiq/utils/io/__init__.py +0 -0
  290. aiq/utils/io/yaml_tools.py +119 -0
  291. aiq/utils/metadata_utils.py +74 -0
  292. aiq/utils/optional_imports.py +142 -0
  293. aiq/utils/producer_consumer_queue.py +178 -0
  294. aiq/utils/reactive/__init__.py +0 -0
  295. aiq/utils/reactive/base/__init__.py +0 -0
  296. aiq/utils/reactive/base/observable_base.py +65 -0
  297. aiq/utils/reactive/base/observer_base.py +55 -0
  298. aiq/utils/reactive/base/subject_base.py +79 -0
  299. aiq/utils/reactive/observable.py +59 -0
  300. aiq/utils/reactive/observer.py +76 -0
  301. aiq/utils/reactive/subject.py +131 -0
  302. aiq/utils/reactive/subscription.py +49 -0
  303. aiq/utils/settings/__init__.py +0 -0
  304. aiq/utils/settings/global_settings.py +197 -0
  305. aiq/utils/type_converter.py +232 -0
  306. aiq/utils/type_utils.py +397 -0
  307. aiq/utils/url_utils.py +27 -0
  308. aiqtoolkit-1.1.0a20250503.dist-info/METADATA +330 -0
  309. aiqtoolkit-1.1.0a20250503.dist-info/RECORD +314 -0
  310. aiqtoolkit-1.1.0a20250503.dist-info/WHEEL +5 -0
  311. aiqtoolkit-1.1.0a20250503.dist-info/entry_points.txt +17 -0
  312. aiqtoolkit-1.1.0a20250503.dist-info/licenses/LICENSE-3rd-party.txt +3686 -0
  313. aiqtoolkit-1.1.0a20250503.dist-info/licenses/LICENSE.md +201 -0
  314. aiqtoolkit-1.1.0a20250503.dist-info/top_level.txt +1 -0
@@ -0,0 +1,408 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ from contextlib import asynccontextmanager
17
+
18
+ from aiq.builder.framework_enum import LLMFrameworkEnum
19
+ from aiq.cli.type_registry import EmbedderClientBuildCallableT
20
+ from aiq.cli.type_registry import EmbedderClientRegisteredCallableT
21
+ from aiq.cli.type_registry import EmbedderProviderBuildCallableT
22
+ from aiq.cli.type_registry import EmbedderProviderRegisteredCallableT
23
+ from aiq.cli.type_registry import EvaluatorBuildCallableT
24
+ from aiq.cli.type_registry import EvaluatorRegisteredCallableT
25
+ from aiq.cli.type_registry import FrontEndBuildCallableT
26
+ from aiq.cli.type_registry import FrontEndRegisteredCallableT
27
+ from aiq.cli.type_registry import FunctionBuildCallableT
28
+ from aiq.cli.type_registry import FunctionRegisteredCallableT
29
+ from aiq.cli.type_registry import LLMClientBuildCallableT
30
+ from aiq.cli.type_registry import LLMClientRegisteredCallableT
31
+ from aiq.cli.type_registry import LLMProviderBuildCallableT
32
+ from aiq.cli.type_registry import LoggingMethodBuildCallableT
33
+ from aiq.cli.type_registry import LoggingMethodConfigT
34
+ from aiq.cli.type_registry import LoggingMethodRegisteredCallableT
35
+ from aiq.cli.type_registry import MemoryBuildCallableT
36
+ from aiq.cli.type_registry import MemoryRegisteredCallableT
37
+ from aiq.cli.type_registry import RegisteredLoggingMethod
38
+ from aiq.cli.type_registry import RegisteredTelemetryExporter
39
+ from aiq.cli.type_registry import RegisteredToolWrapper
40
+ from aiq.cli.type_registry import RegistryHandlerBuildCallableT
41
+ from aiq.cli.type_registry import RegistryHandlerRegisteredCallableT
42
+ from aiq.cli.type_registry import RetrieverClientBuildCallableT
43
+ from aiq.cli.type_registry import RetrieverClientRegisteredCallableT
44
+ from aiq.cli.type_registry import RetrieverProviderBuildCallableT
45
+ from aiq.cli.type_registry import RetrieverProviderRegisteredCallableT
46
+ from aiq.cli.type_registry import TeleExporterRegisteredCallableT
47
+ from aiq.cli.type_registry import TelemetryExporterBuildCallableT
48
+ from aiq.cli.type_registry import TelemetryExporterConfigT
49
+ from aiq.cli.type_registry import ToolWrapperBuildCallableT
50
+ from aiq.data_models.component import AIQComponentEnum
51
+ from aiq.data_models.discovery_metadata import DiscoveryMetadata
52
+ from aiq.data_models.embedder import EmbedderBaseConfigT
53
+ from aiq.data_models.evaluator import EvaluatorBaseConfigT
54
+ from aiq.data_models.front_end import FrontEndConfigT
55
+ from aiq.data_models.function import FunctionConfigT
56
+ from aiq.data_models.llm import LLMBaseConfigT
57
+ from aiq.data_models.memory import MemoryBaseConfigT
58
+ from aiq.data_models.registry_handler import RegistryHandlerBaseConfigT
59
+ from aiq.data_models.retriever import RetrieverBaseConfigT
60
+
61
+
62
+ def register_telemetry_exporter(config_type: type[TelemetryExporterConfigT]):
63
+ """
64
+ Register a workflow with optional framework_wrappers for automatic profiler hooking.
65
+ """
66
+
67
+ def register_inner(
68
+ fn: TelemetryExporterBuildCallableT[TelemetryExporterConfigT]
69
+ ) -> TeleExporterRegisteredCallableT[TelemetryExporterConfigT]:
70
+ from .type_registry import GlobalTypeRegistry
71
+
72
+ context_manager_fn = asynccontextmanager(fn)
73
+
74
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
75
+ component_type=AIQComponentEnum.TRACING)
76
+
77
+ GlobalTypeRegistry.get().register_telemetry_exporter(
78
+ RegisteredTelemetryExporter(full_type=config_type.full_type,
79
+ config_type=config_type,
80
+ build_fn=context_manager_fn,
81
+ discovery_metadata=discovery_metadata))
82
+
83
+ return context_manager_fn
84
+
85
+ return register_inner
86
+
87
+
88
+ def register_logging_method(config_type: type[LoggingMethodConfigT]):
89
+
90
+ def register_inner(
91
+ fn: LoggingMethodBuildCallableT[LoggingMethodConfigT]
92
+ ) -> LoggingMethodRegisteredCallableT[LoggingMethodConfigT]:
93
+ from .type_registry import GlobalTypeRegistry
94
+
95
+ context_manager_fn = asynccontextmanager(fn)
96
+
97
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
98
+ component_type=AIQComponentEnum.LOGGING)
99
+
100
+ GlobalTypeRegistry.get().register_logging_method(
101
+ RegisteredLoggingMethod(full_type=config_type.full_type,
102
+ config_type=config_type,
103
+ build_fn=context_manager_fn,
104
+ discovery_metadata=discovery_metadata))
105
+
106
+ return context_manager_fn
107
+
108
+ return register_inner
109
+
110
+
111
+ def register_front_end(config_type: type[FrontEndConfigT]):
112
+ """
113
+ Register a front end which is responsible for hosting a workflow.
114
+ """
115
+
116
+ def register_front_end_inner(
117
+ fn: FrontEndBuildCallableT[FrontEndConfigT]) -> FrontEndRegisteredCallableT[FrontEndConfigT]:
118
+ from .type_registry import GlobalTypeRegistry
119
+ from .type_registry import RegisteredFrontEndInfo
120
+
121
+ context_manager_fn = asynccontextmanager(fn)
122
+
123
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
124
+ component_type=AIQComponentEnum.FRONT_END)
125
+
126
+ GlobalTypeRegistry.get().register_front_end(
127
+ RegisteredFrontEndInfo(full_type=config_type.full_type,
128
+ config_type=config_type,
129
+ build_fn=context_manager_fn,
130
+ discovery_metadata=discovery_metadata))
131
+
132
+ return context_manager_fn
133
+
134
+ return register_front_end_inner
135
+
136
+
137
+ def register_function(config_type: type[FunctionConfigT],
138
+ framework_wrappers: list[LLMFrameworkEnum | str] | None = None):
139
+ """
140
+ Register a workflow with optional framework_wrappers for automatic profiler hooking.
141
+ """
142
+
143
+ def register_function_inner(
144
+ fn: FunctionBuildCallableT[FunctionConfigT]) -> FunctionRegisteredCallableT[FunctionConfigT]:
145
+ from .type_registry import GlobalTypeRegistry
146
+ from .type_registry import RegisteredFunctionInfo
147
+
148
+ context_manager_fn = asynccontextmanager(fn)
149
+
150
+ if framework_wrappers is None:
151
+ framework_wrappers_list: list[str] = []
152
+ else:
153
+ framework_wrappers_list = list(framework_wrappers)
154
+
155
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
156
+ component_type=AIQComponentEnum.FUNCTION)
157
+
158
+ GlobalTypeRegistry.get().register_function(
159
+ RegisteredFunctionInfo(
160
+ full_type=config_type.full_type,
161
+ config_type=config_type,
162
+ build_fn=context_manager_fn,
163
+ framework_wrappers=framework_wrappers_list,
164
+ discovery_metadata=discovery_metadata,
165
+ ))
166
+
167
+ return context_manager_fn
168
+
169
+ return register_function_inner
170
+
171
+
172
+ def register_llm_provider(config_type: type[LLMBaseConfigT]):
173
+
174
+ def register_llm_provider_inner(
175
+ fn: LLMProviderBuildCallableT[LLMBaseConfigT]) -> LLMClientRegisteredCallableT[LLMBaseConfigT]:
176
+ from .type_registry import GlobalTypeRegistry
177
+ from .type_registry import RegisteredLLMProviderInfo
178
+
179
+ context_manager_fn = asynccontextmanager(fn)
180
+
181
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
182
+ component_type=AIQComponentEnum.LLM_PROVIDER)
183
+
184
+ GlobalTypeRegistry.get().register_llm_provider(
185
+ RegisteredLLMProviderInfo(full_type=config_type.full_type,
186
+ config_type=config_type,
187
+ build_fn=context_manager_fn,
188
+ discovery_metadata=discovery_metadata))
189
+
190
+ return context_manager_fn
191
+
192
+ return register_llm_provider_inner
193
+
194
+
195
+ def register_llm_client(config_type: type[LLMBaseConfigT], wrapper_type: LLMFrameworkEnum | str):
196
+
197
+ def register_llm_client_inner(
198
+ fn: LLMClientBuildCallableT[LLMBaseConfigT]) -> LLMClientRegisteredCallableT[LLMBaseConfigT]:
199
+ from .type_registry import GlobalTypeRegistry
200
+ from .type_registry import RegisteredLLMClientInfo
201
+
202
+ context_manager_fn = asynccontextmanager(fn)
203
+
204
+ discovery_metadata = DiscoveryMetadata.from_provider_framework_map(config_type=config_type,
205
+ wrapper_type=wrapper_type,
206
+ provider_type=AIQComponentEnum.LLM_PROVIDER,
207
+ component_type=AIQComponentEnum.LLM_CLIENT)
208
+ GlobalTypeRegistry.get().register_llm_client(
209
+ RegisteredLLMClientInfo(full_type=config_type.full_type,
210
+ config_type=config_type,
211
+ build_fn=context_manager_fn,
212
+ llm_framework=wrapper_type,
213
+ discovery_metadata=discovery_metadata))
214
+
215
+ return context_manager_fn
216
+
217
+ return register_llm_client_inner
218
+
219
+
220
+ def register_embedder_provider(config_type: type[EmbedderBaseConfigT]):
221
+
222
+ def register_embedder_provider_inner(
223
+ fn: EmbedderProviderBuildCallableT[EmbedderBaseConfigT]
224
+ ) -> EmbedderProviderRegisteredCallableT[EmbedderBaseConfigT]:
225
+ from .type_registry import GlobalTypeRegistry
226
+ from .type_registry import RegisteredEmbedderProviderInfo
227
+
228
+ context_manager_fn = asynccontextmanager(fn)
229
+
230
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
231
+ component_type=AIQComponentEnum.EMBEDDER_PROVIDER)
232
+
233
+ GlobalTypeRegistry.get().register_embedder_provider(
234
+ RegisteredEmbedderProviderInfo(full_type=config_type.full_type,
235
+ config_type=config_type,
236
+ build_fn=context_manager_fn,
237
+ discovery_metadata=discovery_metadata))
238
+
239
+ return context_manager_fn
240
+
241
+ return register_embedder_provider_inner
242
+
243
+
244
+ def register_embedder_client(config_type: type[EmbedderBaseConfigT], wrapper_type: LLMFrameworkEnum | str):
245
+
246
+ def register_embedder_client_inner(
247
+ fn: EmbedderClientBuildCallableT[EmbedderBaseConfigT]
248
+ ) -> EmbedderClientRegisteredCallableT[EmbedderBaseConfigT]:
249
+ from .type_registry import GlobalTypeRegistry
250
+ from .type_registry import RegisteredEmbedderClientInfo
251
+
252
+ context_manager_fn = asynccontextmanager(fn)
253
+
254
+ discovery_metadata = DiscoveryMetadata.from_provider_framework_map(
255
+ config_type=config_type,
256
+ wrapper_type=wrapper_type,
257
+ provider_type=AIQComponentEnum.EMBEDDER_PROVIDER,
258
+ component_type=AIQComponentEnum.EMBEDDER_CLIENT)
259
+
260
+ GlobalTypeRegistry.get().register_embedder_client(
261
+ RegisteredEmbedderClientInfo(full_type=config_type.full_type,
262
+ config_type=config_type,
263
+ build_fn=context_manager_fn,
264
+ llm_framework=wrapper_type,
265
+ discovery_metadata=discovery_metadata))
266
+
267
+ return context_manager_fn
268
+
269
+ return register_embedder_client_inner
270
+
271
+
272
+ def register_evaluator(config_type: type[EvaluatorBaseConfigT]):
273
+
274
+ def register_evaluator_inner(
275
+ fn: EvaluatorBuildCallableT[EvaluatorBaseConfigT]) -> EvaluatorRegisteredCallableT[EvaluatorBaseConfigT]:
276
+ from .type_registry import GlobalTypeRegistry
277
+ from .type_registry import RegisteredEvaluatorInfo
278
+
279
+ context_manager_fn = asynccontextmanager(fn)
280
+
281
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
282
+ component_type=AIQComponentEnum.EVALUATOR)
283
+
284
+ GlobalTypeRegistry.get().register_evaluator(
285
+ RegisteredEvaluatorInfo(full_type=config_type.full_type,
286
+ config_type=config_type,
287
+ build_fn=context_manager_fn,
288
+ discovery_metadata=discovery_metadata))
289
+
290
+ return context_manager_fn
291
+
292
+ return register_evaluator_inner
293
+
294
+
295
+ def register_memory(config_type: type[MemoryBaseConfigT]):
296
+
297
+ def register_memory_inner(
298
+ fn: MemoryBuildCallableT[MemoryBaseConfigT]) -> MemoryRegisteredCallableT[MemoryBaseConfigT]:
299
+ from .type_registry import GlobalTypeRegistry
300
+ from .type_registry import RegisteredMemoryInfo
301
+
302
+ context_manager_fn = asynccontextmanager(fn)
303
+
304
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
305
+ component_type=AIQComponentEnum.MEMORY)
306
+
307
+ GlobalTypeRegistry.get().register_memory(
308
+ RegisteredMemoryInfo(full_type=config_type.full_type,
309
+ config_type=config_type,
310
+ build_fn=context_manager_fn,
311
+ discovery_metadata=discovery_metadata))
312
+
313
+ return context_manager_fn
314
+
315
+ return register_memory_inner
316
+
317
+
318
+ def register_retriever_provider(config_type: type[RetrieverBaseConfigT]):
319
+
320
+ def register_retriever_provider_inner(
321
+ fn: RetrieverProviderBuildCallableT[RetrieverBaseConfigT]
322
+ ) -> RetrieverProviderRegisteredCallableT[RetrieverBaseConfigT]:
323
+ from .type_registry import GlobalTypeRegistry
324
+ from .type_registry import RegisteredRetrieverProviderInfo
325
+
326
+ context_manager_fn = asynccontextmanager(fn)
327
+
328
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
329
+ component_type=AIQComponentEnum.RETRIEVER_PROVIDER)
330
+
331
+ GlobalTypeRegistry.get().register_retriever_provider(
332
+ RegisteredRetrieverProviderInfo(full_type=config_type.full_type,
333
+ config_type=config_type,
334
+ build_fn=context_manager_fn,
335
+ discovery_metadata=discovery_metadata))
336
+
337
+ return context_manager_fn
338
+
339
+ return register_retriever_provider_inner
340
+
341
+
342
+ def register_retriever_client(config_type: type[RetrieverBaseConfigT], wrapper_type: LLMFrameworkEnum | str | None):
343
+
344
+ def register_retriever_client_inner(
345
+ fn: RetrieverClientBuildCallableT[RetrieverBaseConfigT]
346
+ ) -> RetrieverClientRegisteredCallableT[RetrieverBaseConfigT]:
347
+ from .type_registry import GlobalTypeRegistry
348
+ from .type_registry import RegisteredRetrieverClientInfo
349
+
350
+ context_manager_fn = asynccontextmanager(fn)
351
+
352
+ discovery_metadata = DiscoveryMetadata.from_provider_framework_map(
353
+ config_type=config_type,
354
+ wrapper_type=wrapper_type,
355
+ provider_type=AIQComponentEnum.RETRIEVER_PROVIDER,
356
+ component_type=AIQComponentEnum.RETRIEVER_CLIENT,
357
+ )
358
+
359
+ GlobalTypeRegistry.get().register_retriever_client(
360
+ RegisteredRetrieverClientInfo(full_type=config_type.full_type,
361
+ config_type=config_type,
362
+ build_fn=context_manager_fn,
363
+ llm_framework=wrapper_type,
364
+ discovery_metadata=discovery_metadata))
365
+
366
+ return context_manager_fn
367
+
368
+ return register_retriever_client_inner
369
+
370
+
371
+ def register_tool_wrapper(wrapper_type: LLMFrameworkEnum | str):
372
+
373
+ def _inner(fn: ToolWrapperBuildCallableT) -> ToolWrapperBuildCallableT:
374
+ from .type_registry import GlobalTypeRegistry
375
+
376
+ discovery_metadata = DiscoveryMetadata.from_fn_wrapper(fn=fn,
377
+ wrapper_type=wrapper_type,
378
+ component_type=AIQComponentEnum.TOOL_WRAPPER)
379
+ GlobalTypeRegistry.get().register_tool_wrapper(
380
+ RegisteredToolWrapper(llm_framework=wrapper_type, build_fn=fn, discovery_metadata=discovery_metadata))
381
+
382
+ return fn
383
+
384
+ return _inner
385
+
386
+
387
+ def register_registry_handler(config_type: type[RegistryHandlerBaseConfigT]):
388
+
389
+ def register_registry_handler_inner(
390
+ fn: RegistryHandlerBuildCallableT[RegistryHandlerBaseConfigT]
391
+ ) -> RegistryHandlerRegisteredCallableT[RegistryHandlerBaseConfigT]:
392
+ from .type_registry import GlobalTypeRegistry
393
+ from .type_registry import RegisteredRegistryHandlerInfo
394
+
395
+ context_manager_fn = asynccontextmanager(fn)
396
+
397
+ discovery_metadata = DiscoveryMetadata.from_config_type(config_type=config_type,
398
+ component_type=AIQComponentEnum.REGISTRY_HANDLER)
399
+
400
+ GlobalTypeRegistry.get().register_registry_handler(
401
+ RegisteredRegistryHandlerInfo(full_type=config_type.full_type,
402
+ config_type=config_type,
403
+ build_fn=context_manager_fn,
404
+ discovery_metadata=discovery_metadata))
405
+
406
+ return context_manager_fn
407
+
408
+ return register_registry_handler_inner