项目简介

NVIDIA NeMo Agent Toolkit是一个灵活、轻量级且统一的Python库,旨在简化企业级AI代理与各种数据源和工具的连接和管理。它支持与LangChain、LlamaIndex、CrewAI等主流代理框架无缝协作。该工具包提供了从自动化超参数调优、全面的可观测性到用户界面聊天接口等一系列功能,覆盖了代理应用开发的整个生命周期。其中一个核心功能是作为Model Context Protocol (MCP) 服务器,以标准化方式对外暴露其托管的工具和功能,供LLM客户端调用。

主要功能点

  • MCP服务器功能: 能够将NeMo Agent Toolkit内部构建的工具和工作流作为MCP服务发布,通过JSON-RPC协议实现与LLM客户端的标准化通信,提供上下文信息和功能。
  • 工具与资源管理: 托管和管理各种AI工具及数据资源,提供数据访问和调用外部功能的能力。
  • 跨框架兼容: 与现有主流代理框架(如LangChain, LlamaIndex, CrewAI, Microsoft Semantic Kernel, Google ADK)无缝集成,允许用户在不重构现有技术栈的情况下增强代理能力。
  • 自动化超参数调优: 自动优化代理、工具和工作流的性能、成本和准确性。
  • 全面的可观测性: 集成Phoenix, Weave, Langfuse等流行平台,并兼容基于OpenTelemetry的系统,提供性能监控、执行流程追踪和代理行为洞察。
  • 评估系统: 内置评估工具,用于验证和维护代理工作流的准确性。
  • 用户界面: 提供交互式聊天UI,方便用户与代理互动、可视化输出和调试工作流。

安装步骤

  1. 环境准备: 确保您的系统已安装Python 3.11、3.12或3.13。
  2. 安装核心库: 通过pip安装最新稳定版NeMo Agent Toolkit:
    pip install nvidia-nat
  3. 安装可选依赖项 (根据需要): NeMo Agent Toolkit有许多可选依赖项,可按框架分组安装。
    • 例如,安装LangChain/LangGraph插件:
      pip install "nvidia-nat[langchain]"
    • 安装所有可选依赖项:
      pip install "nvidia-nat[all]"

服务器配置

当NeMo Agent Toolkit作为MCP服务器启动时,MCP客户端需要以下配置信息来建立连接。这些配置应在客户端连接时作为参数提供。

{
  "server_name": "NeMo Agent Toolkit MCP",
  "transport": "streamable-http",
  "url": "http://localhost:9901/mcp"
}
  • 'server_name': MCP服务器的识别名称,默认为"NeMo Agent Toolkit MCP"。
  • 'transport': 客户端与MCP服务器通信的协议。支持'stdio', 'sse', 'streamable-http'。推荐使用'streamable-http',以获得最佳性能和功能支持。
  • 'url': 当'transport'为'sse'或'streamable-http'时,此为MCP服务器的访问URL。通常包含服务器的IP地址、端口号,以及API路径(例如 '/sse' 或 '/mcp')。例如 'http://localhost:9901/mcp'。
  • 当'transport'为'stdio'时,客户端将负责启动MCP服务器进程。此时,配置中将包含'command'和'args'字段:
    • 'command': 启动MCP服务器进程的命令,例如 'nat mcp start --transport stdio'。
    • 'args': 传递给'command'的额外参数。

基本使用方法

以下示例展示了如何启动NeMo Agent Toolkit作为MCP服务器,以及一个MCP客户端如何连接到它:

  1. 启动NeMo Agent Toolkit作为MCP服务器: 打开终端,运行以下命令以HTTP流式协议启动MCP服务器。这将使服务器在'http://0.0.0.0:9901/mcp'地址监听请求。

    nat mcp start --transport streamable-http --host 0.0.0.0 --port 9901

    (您也可以使用'--transport stdio'在当前终端进程中启动服务器,或'--transport sse'启动SSE协议服务器。)

  2. 配置API Key (如果服务器托管的工具有NVIDIA API Key要求):

    export NVIDIA_API_KEY=<your_api_key>
  3. 准备MCP客户端配置 (例如,使用NeMo Agent Toolkit自身作为客户端): 创建一个'workflow.yml'文件,其中定义了一个MCP客户端函数组,用于连接到我们刚刚启动的MCP服务器。假设该服务器发布了一个名为'wikipedia_search'的工具。

    functions:
        # 定义一个MCP客户端函数组,连接到远程MCP服务器
        my_mcp_client:
            _type: mcp_client
            server:
                transport: streamable-http
                url: http://localhost:9901/mcp # 指向本地MCP服务器的地址
    
    llms:
        # 定义一个LLM提供者
        nim_llm:
            _type: nim
            model_name: meta/llama-3.1-70b-instruct
            temperature: 0.0
    
    workflow:
        # 定义一个ReAct代理工作流
        _type: react_agent
        # 代理将使用远程MCP服务器提供的'wikipedia_search'工具
        tool_names: [my_mcp_client.wikipedia_search]
        llm_name: nim_llm
        verbose: true
  4. 运行MCP客户端工作流: 在另一个终端中,使用上述'workflow.yml'文件运行工作流。它将通过MCP连接到您的NeMo Agent Toolkit MCP服务器,并调用其发布的工具。

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

    客户端将与MCP服务器通信,执行查询,并将结果输出到控制台。

信息

分类

AI与计算