aiqtoolkit 1.1.0a20250429__py3-none-any.whl → 1.1.0a20250501__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 (74) hide show
  1. aiq/agent/react_agent/register.py +2 -2
  2. aiq/agent/reasoning_agent/reasoning_agent.py +1 -1
  3. aiq/agent/rewoo_agent/register.py +2 -2
  4. aiq/builder/component_utils.py +5 -5
  5. aiq/builder/front_end.py +4 -4
  6. aiq/builder/function_base.py +4 -4
  7. aiq/builder/function_info.py +1 -1
  8. aiq/builder/intermediate_step_manager.py +10 -8
  9. aiq/builder/workflow_builder.py +1 -1
  10. aiq/cli/cli_utils/validation.py +1 -1
  11. aiq/cli/commands/configure/channel/add.py +1 -1
  12. aiq/cli/commands/configure/channel/channel.py +3 -1
  13. aiq/cli/commands/configure/channel/remove.py +1 -1
  14. aiq/cli/commands/configure/channel/update.py +1 -1
  15. aiq/cli/commands/configure/configure.py +2 -2
  16. aiq/cli/commands/info/info.py +2 -2
  17. aiq/cli/commands/info/list_components.py +2 -2
  18. aiq/cli/commands/registry/publish.py +3 -3
  19. aiq/cli/commands/registry/pull.py +3 -3
  20. aiq/cli/commands/registry/registry.py +3 -1
  21. aiq/cli/commands/registry/remove.py +3 -3
  22. aiq/cli/commands/registry/search.py +3 -3
  23. aiq/cli/commands/start.py +4 -4
  24. aiq/cli/commands/uninstall.py +2 -2
  25. aiq/cli/commands/workflow/templates/pyproject.toml.j2 +2 -2
  26. aiq/cli/commands/workflow/workflow_commands.py +14 -8
  27. aiq/cli/entrypoint.py +1 -1
  28. aiq/data_models/api_server.py +6 -6
  29. aiq/data_models/component_ref.py +7 -7
  30. aiq/data_models/discovery_metadata.py +7 -7
  31. aiq/data_models/intermediate_step.py +2 -2
  32. aiq/eval/register.py +1 -0
  33. aiq/eval/remote_workflow.py +1 -1
  34. aiq/eval/tunable_rag_evaluator/__init__.py +0 -0
  35. aiq/eval/tunable_rag_evaluator/evaluate.py +263 -0
  36. aiq/eval/tunable_rag_evaluator/register.py +50 -0
  37. aiq/front_ends/console/console_front_end_config.py +1 -1
  38. aiq/front_ends/fastapi/fastapi_front_end_config.py +5 -5
  39. aiq/front_ends/fastapi/fastapi_front_end_plugin_worker.py +27 -18
  40. aiq/front_ends/fastapi/response_helpers.py +33 -19
  41. aiq/memory/__init__.py +2 -2
  42. aiq/meta/pypi.md +18 -18
  43. aiq/observability/async_otel_listener.py +13 -10
  44. aiq/profiler/callbacks/agno_callback_handler.py +2 -2
  45. aiq/profiler/callbacks/langchain_callback_handler.py +1 -1
  46. aiq/profiler/callbacks/llama_index_callback_handler.py +1 -1
  47. aiq/profiler/callbacks/semantic_kernel_callback_handler.py +1 -1
  48. aiq/profiler/decorators/function_tracking.py +1 -1
  49. aiq/profiler/profile_runner.py +1 -1
  50. aiq/registry_handlers/local/local_handler.py +5 -5
  51. aiq/registry_handlers/local/register_local.py +1 -1
  52. aiq/registry_handlers/package_utils.py +2 -2
  53. aiq/registry_handlers/pypi/pypi_handler.py +5 -5
  54. aiq/registry_handlers/pypi/register_pypi.py +3 -3
  55. aiq/registry_handlers/registry_handler_base.py +7 -7
  56. aiq/registry_handlers/rest/register_rest.py +4 -4
  57. aiq/registry_handlers/rest/rest_handler.py +5 -5
  58. aiq/registry_handlers/schemas/package.py +1 -1
  59. aiq/registry_handlers/schemas/publish.py +4 -4
  60. aiq/registry_handlers/schemas/pull.py +5 -4
  61. aiq/registry_handlers/schemas/search.py +7 -7
  62. aiq/retriever/models.py +1 -1
  63. aiq/runtime/loader.py +6 -6
  64. aiq/tool/mcp/mcp_tool.py +3 -2
  65. aiq/tool/retriever.py +1 -1
  66. aiq/utils/io/yaml_tools.py +75 -6
  67. aiq/utils/settings/global_settings.py +1 -1
  68. {aiqtoolkit-1.1.0a20250429.dist-info → aiqtoolkit-1.1.0a20250501.dist-info}/METADATA +22 -21
  69. {aiqtoolkit-1.1.0a20250429.dist-info → aiqtoolkit-1.1.0a20250501.dist-info}/RECORD +74 -71
  70. {aiqtoolkit-1.1.0a20250429.dist-info → aiqtoolkit-1.1.0a20250501.dist-info}/WHEEL +1 -1
  71. {aiqtoolkit-1.1.0a20250429.dist-info → aiqtoolkit-1.1.0a20250501.dist-info}/entry_points.txt +0 -0
  72. {aiqtoolkit-1.1.0a20250429.dist-info → aiqtoolkit-1.1.0a20250501.dist-info}/licenses/LICENSE-3rd-party.txt +0 -0
  73. {aiqtoolkit-1.1.0a20250429.dist-info → aiqtoolkit-1.1.0a20250501.dist-info}/licenses/LICENSE.md +0 -0
  74. {aiqtoolkit-1.1.0a20250429.dist-info → aiqtoolkit-1.1.0a20250501.dist-info}/top_level.txt +0 -0
@@ -42,12 +42,12 @@ class VisualizeFields(str, Enum):
42
42
 
43
43
 
44
44
  class SearchQuery(BaseModel):
45
- """Represents the search criteria that will be used to discover useful AgentIQ components.
45
+ """Represents the search criteria that will be used to discover useful AIQ Toolkit components.
46
46
 
47
47
  Args:
48
- query (str): A query string used to find useful AgentIQ components.
48
+ query (str): A query string used to find useful AIQ Toolkit components.
49
49
  fields (list[SearchFields]): The list of fields used when applying the query string.
50
- component_types (list[AIQComponentEnum]): AgentIQ components types to filter search results.
50
+ component_types (list[AIQComponentEnum]): AIQ Toolkit components types to filter search results.
51
51
  top_k (int): Specifies the number of search results to provide.
52
52
  """
53
53
 
@@ -61,10 +61,10 @@ class SearchResponseItem(BaseModel):
61
61
  """Represents an individual item in the search response, including elements of it's discovery metadata.
62
62
 
63
63
  Args:
64
- package (str): The name of the AgentIQ package that includes the component.
65
- version (str): The version of the AgentIQ package that includes the component.
66
- component_type (AIQComponentEnum): Type of AgentIQ component this item represents.
67
- description (str): A description of this AgentIQ component.
64
+ package (str): The name of the AIQ Toolkit package that includes the component.
65
+ version (str): The version of the AIQ Toolkit package that includes the component.
66
+ component_type (AIQComponentEnum): Type of AIQ Toolkit component this item represents.
67
+ description (str): A description of this AIQ Toolkit component.
68
68
  developer_notes (str): Additional details that would help a developer use this component.
69
69
  """
70
70
 
aiq/retriever/models.py CHANGED
@@ -26,7 +26,7 @@ from aiq.utils.type_converter import GlobalTypeConverter
26
26
 
27
27
  class AIQDocument(BaseModel):
28
28
  """
29
- Object representing a retrieved document/chunk from a standard AgentIQ Retriever.
29
+ Object representing a retrieved document/chunk from a standard AIQ Toolkit Retriever.
30
30
  """
31
31
  page_content: str = Field(description="Primary content of the document to insert or retrieve")
32
32
  metadata: dict[str, Any] = Field(description="Metadata dictionary attached to the AIQDocument")
aiq/runtime/loader.py CHANGED
@@ -53,7 +53,7 @@ class PluginTypes(IntFlag):
53
53
  # Convenience flag for groups of plugin types
54
54
  CONFIG_OBJECT = COMPONENT | FRONT_END | EVALUATOR
55
55
  """
56
- Any plugin that can be specified in the AgentIQ configuration file.
56
+ Any plugin that can be specified in the AIQ Toolkit configuration file.
57
57
  """
58
58
  ALL = COMPONENT | FRONT_END | EVALUATOR | REGISTRY_HANDLER
59
59
  """
@@ -63,8 +63,8 @@ class PluginTypes(IntFlag):
63
63
 
64
64
  def load_config(config_file: StrPath) -> AIQConfig:
65
65
  """
66
- This is the primary entry point for loading an AgentIQ configuration file. It ensures that all plugins are loaded
67
- and then validates the configuration file against the AIQConfig schema.
66
+ This is the primary entry point for loading an AIQ Toolkit configuration file. It ensures that all plugins are
67
+ loaded and then validates the configuration file against the AIQConfig schema.
68
68
 
69
69
  Parameters
70
70
  ----------
@@ -82,7 +82,7 @@ def load_config(config_file: StrPath) -> AIQConfig:
82
82
 
83
83
  config_yaml = yaml_load(config_file)
84
84
 
85
- # Validate configuration adheres to AgentIQ schemas
85
+ # Validate configuration adheres to AIQ Toolkit schemas
86
86
  validated_aiq_config = validate_schema(config_yaml, AIQConfig)
87
87
 
88
88
  return validated_aiq_config
@@ -91,8 +91,8 @@ def load_config(config_file: StrPath) -> AIQConfig:
91
91
  @asynccontextmanager
92
92
  async def load_workflow(config_file: StrPath, max_concurrency: int = -1):
93
93
  """
94
- Load the AgentIQ configuration file and create an AIQRunner object. This is the primary entry point for running
95
- AgentIQ workflows.
94
+ Load the AIQ Toolkit configuration file and create an AIQRunner object. This is the primary entry point for running
95
+ AIQ Toolkit workflows.
96
96
 
97
97
  Parameters
98
98
  ----------
aiq/tool/mcp/mcp_tool.py CHANGED
@@ -29,7 +29,8 @@ logger = logging.getLogger(__name__)
29
29
 
30
30
  class MCPToolConfig(FunctionBaseConfig, name="mcp_tool_wrapper"):
31
31
  """
32
- Function which connects to a Model Context Protocol (MCP) server and wraps the selected tool as an AgentIQ function.
32
+ Function which connects to a Model Context Protocol (MCP) server and wraps the selected tool as an AIQ Toolkit
33
+ function.
33
34
  """
34
35
  # Add your custom configuration parameters here
35
36
  url: HttpUrl = Field(description="The URL of the MCP server")
@@ -44,7 +45,7 @@ class MCPToolConfig(FunctionBaseConfig, name="mcp_tool_wrapper"):
44
45
  @register_function(config_type=MCPToolConfig)
45
46
  async def mcp_tool(config: MCPToolConfig, builder: Builder):
46
47
  """
47
- Generate an AgentIQ Function that wraps a tool provided by the MCP server.
48
+ Generate an AIQ Toolkit Function that wraps a tool provided by the MCP server.
48
49
  """
49
50
 
50
51
  from aiq.tool.mcp.mcp_client import MCPBuilder
aiq/tool/retriever.py CHANGED
@@ -58,7 +58,7 @@ def _get_description_from_config(config: AIQRetrieverConfig) -> str:
58
58
  @register_function(config_type=AIQRetrieverConfig)
59
59
  async def aiq_retriever_tool(config: AIQRetrieverConfig, builder: Builder):
