Skip to content

Latest commit

 

History

History
250 lines (188 loc) · 15.9 KB

File metadata and controls

250 lines (188 loc) · 15.9 KB

NVIDIA NeMo Agent Toolkit

NVIDIA NeMo Agent Toolkit

License: Apache 2.0 GitHub Release PyPI version GitHub issues GitHub pull requests GitHub Repo stars GitHub forks Ask DeepWiki Open in Colab

NVIDIA NeMo Agent Toolkit adds intelligence to AI agents across any framework—enhancing speed, accuracy, and decision-making through enterprise-grade instrumentation, observability, and continuous learning.

🔥 New Features

  • Dynamo Runtime Intelligence: Automatically infer per-request latency sensitivity from agent profiles and apply runtime hints for cache control, load-aware routing, and priority-aware serving.
  • Agent Performance Primitives (APP): Introduce framework-agnostic performance primitives that accelerate graph-based agent frameworks such as LangChain, CrewAI, and Agno with parallel execution, speculative branching, and node-level priority routing.
  • LangSmith Native Integration: Observe end-to-end agent execution with native LangSmith tracing, run evaluation experiments, compare outcomes, and manage prompt versions across development and production workflows.
  • FastMCP Workflow Publishing: Publish NeMo Agent Toolkit workflows as MCP servers using the FastMCP server runtime to simplify MCP-native deployment and integration.
  • Migration notice: 1.5.0 simplifies package installation and dependency management. See the Migration Guide.

✨ Key Features

  • 🛠️ Building Agents: Accelerate your agent development with tools that make it easier to get your agent into production.
    • 🧩 Framework Agnostic: Work side-by-side with agentic frameworks to add the instrumentation necessary for observing, profiling, and optimizing your agents. Use the toolkit with popular frameworks such as LangChain, LlamaIndex, CrewAI, Microsoft Semantic Kernel, and Google ADK, as well as custom enterprise agentic frameworks and simple Python agents.
    • 🔁 Reusability: Build components once and use them multiple times to maximize the value from development effort.
    • Customization: Start with a pre-built agent, tool, or workflow, and customize it to your needs.
    • 💬 Built-In User Interface: Use the NeMo Agent Toolkit UI chat interface to interact with your agents, visualize output, and debug workflows.
  • 📈 Agent Insights: Utilize NeMo Agent Toolkit instrumentation to better understand how your agents function at runtime.
    • 📊 Profiling: Profile entire workflows from the agent level all the way down to individual tokens to identify bottlenecks, analyze token efficiency, and guide developers in optimizing their agents.
    • 🔎 Observability: Track performance, trace execution flows, and gain insights into your agent behaviors in production.
  • 🚀 Agent Optimization: Improve your agent's quality, accuracy, and performance with a suite of tools for all phases of the agent lifecycle.
  • 🔌 Protocol Support: Integrate with common protocols used to build agents.

With NeMo Agent Toolkit, you can move quickly, experiment freely, and ensure reliability across all your agent-driven projects.

🚀 Installation

Before you begin using NeMo Agent Toolkit, ensure that you have Python 3.11, 3.12, or 3.13 installed on your system.

Note

For users who want to run the examples, it's required to clone the repository and install from source to get the necessary files required to run the examples. Please refer to the Examples documentation for more information.

To install the latest stable version of NeMo Agent Toolkit from PyPI, run the following command:

pip install nvidia-nat

NeMo Agent Toolkit has many optional dependencies that can be installed with the core package. Optional dependencies are grouped by framework. For example, to install the LangChain/LangGraph plugin, run the following:

pip install "nvidia-nat[langchain]"

Detailed installation instructions, including the full list of optional dependencies and their conflicts, can be found in the Installation Guide.

🌟 Hello World Example

