Migration Guide#
NeMo Agent toolkit is designed to be backwards compatible with the previous version of the toolkit except for changes documented on this page.
Additionally, all new contributions should rely on the most recent version of the toolkit and not rely on any deprecated functionality.
Migrating to a new version of NeMo Agent toolkit#
It is strongly encouraged to migrate any existing code to the latest conventions and remove any deprecated functionality.
Version Specific Changes#
v1.3.0#
CLI Changes#
The MCP server CLI commands have been restructured.
nat mcpis now a command group and can no longer be used to start the MCP server.nat mcp serveis now the main command to start the MCP server.nat info mcphas been removed. Use the newnat mcp clientcommand instead.
Listing MCP Tools:
# Old (v1.2)
nat info mcp
nat info mcp --tool tool_name
# New (v1.3)
nat mcp client tool list
nat mcp client tool list --tool tool_name
Pinging MCP Server:
# Old (v1.2)
nat info mcp ping --url http://localhost:9901/sse
# New (v1.3)
nat mcp client ping --url http://localhost:9901/mcp
API Changes#
API Server Data Models#
The nat.data_models.api_server module has been updated to improve type safety and OpenAI API compatibility.
nat.data_models.api_server.Choicehas been split into two specialized models:nat.data_models.api_server.ChatResponseChoice- for non-streaming responses (containsmessagefield)nat.data_models.api_server.ChatResponseChunkChoice- for streaming responses (containsdeltafield)nat.data_models.api_server.Choiceremains as a backward compatibility alias forChatResponseChoice
nat.data_models.api_server.ChatResponsenow requiresusagefield (no longer optional).
Builder get_* methods switched to asynchronous#
The following builder methods have been switched to asynchronous to be aligned with other builder methods.
nat.builder.Builder.get_function()is now marked as asyncnat.builder.Builder.get_functions()is now marked as asyncnat.builder.Builder.get_memory_client()is now marked as asyncnat.builder.Builder.get_memory_clients()is now marked as asyncnat.builder.Builder.get_tool()is now marked as asyncnat.builder.Builder.get_tools()is now marked as async
Migration example:
# Old (v1.2)
function = builder.get_function("my_function")
# New (v1.3)
function = await builder.get_function("my_function")
MCP Default Transport Changed#
v1.2: Used SSE transport at
http://localhost:9901/ssev1.3: Uses streamable-http transport at
http://localhost:9901/mcp
To use SSE transport for backward compatibility:
nat mcp serve --config_file config.yml --transport sse
Warning
SSE transport does not support authentication. For production deployments, use streamable-http transport with authentication configured.
Package Changes#
Core MCP functionality has been moved to the nvidia-nat-mcp package.
If you are using MCP functionality, you will need to install the nvidia-nat[mcp] extra.
Package Dependency Updates#
The following dependency updates may affect your workflows:
mcpupdated from~1.10to~1.13- Update your MCP server configurations if neededuvicornlimited to<0.36fornest_asynciocompatibilitylangchain-coreupdated to~0.3.75- Review any custom LangChain workflows for compatibilitylanggraphupdated to~0.6.7- Review any custom LangGraph workflows for compatibilitycrewaiupdated to~0.193.2- Review any custom CrewAI workflows for compatibilitysemantic-kernelupdated to~1.35- Review any custom Semantic Kernel workflows for compatibility
Deprecations#
Warning
The following features are deprecated and will be removed in a future release.
nat.telemetry_exporters.weave.WeaveTelemetryExporter.entity- Theentityfield is deprecated. Remove this field from your Weave exporter configuration.use_uvloopconfiguration option - This setting in the general section of the config is deprecated. Remove this option from your workflow configurations.
v1.2.0#
Package Changes#
The
aiqtoolkitpackage has been renamed tonvidia-nat.
Warning
aiqtoolkit will be removed in a future release and is published as a transitional package.
Module Changes#
The
aiqmodule has been deprecated. Usenatinstead.
Warning
aiq will be removed in a future release.
CLI Changes#
The
aiqcommand has been deprecated. Usenatinstead.
Warning
The aiq command will be removed in a future release.
API Changes#
Note
Compatibility aliases are in place to ensure backwards compatibility, however it is strongly encouraged to migrate to the new names.
Types which previously contained
AIQhave had theirAIQprefix removed.aiq.data_models.config.AIQConfig->nat.data_models.config.Configaiq.builder.context.AIQContext->nat.builder.context.Contextaiq.builder.context.AIQContextState->nat.builder.context.ContextStateaiq.builder.user_interaction_manager.AIQUserInteractionManager->nat.builder.user_interaction_manager.UserInteractionManageraiq.cli.commands.workflow.workflow_commands.AIQPackageError->nat.cli.commands.workflow.workflow_commands.PackageErroraiq.data_models.api_server.AIQChatRequest->nat.data_models.api_server.ChatRequestaiq.data_models.api_server.AIQChoiceMessage->nat.data_models.api_server.ChoiceMessageaiq.data_models.api_server.AIQChoiceDelta->nat.data_models.api_server.ChoiceDeltaaiq.data_models.api_server.AIQChoice->nat.data_models.api_server.Choiceaiq.data_models.api_server.AIQUsage->nat.data_models.api_server.Usageaiq.data_models.api_server.AIQResponseSerializable->nat.data_models.api_server.ResponseSerializableaiq.data_models.api_server.AIQResponseBaseModelOutput->nat.data_models.api_server.ResponseBaseModelOutputaiq.data_models.api_server.AIQResponseBaseModelIntermediate->nat.data_models.api_server.ResponseBaseModelIntermediateaiq.data_models.api_server.AIQChatResponse->nat.data_models.api_server.ChatResponseaiq.data_models.api_server.AIQChatResponseChunk->nat.data_models.api_server.ChatResponseChunkaiq.data_models.api_server.AIQResponseIntermediateStep->nat.data_models.api_server.ResponseIntermediateStepaiq.data_models.api_server.AIQResponsePayloadOutput->nat.data_models.api_server.ResponsePayloadOutputaiq.data_models.api_server.AIQGenerateResponse->nat.data_models.api_server.GenerateResponseaiq.data_models.component.AIQComponentEnum->nat.data_models.component.ComponentEnumaiq.front_ends.fastapi.fastapi_front_end_config.AIQEvaluateRequest->nat.front_ends.fastapi.fastapi_front_end_config.EvaluateRequestaiq.front_ends.fastapi.fastapi_front_end_config.AIQEvaluateResponse->nat.front_ends.fastapi.fastapi_front_end_config.EvaluateResponseaiq.front_ends.fastapi.fastapi_front_end_config.AIQAsyncGenerateResponse->nat.front_ends.fastapi.fastapi_front_end_config.AsyncGenerateResponseaiq.front_ends.fastapi.fastapi_front_end_config.AIQEvaluateStatusResponse->nat.front_ends.fastapi.fastapi_front_end_config.EvaluateStatusResponseaiq.front_ends.fastapi.fastapi_front_end_config.AIQAsyncGenerationStatusResponse->nat.front_ends.fastapi.fastapi_front_end_config.AsyncGenerationStatusResponseaiq.registry_handlers.schemas.publish.BuiltAIQArtifact->nat.registry_handlers.schemas.publish.BuiltArtifactaiq.registry_handlers.schemas.publish.AIQArtifact->nat.registry_handlers.schemas.publish.Artifactaiq.retriever.interface.AIQRetriever->nat.retriever.interface.Retrieveraiq.retriever.models.AIQDocument->nat.retriever.models.Documentaiq.runtime.runner.AIQRunnerState->nat.runtime.runner.RunnerStateaiq.runtime.runner.AIQRunner->nat.runtime.runner.Runneraiq.runtime.session.AIQSessionManager->nat.runtime.session.SessionManageraiq.tool.retriever.AIQRetrieverConfig->nat.tool.retriever.RetrieverConfig
Functions and decorators which previously contained
aiq_have hadaiqremoved. Compatibility aliases are in place to ensure backwards compatibility.aiq.experimental.decorators.experimental_warning_decorator.aiq_experimental()->nat.experimental.decorators.experimental_warning_decorator.experimental()aiq.registry_handlers.package_utils.build_aiq_artifact()->nat.registry_handlers.package_utils.build_artifact()aiq.runtime.loader.get_all_aiq_entrypoints_distro_mapping()->nat.runtime.loader.get_all_entrypoints_distro_mapping()aiq.tool.retriever.aiq_retriever_tool()->nat.tool.retriever.retriever_tool()
v1.1.0#
Package Changes#
The
agentiqpackage has been renamed toaiqtoolkit.
Warning
agentiq will be removed in a future release and is published as a transitional package.