60
60
  """
61
- Configure an AgentIQ Retriever Tool which supports different clients such as Milvus and Nemo Retriever.
61
+ Configure an AIQ Toolkit Retriever Tool which supports different clients such as Milvus and Nemo Retriever.
62
62
 
63
63
  Args:
64
64
  config: A config object with required parameters 'client' and 'client_config'
@@ -14,37 +14,106 @@
14
14
  # limitations under the License.
15
15
 
16
16
  import io
17
+ import logging
17
18
  import typing
18
19
 
20
+ import expandvars
19
21
  import yaml
20
22
 
21
23
  from aiq.utils.type_utils import StrPath
22
24
 
25
+ logger = logging.getLogger(__name__)
26
+
27
+
28
+ def _interpolate_variables(value: str | int | float | bool | None) -> str | int | float | bool | None:
29
+ """
30
+ Interpolate variables in a string with the format ${VAR:-default_value}.
31
+ If the variable is not set, the default value will be used.
32
+ If no default value is provided, an empty string will be used.
33
+
34
+ Args:
35
+ value (str | int | float | bool | None): The value to interpolate variables in.
36
+
37
+ Returns:
38
+ str | int | float | bool | None: The value with variables interpolated.
39
+ """
40
+
41
+ if not isinstance(value, str):
42
+ return value
43
+
44
+ return expandvars.expandvars(value)
45
+
23
46
 
24
47
  def yaml_load(config_path: StrPath) -> dict:
48
+ """
49
+ Load a YAML file and interpolate variables in the format
50
+ ${VAR:-default_value}.
51
+
52
+ Args:
53
+ config_path (StrPath): The path to the YAML file to load.
54
+
55
+ Returns:
56
+ dict: The processed configuration dictionary.
57
+ """
25
58
 
26
59
  # Read YAML file
27
- with open(config_path, 'r', encoding="utf-8") as stream:
28
- config_data = yaml.safe_load(stream)
60
+ with open(config_path, "r", encoding="utf-8") as stream:
61
+ config_str = stream.read()
29
62
 
30
- return config_data
63
+ return yaml_loads(config_str)
31
64
 
32
65
 
33
66
  def yaml_loads(config: str) -> dict:
67
+ """
68
+ Load a YAML string and interpolate variables in the format
69
+ ${VAR:-default_value}.
34
70
 
35
- stream = io.StringIO(config)
71
+ Args:
72
+ config (str): The YAML string to load.
73
+
74
+ Returns:
75
+ dict: The processed configuration dictionary.
76
+ """
77
+
78
+ interpolated_config_str = _interpolate_variables(config)
79
+ assert isinstance(interpolated_config_str, str), "Config must be a string"
80
+
81
+ stream = io.StringIO(interpolated_config_str)
36
82
  stream.seek(0)
37
83
 
38
- return yaml.safe_load(stream)
84
+ # Load the YAML data
85
+ try:
86
+ config_data = yaml.safe_load(stream)
87
+ except yaml.YAMLError as e:
88
+ logger.error("Error loading YAML: %s", interpolated_config_str, exc_info=True)
89
+ raise ValueError(f"Error loading YAML: {e}") from e
90
+
91
+ assert isinstance(config_data, dict)
92
+
93
+ return config_data
39
94
 
40
95
 
41
96
  def yaml_dump(config: dict, fp: typing.TextIO) -> None:
97
+ """
98
+ Dump a configuration dictionary to a YAML file.
42
99
 
100
+ Args:
101
+ config (dict): The configuration dictionary to dump.
102
+ fp (typing.TextIO): The file pointer to write the YAML to.
103
+ """
43
104
  yaml.dump(config, stream=fp, indent=2, sort_keys=False)
44
-
45
105
  fp.flush()
46
106
 
47
107
 
48
108
  def yaml_dumps(config: dict) -> str:
109
+ """
110
+ Dump a configuration dictionary to a YAML string.
111
+
112
+ Args:
113
+ config (dict): The configuration dictionary to dump.
114
+
115
+ Returns:
116
+ str: The YAML string.
117
+ """
49
118
 
50
119
  return yaml.dump(config, indent=2)
@@ -66,7 +66,7 @@ def configure_registry_channel(config_type: RegistryHandlerBaseConfig, channel_n
66
66
 
67
67
 
68
68
  def add_channel_interative(channel_type: str) -> None:
69
- """Add a remote registry channel to publish/search/pull AgentIQ plugin packages.
69
+ """Add a remote registry channel to publish/search/pull AIQ Toolkit plugin packages.
70
70
 
71
71
  Args:
72
72
  channel_type (str): They type of channel to configure.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiqtoolkit
3
- Version: 1.1.0a20250429
3
+ Version: 1.1.0a20250501
4
4
  Summary: Agent Intelligence Toolkit (AIQ Toolkit)
5
5
  Author: NVIDIA Corporation
6
6
  Maintainer: NVIDIA Corporation
@@ -207,7 +207,7 @@ License: Apache License
207
207
  limitations under the License.
208
208
  Keywords: ai,rag,agents
209
209
  Classifier: Programming Language :: Python
210
- Requires-Python: >=3.11
210
+ Requires-Python: <3.13,>=3.11
211
211
  Description-Content-Type: text/markdown
212
212
  License-File: LICENSE-3rd-party.txt
213
213
  License-File: LICENSE.md
@@ -215,6 +215,7 @@ Requires-Dist: aioboto3>=11.0.0
215
215
  Requires-Dist: arize-phoenix~=6.1
216
216
  Requires-Dist: click~=8.1
217
217
  Requires-Dist: colorama~=0.4.6
218
+ Requires-Dist: expandvars~=1.0
218
219
  Requires-Dist: fastapi~=0.115.5
219
220
  Requires-Dist: httpx~=0.27
220
221
  Requires-Dist: jinja2~=3.1
@@ -228,7 +229,7 @@ Requires-Dist: opentelemetry-api~=1.2
228
229
  Requires-Dist: opentelemetry-sdk~=1.3
229
230
  Requires-Dist: pkginfo~=1.12
230
231
  Requires-Dist: platformdirs~=4.3
231
- Requires-Dist: pydantic~=2.10
232
+ Requires-Dist: pydantic==2.10.*
232
233
  Requires-Dist: pymilvus~=2.4
233
234
  Requires-Dist: PyYAML~=6.0
234
235
  Requires-Dist: ragas~=0.2.14
@@ -273,7 +274,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
273
274
  you may not use this file except in compliance with the License.
274
275
  You may obtain a copy of the License at
275
276
 
276
- http:/www.apache.org/licenses/LICENSE-2.0
277
+ http://www.apache.org/licenses/LICENSE-2.0
277
278
 
278
279
  Unless required by applicable law or agreed to in writing, software
279
280
  distributed under the License is distributed on an "AS IS" BASIS,
@@ -282,39 +283,39 @@ See the License for the specific language governing permissions and
282
283
  limitations under the License.
283
284
  -->
284
285
 
285
- ![NVIDIA AgentIQ](https://media.githubusercontent.com/media/NVIDIA/AgentIQ/refs/heads/main/docs/source/_static/agentiq_banner.png "AgentIQ banner image")
286
+ ![NVIDIA Agent Intelligence Toolkit](https://media.githubusercontent.com/media/NVIDIA/AIQToolkit/refs/heads/main/docs/source/_static/aiqtoolkit_banner.png "AIQ Toolkit banner image")
286
287
 
287
- # NVIDIA AgentIQ
288
+ # NVIDIA Agent Intelligence Toolkit
288
289
 
289
- AgentIQ is a flexible library designed to seamlessly integrate your enterprise agents—regardless of framework—with various data sources and tools. By treating agents, tools, and agentic workflows as simple function calls, AgentIQ enables true composability: build once and reuse anywhere.
290
+ AIQ Toolkit is a flexible library designed to seamlessly integrate your enterprise agents—regardless of framework—with various data sources and tools. By treating agents, tools, and agentic workflows as simple function calls, AIQ Toolkit enables true composability: build once and reuse anywhere.
290
291
 
291
292
  ## Key Features
292
293
 
293
- - [**Framework Agnostic:**](https://docs.nvidia.com/agentiq/latest/concepts/plugins.html) Works with any agentic framework, so you can use your current technology stack without replatforming.
294
- - [**Reusability:**](https://docs.nvidia.com/agentiq/latest/guides/sharing-workflows-and-tools.html) Every agent, tool, or workflow can be combined and repurposed, allowing developers to leverage existing work in new scenarios.
295
- - [**Rapid Development:**](https://docs.nvidia.com/agentiq/latest/guides/create-customize-workflows.html) Start with a pre-built agent, tool, or workflow, and customize it to your needs.
296
- - [**Profiling:**](https://docs.nvidia.com/agentiq/latest/guides/profiler.html) Profile entire workflows down to the tool and agent level, track input/output tokens and timings, and identify bottlenecks.
297
- - [**Observability:**](https://docs.nvidia.com/agentiq/latest/guides/observe-workflow-with-phoenix.html) Monitor and debug your workflows with any OpenTelemetry-compatible observability tool.
298
- - [**Evaluation System:**](https://docs.nvidia.com/agentiq/latest/guides/evaluate.html) Validate and maintain accuracy of agentic workflows with built-in evaluation tools.
299
- - [**User Interface:**](https://docs.nvidia.com/agentiq/latest/guides/using-agentiq-ui-and-server.html) Use the AgentIQ UI chat interface to interact with your agents, visualize output, and debug workflows.
300
- - [**MCP Compatibility**](https://docs.nvidia.com/agentiq/latest/components/mcp.html) Compatible with Model Context Protocol (MCP), allowing tools served by MCP Servers to be used as AgentIQ functions.
294
+ - [**Framework Agnostic:**](https://docs.nvidia.com/aiqtoolkit/latest/concepts/plugins.html) Works with any agentic framework, so you can use your current technology stack without replatforming.
295
+ - [**Reusability:**](https://docs.nvidia.com/aiqtoolkit/latest/guides/sharing-workflows-and-tools.html) Every agent, tool, or workflow can be combined and repurposed, allowing developers to leverage existing work in new scenarios.
296
+ - [**Rapid Development:**](https://docs.nvidia.com/aiqtoolkit/latest/guides/create-customize-workflows.html) Start with a pre-built agent, tool, or workflow, and customize it to your needs.
297
+ - [**Profiling:**](https://docs.nvidia.com/aiqtoolkit/latest/guides/profiler.html) Profile entire workflows down to the tool and agent level, track input/output tokens and timings, and identify bottlenecks.
298
+ - [**Observability:**](https://docs.nvidia.com/aiqtoolkit/latest/guides/observe-workflow-with-phoenix.html) Monitor and debug your workflows with any OpenTelemetry-compatible observability tool.
299
+ - [**Evaluation System:**](https://docs.nvidia.com/aiqtoolkit/latest/guides/evaluate.html) Validate and maintain accuracy of agentic workflows with built-in evaluation tools.
300
+ - [**User Interface:**](https://docs.nvidia.com/aiqtoolkit/latest/guides/using-aiqtoolkit-ui-and-server.html) Use the AIQ Toolkit UI chat interface to interact with your agents, visualize output, and debug workflows.
301
+ - [**MCP Compatibility**](https://docs.nvidia.com/aiqtoolkit/latest/components/mcp.html) Compatible with Model Context Protocol (MCP), allowing tools served by MCP Servers to be used as AIQ Toolkit functions.
301
302
 
302
- With AgentIQ, you can move quickly, experiment freely, and ensure reliability across all your agent-driven projects.
303
+ With AIQ Toolkit, you can move quickly, experiment freely, and ensure reliability across all your agent-driven projects.
303
304
 
304
305
  ## Links
305
- * [Documentation](https://docs.nvidia.com/agentiq/latest/index.html): Explore the full documentation for AgentIQ.
306
- * [About AgentIQ](https://docs.nvidia.com/agentiq/latest/intro/why-agentiq.html): Learn more about the benefits of using AgentIQ.
306
+ * [Documentation](https://docs.nvidia.com/aiqtoolkit/latest/index.html): Explore the full documentation for AIQ Toolkit.
307
+ * [About AIQ Toolkit](https://docs.nvidia.com/aiqtoolkit/latest/intro/why-aiqtoolkit.html): Learn more about the benefits of using AIQ Toolkit.
307
308
 
308
309
  ## First time user?
309
- If this is your first time using AgentIQ, it is recommended to install the latest version from the [source repository](https://github.com/NVIDIA/AgentIQ?tab=readme-ov-file#get-started) on GitHub. This package is intended for users who are familiar with AgentIQ applications and need to add AgentIQ as a dependency to their project.
310
+ If this is your first time using AIQ Toolkit, it is recommended to install the latest version from the [source repository](https://github.com/NVIDIA/AIQToolkit?tab=readme-ov-file#get-started) on GitHub. This package is intended for users who are familiar with AIQ Toolkit applications and need to add AIQ Toolkit as a dependency to their project.
310
311
 
311
312
  ## Feedback
312
313
 
313
- We would love to hear from you! Please file an issue on [GitHub](https://github.com/NVIDIA/AgentIQ/issues) if you have any feedback or feature requests.
314
+ We would love to hear from you! Please file an issue on [GitHub](https://github.com/NVIDIA/AIQToolkit/issues) if you have any feedback or feature requests.
314
315
 
315
316
  ## Acknowledgements
316
317
 
317
- We would like to thank the following open source projects that made AgentIQ possible:
318
+ We would like to thank the following open source projects that made AIQ Toolkit possible:
318
319
 
319
320
  - [CrewAI](https://github.com/crewAIInc/crewAI)
320
321
  - [FastAPI](https://github.com/tiangolo/fastapi)