Before getting started, it's possible to run this simple workflow and many other examples in Google Colab with no setup. Click here to open the introduction notebook: Open in Colab.

  1. Ensure you have set the NVIDIA_API_KEY environment variable to allow the example to use NVIDIA NIMs. An API key can be obtained by visiting build.nvidia.com and creating an account.

    export NVIDIA_API_KEY=<your_api_key>
  2. Create the NeMo Agent Toolkit workflow configuration file. This file will define the agents, tools, and workflows that will be used in the example. Save the following as workflow.yml:

    functions:
       # Add a tool to search wikipedia
       wikipedia_search:
          _type: wiki_search
          max_results: 2
    
    llms:
       # Tell NeMo Agent Toolkit which LLM to use for the agent
       nim_llm:
          _type: nim
          model_name: nvidia/nemotron-3-nano-30b-a3b
          temperature: 0.0
          chat_template_kwargs:
             enable_thinking: false
    
    workflow:
       # Use an agent that 'reasons' and 'acts'
       _type: react_agent
       # Give it access to our wikipedia search tool
       tool_names: [wikipedia_search]
       # Tell it which LLM to use
       llm_name: nim_llm
       # Make it verbose
       verbose: true
       # Retry up to 3 times
       parse_agent_response_max_retries: 3
  3. Run the Hello World example using the nat CLI and the workflow.yml file.

    nat run --config_file workflow.yml --input "List five subspecies of Aardvarks"

    This will run the workflow and output the results to the console.

    Workflow Result:
    ['Here are five subspecies of Aardvarks:\n\n1. Orycteropus afer afer (Southern aardvark)\n2. O. a. adametzi  Grote, 1921 (Western aardvark)\n3. O. a. aethiopicus  Sundevall, 1843\n4. O. a. angolensis  Zukowsky & Haltenorth, 1957\n5. O. a. erikssoni  Lönnberg, 1906']

📚 Additional Resources

🛣️ Roadmap

  • Automatic Reinforcement Learning (RL) to fine-tune LLMs for a specific agent.
  • Integration with NVIDIA Dynamo to reduce LLM latency at scale.
  • Improve agent throughput with KV-Cache optimization.
  • Improved, standalone evaluation harness and migration to ATIF for trajectory format.
  • Support for additional programming languages (TypeScript, Rust, Go, WASM) with compiled libraries.
  • Phasing out wrapping architecture to ease onboarding for more agents.
  • Support for adding skills and sandboxes to existing agents.
  • MCP authentication improvements.
  • Improved memory interface to support self-improving agents.

📊 Telemetry

The NeMo Agent Toolkit includes runtime telemetry hooks for the nat command-line tool to help guide improvements. Telemetry is best-effort and never blocks or fails a CLI invocation. Once you opt in (see below), events are sent to the shared NeMo Usage Telemetry ingest.

How consent works

The first time you run an interactive nat command, you'll see a one-time consent prompt explaining what is collected and asking whether to allow it. The prompt defaults to yes (pressing Enter accepts); type n to opt out. Your decision is persisted to ~/.config/nat/telemetry.toml and respected on every subsequent invocation.

In non-interactive contexts (CI, cron, piped scripts, daemons), telemetry is always off unless you explicitly enable it via the environment variable below. We never send data when there's no opportunity to ask.

You can change your decision anytime:

nat configure telemetry --enable     # opt in
nat configure telemetry --disable    # opt out
nat configure telemetry --status     # show the current effective state

Or override the persisted decision (and skip the prompt) via environment variable:

export NAT_TELEMETRY_ENABLED=false   # disable for this shell session
export NAT_TELEMETRY_ENABLED=true    # enable for this shell session

The environment variable takes precedence over the persisted file. If both disagree, nat configure telemetry --status will tell you which one is winning.

What is collected

For each nat command invocation, a single event is sent at exit containing:

  • The top-level command name, such as run, serve, or evaluate.
  • The second-level command name when applicable, such as list-components for nat info list-components.
  • The outcome: success, failure, or interrupted.
  • The wall-clock duration in milliseconds.
  • The process exit code.
  • The Python class name of the raised exception on failure (the message is not collected).
  • The Python runtime version, such as 3.11.7.

What is not collected

The following are never collected:

  • Command arguments or option values.
  • Workflow names, function names, model names, or any contents of configuration files.
  • File paths, hostnames, usernames, IP addresses, or any other identifying information.
  • The output of any command.

💬 Feedback

We would love to hear from you! Please file an issue on GitHub if you have any feedback or feature requests.

🤝 Acknowledgements

We would like to thank the following groups for their contribution to the toolkit:

  • Synopsys
    • Google ADK framework support.
    • Microsoft AutoGen framework support.
  • W&B Weave Team
    • Contributions to the evaluation and telemetry system.

In addition, we would like to thank the following open source projects that made NeMo Agent Toolkit possible: