aiqtoolkit 1.2.0rc4__py3-none-any.whl → 1.2.0rc5__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 (441) hide show
  1. aiqtoolkit-1.2.0rc5.dist-info/METADATA +29 -0
  2. aiqtoolkit-1.2.0rc5.dist-info/RECORD +4 -0
  3. aiqtoolkit-1.2.0rc5.dist-info/top_level.txt +1 -0
  4. aiq/agent/__init__.py +0 -0
  5. aiq/agent/base.py +0 -239
  6. aiq/agent/dual_node.py +0 -67
  7. aiq/agent/react_agent/__init__.py +0 -0
  8. aiq/agent/react_agent/agent.py +0 -355
  9. aiq/agent/react_agent/output_parser.py +0 -104
  10. aiq/agent/react_agent/prompt.py +0 -41
  11. aiq/agent/react_agent/register.py +0 -149
  12. aiq/agent/reasoning_agent/__init__.py +0 -0
  13. aiq/agent/reasoning_agent/reasoning_agent.py +0 -225
  14. aiq/agent/register.py +0 -23
  15. aiq/agent/rewoo_agent/__init__.py +0 -0
  16. aiq/agent/rewoo_agent/agent.py +0 -411
  17. aiq/agent/rewoo_agent/prompt.py +0 -108
  18. aiq/agent/rewoo_agent/register.py +0 -158
  19. aiq/agent/tool_calling_agent/__init__.py +0 -0
  20. aiq/agent/tool_calling_agent/agent.py +0 -119
  21. aiq/agent/tool_calling_agent/register.py +0 -106
  22. aiq/authentication/__init__.py +0 -14
  23. aiq/authentication/api_key/__init__.py +0 -14
  24. aiq/authentication/api_key/api_key_auth_provider.py +0 -96
  25. aiq/authentication/api_key/api_key_auth_provider_config.py +0 -124
  26. aiq/authentication/api_key/register.py +0 -26
  27. aiq/authentication/exceptions/__init__.py +0 -14
  28. aiq/authentication/exceptions/api_key_exceptions.py +0 -38
  29. aiq/authentication/exceptions/auth_code_grant_exceptions.py +0 -86
  30. aiq/authentication/exceptions/call_back_exceptions.py +0 -38
  31. aiq/authentication/exceptions/request_exceptions.py +0 -54
  32. aiq/authentication/http_basic_auth/__init__.py +0 -0
  33. aiq/authentication/http_basic_auth/http_basic_auth_provider.py +0 -81
  34. aiq/authentication/http_basic_auth/register.py +0 -30
  35. aiq/authentication/interfaces.py +0 -93
  36. aiq/authentication/oauth2/__init__.py +0 -14
  37. aiq/authentication/oauth2/oauth2_auth_code_flow_provider.py +0 -107
  38. aiq/authentication/oauth2/oauth2_auth_code_flow_provider_config.py +0 -39
  39. aiq/authentication/oauth2/register.py +0 -25
  40. aiq/authentication/register.py +0 -21
  41. aiq/builder/__init__.py +0 -0
  42. aiq/builder/builder.py +0 -285
  43. aiq/builder/component_utils.py +0 -316
  44. aiq/builder/context.py +0 -264
  45. aiq/builder/embedder.py +0 -24
  46. aiq/builder/eval_builder.py +0 -161
  47. aiq/builder/evaluator.py +0 -29
  48. aiq/builder/framework_enum.py +0 -24
  49. aiq/builder/front_end.py +0 -73
  50. aiq/builder/function.py +0 -344
  51. aiq/builder/function_base.py +0 -380
  52. aiq/builder/function_info.py +0 -627
  53. aiq/builder/intermediate_step_manager.py +0 -174
  54. aiq/builder/llm.py +0 -25
  55. aiq/builder/retriever.py +0 -25
  56. aiq/builder/user_interaction_manager.py +0 -74
  57. aiq/builder/workflow.py +0 -148
  58. aiq/builder/workflow_builder.py +0 -1117
  59. aiq/cli/__init__.py +0 -14
  60. aiq/cli/cli_utils/__init__.py +0 -0
  61. aiq/cli/cli_utils/config_override.py +0 -231
  62. aiq/cli/cli_utils/validation.py +0 -37
  63. aiq/cli/commands/__init__.py +0 -0
  64. aiq/cli/commands/configure/__init__.py +0 -0
  65. aiq/cli/commands/configure/channel/__init__.py +0 -0
  66. aiq/cli/commands/configure/channel/add.py +0 -28
  67. aiq/cli/commands/configure/channel/channel.py +0 -36
  68. aiq/cli/commands/configure/channel/remove.py +0 -30
  69. aiq/cli/commands/configure/channel/update.py +0 -30
  70. aiq/cli/commands/configure/configure.py +0 -33
  71. aiq/cli/commands/evaluate.py +0 -139
  72. aiq/cli/commands/info/__init__.py +0 -14
  73. aiq/cli/commands/info/info.py +0 -39
  74. aiq/cli/commands/info/list_channels.py +0 -32
  75. aiq/cli/commands/info/list_components.py +0 -129
  76. aiq/cli/commands/info/list_mcp.py +0 -213
  77. aiq/cli/commands/registry/__init__.py +0 -14
  78. aiq/cli/commands/registry/publish.py +0 -88
  79. aiq/cli/commands/registry/pull.py +0 -118
  80. aiq/cli/commands/registry/registry.py +0 -38
  81. aiq/cli/commands/registry/remove.py +0 -108
  82. aiq/cli/commands/registry/search.py +0 -155
  83. aiq/cli/commands/sizing/__init__.py +0 -14
  84. aiq/cli/commands/sizing/calc.py +0 -297
  85. aiq/cli/commands/sizing/sizing.py +0 -27
  86. aiq/cli/commands/start.py +0 -246
  87. aiq/cli/commands/uninstall.py +0 -81
  88. aiq/cli/commands/validate.py +0 -47
  89. aiq/cli/commands/workflow/__init__.py +0 -14
  90. aiq/cli/commands/workflow/templates/__init__.py.j2 +0 -0
  91. aiq/cli/commands/workflow/templates/config.yml.j2 +0 -16
  92. aiq/cli/commands/workflow/templates/pyproject.toml.j2 +0 -22
  93. aiq/cli/commands/workflow/templates/register.py.j2 +0 -5
  94. aiq/cli/commands/workflow/templates/workflow.py.j2 +0 -36
  95. aiq/cli/commands/workflow/workflow.py +0 -37
  96. aiq/cli/commands/workflow/workflow_commands.py +0 -313
  97. aiq/cli/entrypoint.py +0 -135
  98. aiq/cli/main.py +0 -44
  99. aiq/cli/register_workflow.py +0 -488
  100. aiq/cli/type_registry.py +0 -1000
  101. aiq/data_models/__init__.py +0 -14
  102. aiq/data_models/api_server.py +0 -694
  103. aiq/data_models/authentication.py +0 -231
  104. aiq/data_models/common.py +0 -171
  105. aiq/data_models/component.py +0 -54
  106. aiq/data_models/component_ref.py +0 -168
  107. aiq/data_models/config.py +0 -406
  108. aiq/data_models/dataset_handler.py +0 -123
  109. aiq/data_models/discovery_metadata.py +0 -335
  110. aiq/data_models/embedder.py +0 -27
  111. aiq/data_models/evaluate.py +0 -127
  112. aiq/data_models/evaluator.py +0 -26
  113. aiq/data_models/front_end.py +0 -26
  114. aiq/data_models/function.py +0 -30
  115. aiq/data_models/function_dependencies.py +0 -72
  116. aiq/data_models/interactive.py +0 -246
  117. aiq/data_models/intermediate_step.py +0 -302
  118. aiq/data_models/invocation_node.py +0 -38
  119. aiq/data_models/its_strategy.py +0 -30
  120. aiq/data_models/llm.py +0 -27
  121. aiq/data_models/logging.py +0 -26
  122. aiq/data_models/memory.py +0 -27
  123. aiq/data_models/object_store.py +0 -44
  124. aiq/data_models/profiler.py +0 -54
  125. aiq/data_models/registry_handler.py +0 -26
  126. aiq/data_models/retriever.py +0 -30
  127. aiq/data_models/retry_mixin.py +0 -35
  128. aiq/data_models/span.py +0 -187
  129. aiq/data_models/step_adaptor.py +0 -64
  130. aiq/data_models/streaming.py +0 -33
  131. aiq/data_models/swe_bench_model.py +0 -54
  132. aiq/data_models/telemetry_exporter.py +0 -26
  133. aiq/embedder/__init__.py +0 -0
  134. aiq/embedder/langchain_client.py +0 -41
  135. aiq/embedder/nim_embedder.py +0 -59
  136. aiq/embedder/openai_embedder.py +0 -43
  137. aiq/embedder/register.py +0 -24
  138. aiq/eval/__init__.py +0 -14
  139. aiq/eval/config.py +0 -60
  140. aiq/eval/dataset_handler/__init__.py +0 -0
  141. aiq/eval/dataset_handler/dataset_downloader.py +0 -106
  142. aiq/eval/dataset_handler/dataset_filter.py +0 -52
  143. aiq/eval/dataset_handler/dataset_handler.py +0 -254
  144. aiq/eval/evaluate.py +0 -506
  145. aiq/eval/evaluator/__init__.py +0 -14
  146. aiq/eval/evaluator/base_evaluator.py +0 -73
  147. aiq/eval/evaluator/evaluator_model.py +0 -45
  148. aiq/eval/intermediate_step_adapter.py +0 -99
  149. aiq/eval/rag_evaluator/__init__.py +0 -0
  150. aiq/eval/rag_evaluator/evaluate.py +0 -178
  151. aiq/eval/rag_evaluator/register.py +0 -143
  152. aiq/eval/register.py +0 -23
  153. aiq/eval/remote_workflow.py +0 -133
  154. aiq/eval/runners/__init__.py +0 -14
  155. aiq/eval/runners/config.py +0 -39
  156. aiq/eval/runners/multi_eval_runner.py +0 -54
  157. aiq/eval/runtime_event_subscriber.py +0 -52
  158. aiq/eval/swe_bench_evaluator/__init__.py +0 -0
  159. aiq/eval/swe_bench_evaluator/evaluate.py +0 -215
  160. aiq/eval/swe_bench_evaluator/register.py +0 -36
  161. aiq/eval/trajectory_evaluator/__init__.py +0 -0
  162. aiq/eval/trajectory_evaluator/evaluate.py +0 -75
  163. aiq/eval/trajectory_evaluator/register.py +0 -40
  164. aiq/eval/tunable_rag_evaluator/__init__.py +0 -0
  165. aiq/eval/tunable_rag_evaluator/evaluate.py +0 -245
  166. aiq/eval/tunable_rag_evaluator/register.py +0 -52
  167. aiq/eval/usage_stats.py +0 -41
  168. aiq/eval/utils/__init__.py +0 -0
  169. aiq/eval/utils/output_uploader.py +0 -140
  170. aiq/eval/utils/tqdm_position_registry.py +0 -40
  171. aiq/eval/utils/weave_eval.py +0 -184
  172. aiq/experimental/__init__.py +0 -0
  173. aiq/experimental/decorators/__init__.py +0 -0
  174. aiq/experimental/decorators/experimental_warning_decorator.py +0 -130
  175. aiq/experimental/inference_time_scaling/__init__.py +0 -0
  176. aiq/experimental/inference_time_scaling/editing/__init__.py +0 -0
  177. aiq/experimental/inference_time_scaling/editing/iterative_plan_refinement_editor.py +0 -147
  178. aiq/experimental/inference_time_scaling/editing/llm_as_a_judge_editor.py +0 -204
  179. aiq/experimental/inference_time_scaling/editing/motivation_aware_summarization.py +0 -107
  180. aiq/experimental/inference_time_scaling/functions/__init__.py +0 -0
  181. aiq/experimental/inference_time_scaling/functions/execute_score_select_function.py +0 -105
  182. aiq/experimental/inference_time_scaling/functions/its_tool_orchestration_function.py +0 -205
  183. aiq/experimental/inference_time_scaling/functions/its_tool_wrapper_function.py +0 -146
  184. aiq/experimental/inference_time_scaling/functions/plan_select_execute_function.py +0 -224
  185. aiq/experimental/inference_time_scaling/models/__init__.py +0 -0
  186. aiq/experimental/inference_time_scaling/models/editor_config.py +0 -132
  187. aiq/experimental/inference_time_scaling/models/its_item.py +0 -48
  188. aiq/experimental/inference_time_scaling/models/scoring_config.py +0 -112
  189. aiq/experimental/inference_time_scaling/models/search_config.py +0 -120
  190. aiq/experimental/inference_time_scaling/models/selection_config.py +0 -154
  191. aiq/experimental/inference_time_scaling/models/stage_enums.py +0 -43
  192. aiq/experimental/inference_time_scaling/models/strategy_base.py +0 -66
  193. aiq/experimental/inference_time_scaling/models/tool_use_config.py +0 -41
  194. aiq/experimental/inference_time_scaling/register.py +0 -36
  195. aiq/experimental/inference_time_scaling/scoring/__init__.py +0 -0
  196. aiq/experimental/inference_time_scaling/scoring/llm_based_agent_scorer.py +0 -168
  197. aiq/experimental/inference_time_scaling/scoring/llm_based_plan_scorer.py +0 -168
  198. aiq/experimental/inference_time_scaling/scoring/motivation_aware_scorer.py +0 -111
  199. aiq/experimental/inference_time_scaling/search/__init__.py +0 -0
  200. aiq/experimental/inference_time_scaling/search/multi_llm_planner.py +0 -128
  201. aiq/experimental/inference_time_scaling/search/multi_query_retrieval_search.py +0 -122
  202. aiq/experimental/inference_time_scaling/search/single_shot_multi_plan_planner.py +0 -128
  203. aiq/experimental/inference_time_scaling/selection/__init__.py +0 -0
  204. aiq/experimental/inference_time_scaling/selection/best_of_n_selector.py +0 -63
  205. aiq/experimental/inference_time_scaling/selection/llm_based_agent_output_selector.py +0 -131
  206. aiq/experimental/inference_time_scaling/selection/llm_based_output_merging_selector.py +0 -159
  207. aiq/experimental/inference_time_scaling/selection/llm_based_plan_selector.py +0 -128
  208. aiq/experimental/inference_time_scaling/selection/threshold_selector.py +0 -58
  209. aiq/front_ends/__init__.py +0 -14
  210. aiq/front_ends/console/__init__.py +0 -14
  211. aiq/front_ends/console/authentication_flow_handler.py +0 -233
  212. aiq/front_ends/console/console_front_end_config.py +0 -32
  213. aiq/front_ends/console/console_front_end_plugin.py +0 -96
  214. aiq/front_ends/console/register.py +0 -25
  215. aiq/front_ends/cron/__init__.py +0 -14
  216. aiq/front_ends/fastapi/__init__.py +0 -14
  217. aiq/front_ends/fastapi/auth_flow_handlers/__init__.py +0 -0
  218. aiq/front_ends/fastapi/auth_flow_handlers/http_flow_handler.py +0 -27
  219. aiq/front_ends/fastapi/auth_flow_handlers/websocket_flow_handler.py +0 -107
  220. aiq/front_ends/fastapi/fastapi_front_end_config.py +0 -234
  221. aiq/front_ends/fastapi/fastapi_front_end_controller.py +0 -68
  222. aiq/front_ends/fastapi/fastapi_front_end_plugin.py +0 -116
  223. aiq/front_ends/fastapi/fastapi_front_end_plugin_worker.py +0 -1092
  224. aiq/front_ends/fastapi/html_snippets/__init__.py +0 -14
  225. aiq/front_ends/fastapi/html_snippets/auth_code_grant_success.py +0 -35
  226. aiq/front_ends/fastapi/intermediate_steps_subscriber.py +0 -80
  227. aiq/front_ends/fastapi/job_store.py +0 -183
  228. aiq/front_ends/fastapi/main.py +0 -72
  229. aiq/front_ends/fastapi/message_handler.py +0 -298
  230. aiq/front_ends/fastapi/message_validator.py +0 -345
  231. aiq/front_ends/fastapi/register.py +0 -25
  232. aiq/front_ends/fastapi/response_helpers.py +0 -195
  233. aiq/front_ends/fastapi/step_adaptor.py +0 -321
  234. aiq/front_ends/mcp/__init__.py +0 -14
  235. aiq/front_ends/mcp/mcp_front_end_config.py +0 -32
  236. aiq/front_ends/mcp/mcp_front_end_plugin.py +0 -93
  237. aiq/front_ends/mcp/register.py +0 -27
  238. aiq/front_ends/mcp/tool_converter.py +0 -242
  239. aiq/front_ends/register.py +0 -22
  240. aiq/front_ends/simple_base/__init__.py +0 -14
  241. aiq/front_ends/simple_base/simple_front_end_plugin_base.py +0 -54
  242. aiq/llm/__init__.py +0 -0
  243. aiq/llm/aws_bedrock_llm.py +0 -57
  244. aiq/llm/nim_llm.py +0 -46
  245. aiq/llm/openai_llm.py +0 -46
  246. aiq/llm/register.py +0 -23
  247. aiq/llm/utils/__init__.py +0 -14
  248. aiq/llm/utils/env_config_value.py +0 -94
  249. aiq/llm/utils/error.py +0 -17
  250. aiq/memory/__init__.py +0 -20
  251. aiq/memory/interfaces.py +0 -183
  252. aiq/memory/models.py +0 -112
  253. aiq/meta/module_to_distro.json +0 -3
  254. aiq/meta/pypi.md +0 -58
  255. aiq/object_store/__init__.py +0 -20
  256. aiq/object_store/in_memory_object_store.py +0 -76
  257. aiq/object_store/interfaces.py +0 -84
  258. aiq/object_store/models.py +0 -36
  259. aiq/object_store/register.py +0 -20
  260. aiq/observability/__init__.py +0 -14
  261. aiq/observability/exporter/__init__.py +0 -14
  262. aiq/observability/exporter/base_exporter.py +0 -449
  263. aiq/observability/exporter/exporter.py +0 -78
  264. aiq/observability/exporter/file_exporter.py +0 -33
  265. aiq/observability/exporter/processing_exporter.py +0 -322
  266. aiq/observability/exporter/raw_exporter.py +0 -52
  267. aiq/observability/exporter/span_exporter.py +0 -265
  268. aiq/observability/exporter_manager.py +0 -335
  269. aiq/observability/mixin/__init__.py +0 -14
  270. aiq/observability/mixin/batch_config_mixin.py +0 -26
  271. aiq/observability/mixin/collector_config_mixin.py +0 -23
  272. aiq/observability/mixin/file_mixin.py +0 -288
  273. aiq/observability/mixin/file_mode.py +0 -23
  274. aiq/observability/mixin/resource_conflict_mixin.py +0 -134
  275. aiq/observability/mixin/serialize_mixin.py +0 -61
  276. aiq/observability/mixin/type_introspection_mixin.py +0 -183
  277. aiq/observability/processor/__init__.py +0 -14
  278. aiq/observability/processor/batching_processor.py +0 -309
  279. aiq/observability/processor/callback_processor.py +0 -42
  280. aiq/observability/processor/intermediate_step_serializer.py +0 -28
  281. aiq/observability/processor/processor.py +0 -71
  282. aiq/observability/register.py +0 -96
  283. aiq/observability/utils/__init__.py +0 -14
  284. aiq/observability/utils/dict_utils.py +0 -236
  285. aiq/observability/utils/time_utils.py +0 -31
  286. aiq/plugins/.namespace +0 -1
  287. aiq/profiler/__init__.py +0 -0
  288. aiq/profiler/calc/__init__.py +0 -14
  289. aiq/profiler/calc/calc_runner.py +0 -627
  290. aiq/profiler/calc/calculations.py +0 -288
  291. aiq/profiler/calc/data_models.py +0 -188
  292. aiq/profiler/calc/plot.py +0 -345
  293. aiq/profiler/callbacks/__init__.py +0 -0
  294. aiq/profiler/callbacks/agno_callback_handler.py +0 -295
  295. aiq/profiler/callbacks/base_callback_class.py +0 -20
  296. aiq/profiler/callbacks/langchain_callback_handler.py +0 -290
  297. aiq/profiler/callbacks/llama_index_callback_handler.py +0 -205
  298. aiq/profiler/callbacks/semantic_kernel_callback_handler.py +0 -238
  299. aiq/profiler/callbacks/token_usage_base_model.py +0 -27
  300. aiq/profiler/data_frame_row.py +0 -51
  301. aiq/profiler/data_models.py +0 -24
  302. aiq/profiler/decorators/__init__.py +0 -0
  303. aiq/profiler/decorators/framework_wrapper.py +0 -131
  304. aiq/profiler/decorators/function_tracking.py +0 -254
  305. aiq/profiler/forecasting/__init__.py +0 -0
  306. aiq/profiler/forecasting/config.py +0 -18
  307. aiq/profiler/forecasting/model_trainer.py +0 -75
  308. aiq/profiler/forecasting/models/__init__.py +0 -22
  309. aiq/profiler/forecasting/models/forecasting_base_model.py +0 -40
  310. aiq/profiler/forecasting/models/linear_model.py +0 -196
  311. aiq/profiler/forecasting/models/random_forest_regressor.py +0 -268
  312. aiq/profiler/inference_metrics_model.py +0 -28
  313. aiq/profiler/inference_optimization/__init__.py +0 -0
  314. aiq/profiler/inference_optimization/bottleneck_analysis/__init__.py +0 -0
  315. aiq/profiler/inference_optimization/bottleneck_analysis/nested_stack_analysis.py +0 -460
  316. aiq/profiler/inference_optimization/bottleneck_analysis/simple_stack_analysis.py +0 -258
  317. aiq/profiler/inference_optimization/data_models.py +0 -386
  318. aiq/profiler/inference_optimization/experimental/__init__.py +0 -0
  319. aiq/profiler/inference_optimization/experimental/concurrency_spike_analysis.py +0 -468
  320. aiq/profiler/inference_optimization/experimental/prefix_span_analysis.py +0 -405
  321. aiq/profiler/inference_optimization/llm_metrics.py +0 -212
  322. aiq/profiler/inference_optimization/prompt_caching.py +0 -163
  323. aiq/profiler/inference_optimization/token_uniqueness.py +0 -107
  324. aiq/profiler/inference_optimization/workflow_runtimes.py +0 -72
  325. aiq/profiler/intermediate_property_adapter.py +0 -102
  326. aiq/profiler/profile_runner.py +0 -473
  327. aiq/profiler/utils.py +0 -184
  328. aiq/registry_handlers/__init__.py +0 -0
  329. aiq/registry_handlers/local/__init__.py +0 -0
  330. aiq/registry_handlers/local/local_handler.py +0 -176
  331. aiq/registry_handlers/local/register_local.py +0 -37
  332. aiq/registry_handlers/metadata_factory.py +0 -60
  333. aiq/registry_handlers/package_utils.py +0 -567
  334. aiq/registry_handlers/pypi/__init__.py +0 -0
  335. aiq/registry_handlers/pypi/pypi_handler.py +0 -251
  336. aiq/registry_handlers/pypi/register_pypi.py +0 -40
  337. aiq/registry_handlers/register.py +0 -21
  338. aiq/registry_handlers/registry_handler_base.py +0 -157
  339. aiq/registry_handlers/rest/__init__.py +0 -0
  340. aiq/registry_handlers/rest/register_rest.py +0 -56
  341. aiq/registry_handlers/rest/rest_handler.py +0 -237
  342. aiq/registry_handlers/schemas/__init__.py +0 -0
  343. aiq/registry_handlers/schemas/headers.py +0 -42
  344. aiq/registry_handlers/schemas/package.py +0 -68
  345. aiq/registry_handlers/schemas/publish.py +0 -63
  346. aiq/registry_handlers/schemas/pull.py +0 -82
  347. aiq/registry_handlers/schemas/remove.py +0 -36
  348. aiq/registry_handlers/schemas/search.py +0 -91
  349. aiq/registry_handlers/schemas/status.py +0 -47
  350. aiq/retriever/__init__.py +0 -0
  351. aiq/retriever/interface.py +0 -37
  352. aiq/retriever/milvus/__init__.py +0 -14
  353. aiq/retriever/milvus/register.py +0 -81
  354. aiq/retriever/milvus/retriever.py +0 -228
  355. aiq/retriever/models.py +0 -74
  356. aiq/retriever/nemo_retriever/__init__.py +0 -14
  357. aiq/retriever/nemo_retriever/register.py +0 -60
  358. aiq/retriever/nemo_retriever/retriever.py +0 -190
  359. aiq/retriever/register.py +0 -22
  360. aiq/runtime/__init__.py +0 -14
  361. aiq/runtime/loader.py +0 -215
  362. aiq/runtime/runner.py +0 -190
  363. aiq/runtime/session.py +0 -158
  364. aiq/runtime/user_metadata.py +0 -130
  365. aiq/settings/__init__.py +0 -0
  366. aiq/settings/global_settings.py +0 -318
  367. aiq/test/.namespace +0 -1
  368. aiq/tool/__init__.py +0 -0
  369. aiq/tool/chat_completion.py +0 -74
  370. aiq/tool/code_execution/README.md +0 -151
  371. aiq/tool/code_execution/__init__.py +0 -0
  372. aiq/tool/code_execution/code_sandbox.py +0 -267
  373. aiq/tool/code_execution/local_sandbox/.gitignore +0 -1
  374. aiq/tool/code_execution/local_sandbox/Dockerfile.sandbox +0 -60
  375. aiq/tool/code_execution/local_sandbox/__init__.py +0 -13
  376. aiq/tool/code_execution/local_sandbox/local_sandbox_server.py +0 -198
  377. aiq/tool/code_execution/local_sandbox/sandbox.requirements.txt +0 -6
  378. aiq/tool/code_execution/local_sandbox/start_local_sandbox.sh +0 -50
  379. aiq/tool/code_execution/register.py +0 -74
  380. aiq/tool/code_execution/test_code_execution_sandbox.py +0 -414
  381. aiq/tool/code_execution/utils.py +0 -100
  382. aiq/tool/datetime_tools.py +0 -42
  383. aiq/tool/document_search.py +0 -141
  384. aiq/tool/github_tools/__init__.py +0 -0
  385. aiq/tool/github_tools/create_github_commit.py +0 -133
  386. aiq/tool/github_tools/create_github_issue.py +0 -87
  387. aiq/tool/github_tools/create_github_pr.py +0 -106
  388. aiq/tool/github_tools/get_github_file.py +0 -106
  389. aiq/tool/github_tools/get_github_issue.py +0 -166
  390. aiq/tool/github_tools/get_github_pr.py +0 -256
  391. aiq/tool/github_tools/update_github_issue.py +0 -100
  392. aiq/tool/mcp/__init__.py +0 -14
  393. aiq/tool/mcp/exceptions.py +0 -142
  394. aiq/tool/mcp/mcp_client.py +0 -255
  395. aiq/tool/mcp/mcp_tool.py +0 -96
  396. aiq/tool/memory_tools/__init__.py +0 -0
  397. aiq/tool/memory_tools/add_memory_tool.py +0 -79
  398. aiq/tool/memory_tools/delete_memory_tool.py +0 -67
  399. aiq/tool/memory_tools/get_memory_tool.py +0 -72
  400. aiq/tool/nvidia_rag.py +0 -95
  401. aiq/tool/register.py +0 -38
  402. aiq/tool/retriever.py +0 -89
  403. aiq/tool/server_tools.py +0 -66
  404. aiq/utils/__init__.py +0 -0
  405. aiq/utils/data_models/__init__.py +0 -0
  406. aiq/utils/data_models/schema_validator.py +0 -58
  407. aiq/utils/debugging_utils.py +0 -43
  408. aiq/utils/dump_distro_mapping.py +0 -32
  409. aiq/utils/exception_handlers/__init__.py +0 -0
  410. aiq/utils/exception_handlers/automatic_retries.py +0 -289
  411. aiq/utils/exception_handlers/mcp.py +0 -211
  412. aiq/utils/exception_handlers/schemas.py +0 -114
  413. aiq/utils/io/__init__.py +0 -0
  414. aiq/utils/io/model_processing.py +0 -28
  415. aiq/utils/io/yaml_tools.py +0 -119
  416. aiq/utils/log_utils.py +0 -37
  417. aiq/utils/metadata_utils.py +0 -74
  418. aiq/utils/optional_imports.py +0 -142
  419. aiq/utils/producer_consumer_queue.py +0 -178
  420. aiq/utils/reactive/__init__.py +0 -0
  421. aiq/utils/reactive/base/__init__.py +0 -0
  422. aiq/utils/reactive/base/observable_base.py +0 -65
  423. aiq/utils/reactive/base/observer_base.py +0 -55
  424. aiq/utils/reactive/base/subject_base.py +0 -79
  425. aiq/utils/reactive/observable.py +0 -59
  426. aiq/utils/reactive/observer.py +0 -76
  427. aiq/utils/reactive/subject.py +0 -131
  428. aiq/utils/reactive/subscription.py +0 -49
  429. aiq/utils/settings/__init__.py +0 -0
  430. aiq/utils/settings/global_settings.py +0 -197
  431. aiq/utils/string_utils.py +0 -38
  432. aiq/utils/type_converter.py +0 -290
  433. aiq/utils/type_utils.py +0 -484
  434. aiq/utils/url_utils.py +0 -27
  435. aiqtoolkit-1.2.0rc4.dist-info/METADATA +0 -363
  436. aiqtoolkit-1.2.0rc4.dist-info/RECORD +0 -438
  437. aiqtoolkit-1.2.0rc4.dist-info/entry_points.txt +0 -20
  438. aiqtoolkit-1.2.0rc4.dist-info/licenses/LICENSE-3rd-party.txt +0 -3686
  439. aiqtoolkit-1.2.0rc4.dist-info/licenses/LICENSE.md +0 -201
  440. aiqtoolkit-1.2.0rc4.dist-info/top_level.txt +0 -1
  441. {aiqtoolkit-1.2.0rc4.dist-info → aiqtoolkit-1.2.0rc5.dist-info}/WHEEL +0 -0
aiq/data_models/config.py DELETED
@@ -1,406 +0,0 @@
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
- import logging
17
- import sys
18
- import typing
19
-
20
- from pydantic import BaseModel
21
- from pydantic import ConfigDict
22
- from pydantic import Discriminator
23
- from pydantic import ValidationError
24
- from pydantic import ValidationInfo
25
- from pydantic import ValidatorFunctionWrapHandler
26
- from pydantic import field_validator
27
-
28
- from aiq.data_models.evaluate import EvalConfig
29
- from aiq.data_models.front_end import FrontEndBaseConfig
30
- from aiq.data_models.function import EmptyFunctionConfig
31
- from aiq.data_models.function import FunctionBaseConfig
32
- from aiq.data_models.its_strategy import ITSStrategyBaseConfig
33
- from aiq.data_models.logging import LoggingBaseConfig
34
- from aiq.data_models.telemetry_exporter import TelemetryExporterBaseConfig
35
- from aiq.front_ends.fastapi.fastapi_front_end_config import FastApiFrontEndConfig
36
-
37
- from .authentication import AuthProviderBaseConfig
38
- from .common import HashableBaseModel
39
- from .common import TypedBaseModel
40
- from .embedder import EmbedderBaseConfig
41
- from .llm import LLMBaseConfig
42
- from .memory import MemoryBaseConfig
43
- from .object_store import ObjectStoreBaseConfig
44
- from .retriever import RetrieverBaseConfig
45
-
46
- logger = logging.getLogger(__name__)
47
-
48
-
49
- def _process_validation_error(err: ValidationError, handler: ValidatorFunctionWrapHandler, info: ValidationInfo):
50
- from aiq.cli.type_registry import GlobalTypeRegistry # pylint: disable=cyclic-import
51
-
52
- new_errors = []
53
- logged_once = False
54
- needs_reraise = False
55
- for e in err.errors():
56
-
57
- error_type = e['type']
58
- if error_type == 'union_tag_invalid' and "ctx" in e and not logged_once:
59
- requested_type = e["ctx"]["tag"]
60
-
61
- if (info.field_name in ('workflow', 'functions')):
62
- registered_keys = GlobalTypeRegistry.get().get_registered_functions()
63
- elif (info.field_name == "authentication"):
64
- registered_keys = GlobalTypeRegistry.get().get_registered_auth_providers()
65
- elif (info.field_name == "llms"):
66
- registered_keys = GlobalTypeRegistry.get().get_registered_llm_providers()
67
- elif (info.field_name == "embedders"):
68
- registered_keys = GlobalTypeRegistry.get().get_registered_embedder_providers()
69
- elif (info.field_name == "memory"):
70
- registered_keys = GlobalTypeRegistry.get().get_registered_memorys()
71
- elif (info.field_name == "object_stores"):
72
- registered_keys = GlobalTypeRegistry.get().get_registered_object_stores()
73
- elif (info.field_name == "retrievers"):
74
- registered_keys = GlobalTypeRegistry.get().get_registered_retriever_providers()
75
- elif (info.field_name == "tracing"):
76
- registered_keys = GlobalTypeRegistry.get().get_registered_telemetry_exporters()
77
- elif (info.field_name == "logging"):
78
- registered_keys = GlobalTypeRegistry.get().get_registered_logging_method()
79
- elif (info.field_name == "evaluators"):
80
- registered_keys = GlobalTypeRegistry.get().get_registered_evaluators()
81
- elif (info.field_name == "front_ends"):
82
- registered_keys = GlobalTypeRegistry.get().get_registered_front_ends()
83
- elif (info.field_name == "its_strategies"):
84
- registered_keys = GlobalTypeRegistry.get().get_registered_its_strategies()
85
-
86
- else:
87
- assert False, f"Unknown field name {info.field_name} in validator"
88
-
89
- # Check and see if the there are multiple full types which match this short type
90
- matching_keys = [k for k in registered_keys if k.local_name == requested_type]
91
-
92
- assert len(matching_keys) != 1, "Exact match should have been found. Contact developers"
93
-
94
- matching_key_names = [x.full_type for x in matching_keys]
95
- registered_key_names = [x.full_type for x in registered_keys]
96
-
97
- if (len(matching_keys) == 0):
98
- # This is a case where the requested type is not found. Show a helpful message about what is
99
- # available
100
- logger.error(("Requested %s type `%s` not found. "
101
- "Have you ensured the necessary package has been installed with `uv pip install`?"
102
- "\nAvailable %s names:\n - %s\n"),
103
- info.field_name,
104
- requested_type,
105
- info.field_name,
106
- '\n - '.join(registered_key_names))
107
- else:
108
- # This is a case where the requested type is ambiguous.
109
- logger.error(("Requested %s type `%s` is ambiguous. "
110
- "Matched multiple %s by their local name: %s. "
111
- "Please use the fully qualified %s name."
112
- "\nAvailable %s names:\n - %s\n"),
113
- info.field_name,
114
- requested_type,
115
- info.field_name,
116
- matching_key_names,
117
- info.field_name,
118
- info.field_name,
119
- '\n - '.join(registered_key_names))
120
-
121
- # Only show one error
122
- logged_once = True
123
-
124
- elif error_type == 'missing':
125
- location = e["loc"]
126
- if len(location) > 1: # remove the _type field from the location
127
- e['loc'] = (location[0], ) + location[2:]
128
- needs_reraise = True
129
-
130
- new_errors.append(e)
131
-
132
- if needs_reraise:
133
- raise ValidationError.from_exception_data(title=err.title, line_errors=new_errors)
134
-
135
-
136
- class TelemetryConfig(BaseModel):
137
-
138
- logging: dict[str, LoggingBaseConfig] = {}
139
- tracing: dict[str, TelemetryExporterBaseConfig] = {}
140
-
141
- @field_validator("logging", "tracing", mode="wrap")
142
- @classmethod
143
- def validate_components(cls, value: typing.Any, handler: ValidatorFunctionWrapHandler, info: ValidationInfo):
144
-
145
- try:
146
- return handler(value)
147
- except ValidationError as err:
148
- _process_validation_error(err, handler, info)
149
- raise
150
-
151
- @classmethod
152
- def rebuild_annotations(cls):
153
-
154
- from aiq.cli.type_registry import GlobalTypeRegistry
155
-
156
- type_registry = GlobalTypeRegistry.get()
157
-
158
- TracingAnnotation = dict[str,
159
- typing.Annotated[type_registry.compute_annotation(TelemetryExporterBaseConfig),
160
- Discriminator(TypedBaseModel.discriminator)]]
161
-
162
- LoggingAnnotation = dict[str,
163
- typing.Annotated[type_registry.compute_annotation(LoggingBaseConfig),
164
- Discriminator(TypedBaseModel.discriminator)]]
165
-
166
- should_rebuild = False
167
-
168
- tracing_field = cls.model_fields.get("tracing")
169
- if tracing_field is not None and tracing_field.annotation != TracingAnnotation:
170
- tracing_field.annotation = TracingAnnotation
171
- should_rebuild = True
172
-
173
- logging_field = cls.model_fields.get("logging")
174
- if logging_field is not None and logging_field.annotation != LoggingAnnotation:
175
- logging_field.annotation = LoggingAnnotation
176
- should_rebuild = True
177
-
178
- if (should_rebuild):
179
- return cls.model_rebuild(force=True)
180
-
181
- return False
182
-
183
-
184
- class GeneralConfig(BaseModel):
185
-
186
- model_config = ConfigDict(protected_namespaces=())
187
-
188
- use_uvloop: bool = True
189
- """
190
- Whether to use uvloop for the event loop. This can provide a significant speedup in some cases. Disable to provide
191
- better error messages when debugging.
192
- """
193
-
194
- telemetry: TelemetryConfig = TelemetryConfig()
195
-
196
- # FrontEnd Configuration
197
- front_end: FrontEndBaseConfig = FastApiFrontEndConfig()
198
-
199
- @field_validator("front_end", mode="wrap")
200
- @classmethod
201
- def validate_components(cls, value: typing.Any, handler: ValidatorFunctionWrapHandler, info: ValidationInfo):
202
-
203
- try:
204
- return handler(value)
205
- except ValidationError as err:
206
- _process_validation_error(err, handler, info)
207
- raise
208
-
209
- @classmethod
210
- def rebuild_annotations(cls):
211
-
212
- from aiq.cli.type_registry import GlobalTypeRegistry
213
-
214
- type_registry = GlobalTypeRegistry.get()
215
-
216
- FrontEndAnnotation = typing.Annotated[type_registry.compute_annotation(FrontEndBaseConfig),
217
- Discriminator(TypedBaseModel.discriminator)]
218
-
219
- should_rebuild = False
220
-
221
- front_end_field = cls.model_fields.get("front_end")
222
- if front_end_field is not None and front_end_field.annotation != FrontEndAnnotation:
223
- front_end_field.annotation = FrontEndAnnotation
224
- should_rebuild = True
225
-
226
- if (TelemetryConfig.rebuild_annotations()):
227
- should_rebuild = True
228
-
229
- if (should_rebuild):
230
- return cls.model_rebuild(force=True)
231
-
232
- return False
233
-
234
-
235
- class AIQConfig(HashableBaseModel):
236
-
237
- model_config = ConfigDict(extra="forbid")
238
-
239
- # Global Options
240
- general: GeneralConfig = GeneralConfig()
241
-
242
- # Functions Configuration
243
- functions: dict[str, FunctionBaseConfig] = {}
244
-
245
- # LLMs Configuration
246
- llms: dict[str, LLMBaseConfig] = {}
247
-
248
- # Embedders Configuration
249
- embedders: dict[str, EmbedderBaseConfig] = {}
250
-
251
- # Memory Configuration
252
- memory: dict[str, MemoryBaseConfig] = {}
253
-
254
- # Object Stores Configuration
255
- object_stores: dict[str, ObjectStoreBaseConfig] = {}
256
-
257
- # Retriever Configuration
258
- retrievers: dict[str, RetrieverBaseConfig] = {}
259
-
260
- # ITS Strategies
261
- its_strategies: dict[str, ITSStrategyBaseConfig] = {}
262
-
263
- # Workflow Configuration
264
- workflow: FunctionBaseConfig = EmptyFunctionConfig()
265
-
266
- # Authentication Configuration
267
- authentication: dict[str, AuthProviderBaseConfig] = {}
268
-
269
- # Evaluation Options
270
- eval: EvalConfig = EvalConfig()
271
-
272
- def print_summary(self, stream: typing.TextIO = sys.stdout):
273
- """Print a summary of the configuration"""
274
-
275
- stream.write("\nConfiguration Summary:\n")
276
- stream.write("-" * 20 + "\n")
277
- if self.workflow:
278
- stream.write(f"Workflow Type: {self.workflow.type}\n")
279
-
280
- stream.write(f"Number of Functions: {len(self.functions)}\n")
281
- stream.write(f"Number of LLMs: {len(self.llms)}\n")
282
- stream.write(f"Number of Embedders: {len(self.embedders)}\n")
283
- stream.write(f"Number of Memory: {len(self.memory)}\n")
284
- stream.write(f"Number of Object Stores: {len(self.object_stores)}\n")
285
- stream.write(f"Number of Retrievers: {len(self.retrievers)}\n")
286
- stream.write(f"Number of ITS Strategies: {len(self.its_strategies)}\n")
287
- stream.write(f"Number of Authentication Providers: {len(self.authentication)}\n")
288
-
289
- @field_validator("functions",
290
- "llms",
291
- "embedders",
292
- "memory",
293
- "retrievers",
294
- "workflow",
295
- "its_strategies",
296
- "authentication",
297
- mode="wrap")
298
- @classmethod
299
- def validate_components(cls, value: typing.Any, handler: ValidatorFunctionWrapHandler, info: ValidationInfo):
300
-
301
- try:
302
- return handler(value)
303
- except ValidationError as err:
304
- _process_validation_error(err, handler, info)
305
- raise
306
-
307
- @classmethod
308
- def rebuild_annotations(cls):
309
-
310
- from aiq.cli.type_registry import GlobalTypeRegistry
311
-
312
- type_registry = GlobalTypeRegistry.get()
313
-
314
- LLMsAnnotation = dict[str,
315
- typing.Annotated[type_registry.compute_annotation(LLMBaseConfig),
316
- Discriminator(TypedBaseModel.discriminator)]]
317
-
318
- AuthenticationProviderAnnotation = dict[str,
319
- typing.Annotated[
320
- type_registry.compute_annotation(AuthProviderBaseConfig),
321
- Discriminator(TypedBaseModel.discriminator)]]
322
-
323
- EmbeddersAnnotation = dict[str,
324
- typing.Annotated[type_registry.compute_annotation(EmbedderBaseConfig),
325
- Discriminator(TypedBaseModel.discriminator)]]
326
-
327
- FunctionsAnnotation = dict[str,
328
- typing.Annotated[type_registry.compute_annotation(FunctionBaseConfig),
329
- Discriminator(TypedBaseModel.discriminator)]]
330
-
331
- MemoryAnnotation = dict[str,
332
- typing.Annotated[type_registry.compute_annotation(MemoryBaseConfig),
333
- Discriminator(TypedBaseModel.discriminator)]]
334
-
335
- ObjectStoreAnnotation = dict[str,
336
- typing.Annotated[type_registry.compute_annotation(ObjectStoreBaseConfig),
337
- Discriminator(TypedBaseModel.discriminator)]]
338
-
339
- RetrieverAnnotation = dict[str,
340
- typing.Annotated[type_registry.compute_annotation(RetrieverBaseConfig),
341
- Discriminator(TypedBaseModel.discriminator)]]
342
-
343
- ITSStrategyAnnotation = dict[str,
344
- typing.Annotated[type_registry.compute_annotation(ITSStrategyBaseConfig),
345
- Discriminator(TypedBaseModel.discriminator)]]
346
-
347
- WorkflowAnnotation = typing.Annotated[type_registry.compute_annotation(FunctionBaseConfig),
348
- Discriminator(TypedBaseModel.discriminator)]
349
-
350
- should_rebuild = False
351
-
352
- auth_providers_field = cls.model_fields.get("authentication")
353
- if auth_providers_field is not None and auth_providers_field.annotation != AuthenticationProviderAnnotation:
354
- auth_providers_field.annotation = AuthenticationProviderAnnotation
355
- should_rebuild = True
356
-
357
- llms_field = cls.model_fields.get("llms")
358
- if llms_field is not None and llms_field.annotation != LLMsAnnotation:
359
- llms_field.annotation = LLMsAnnotation
360
- should_rebuild = True
361
-
362
- embedders_field = cls.model_fields.get("embedders")
363
- if embedders_field is not None and embedders_field.annotation != EmbeddersAnnotation:
364
- embedders_field.annotation = EmbeddersAnnotation
365
- should_rebuild = True
366
-
367
- functions_field = cls.model_fields.get("functions")
368
- if functions_field is not None and functions_field.annotation != FunctionsAnnotation:
369
- functions_field.annotation = FunctionsAnnotation
370
- should_rebuild = True
371
-
372
- memory_field = cls.model_fields.get("memory")
373
- if memory_field is not None and memory_field.annotation != MemoryAnnotation:
374
- memory_field.annotation = MemoryAnnotation
375
- should_rebuild = True
376
-
377
- object_stores_field = cls.model_fields.get("object_stores")
378
- if object_stores_field is not None and object_stores_field.annotation != ObjectStoreAnnotation:
379
- object_stores_field.annotation = ObjectStoreAnnotation
380
- should_rebuild = True
381
-
382
- retrievers_field = cls.model_fields.get("retrievers")
383
- if retrievers_field is not None and retrievers_field.annotation != RetrieverAnnotation:
384
- retrievers_field.annotation = RetrieverAnnotation
385
- should_rebuild = True
386
-
387
- its_strategies_field = cls.model_fields.get("its_strategies")
388
- if its_strategies_field is not None and its_strategies_field.annotation != ITSStrategyAnnotation:
389
- its_strategies_field.annotation = ITSStrategyAnnotation
390
- should_rebuild = True
391
-
392
- workflow_field = cls.model_fields.get("workflow")
393
- if workflow_field is not None and workflow_field.annotation != WorkflowAnnotation:
394
- workflow_field.annotation = WorkflowAnnotation
395
- should_rebuild = True
396
-
397
- if (GeneralConfig.rebuild_annotations()):
398
- should_rebuild = True
399
-
400
- if (EvalConfig.rebuild_annotations()):
401
- should_rebuild = True
402
-
403
- if (should_rebuild):
404
- return cls.model_rebuild(force=True)
405
-
406
- return False
@@ -1,123 +0,0 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 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
- import json
17
- import typing
18
- from collections.abc import Callable
19
- from pathlib import Path
20
-
21
- import pandas as pd
22
- from pydantic import BaseModel
23
- from pydantic import Discriminator
24
- from pydantic import FilePath
25
- from pydantic import Tag
26
-
27
- from aiq.data_models.common import BaseModelRegistryTag
28
- from aiq.data_models.common import TypedBaseModel
29
-
30
-
31
- class EvalS3Config(BaseModel):
32
-
33
- endpoint_url: str | None = None
34
- region_name: str | None = None
35
- bucket: str
36
- access_key: str
37
- secret_key: str
38
-
39
-
40
- class EvalFilterEntryConfig(BaseModel):
41
- # values are lists of allowed/blocked values
42
- field: dict[str, list[str | int | float]] = {}
43
-
44
-
45
- class EvalFilterConfig(BaseModel):
46
- allowlist: EvalFilterEntryConfig | None = None
47
- denylist: EvalFilterEntryConfig | None = None
48
-
49
-
50
- class EvalDatasetStructureConfig(BaseModel):
51
- disable: bool = False
52
- question_key: str = "question"
53
- answer_key: str = "answer"
54
- generated_answer_key: str = "generated_answer"
55
- trajectory_key: str = "intermediate_steps"
56
- expected_trajectory_key: str = "expected_intermediate_steps"
57
-
58
-
59
- # Base model
60
- class EvalDatasetBaseConfig(TypedBaseModel, BaseModelRegistryTag):
61
-
62
- id_key: str = "id"
63
- structure: EvalDatasetStructureConfig = EvalDatasetStructureConfig()
64
-
65
- # Filters
66
- filter: EvalFilterConfig | None = EvalFilterConfig()
67
-
68
- s3: EvalS3Config | None = None
69
-
70
- remote_file_path: str | None = None # only for s3
71
- file_path: Path | str = Path(".tmp/aiq/examples/default/default.json")
72
-
73
-
74
- class EvalDatasetJsonConfig(EvalDatasetBaseConfig, name="json"):
75
-
76
- @staticmethod
77
- def parser() -> tuple[Callable, dict]:
78
- return pd.read_json, {}
79
-
80
-
81
- def read_jsonl(file_path: FilePath, **kwargs):
82
- with open(file_path, 'r', encoding='utf-8') as f:
83
- data = [json.loads(line) for line in f]
84
- return pd.DataFrame(data)
85
-
86
-
87
- class EvalDatasetJsonlConfig(EvalDatasetBaseConfig, name="jsonl"):
88
-
89
- @staticmethod
90
- def parser() -> tuple[Callable, dict]:
91
- return read_jsonl, {}
92
-
93
-
94
- class EvalDatasetCsvConfig(EvalDatasetBaseConfig, name="csv"):
95
-
96
- @staticmethod
97
- def parser() -> tuple[Callable, dict]:
98
- return pd.read_csv, {}
99
-
100
-
101
- class EvalDatasetParquetConfig(EvalDatasetBaseConfig, name="parquet"):
102
-
103
- @staticmethod
104
- def parser() -> tuple[Callable, dict]:
105
- return pd.read_parquet, {}
106
-
107
-
108
- class EvalDatasetXlsConfig(EvalDatasetBaseConfig, name="xls"):
109
-
110
- @staticmethod
111
- def parser() -> tuple[Callable, dict]:
112
- return pd.read_excel, {"engine": "openpyxl"}
113
-
114
-
115
- # Union model with discriminator
116
- EvalDatasetConfig = typing.Annotated[typing.Annotated[EvalDatasetJsonConfig, Tag(EvalDatasetJsonConfig.static_type())]
117
- | typing.Annotated[EvalDatasetCsvConfig, Tag(EvalDatasetCsvConfig.static_type())]
118
- | typing.Annotated[EvalDatasetXlsConfig, Tag(EvalDatasetXlsConfig.static_type())]
119
- | typing.Annotated[EvalDatasetParquetConfig,
120
- Tag(EvalDatasetParquetConfig.static_type())]
121
- | typing.Annotated[EvalDatasetJsonlConfig,
122
- Tag(EvalDatasetJsonlConfig.static_type())],
123
- Discriminator(TypedBaseModel.discriminator)]