项目简介
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,方便用户与代理互动、可视化输出和调试工作流。
安装步骤
- 环境准备: 确保您的系统已安装Python 3.11、3.12或3.13。
- 安装核心库: 通过pip安装最新稳定版NeMo Agent Toolkit:
pip install nvidia-nat - 安装可选依赖项 (根据需要): NeMo Agent Toolkit有许多可选依赖项,可按框架分组安装。
- 例如,安装LangChain/LangGraph插件:
pip install "nvidia-nat[langchain]" - 安装所有可选依赖项:
pip install "nvidia-nat[all]"
- 例如,安装LangChain/LangGraph插件:
服务器配置
当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客户端如何连接到它:
-
启动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协议服务器。)
-
配置API Key (如果服务器托管的工具有NVIDIA API Key要求):
export NVIDIA_API_KEY=<your_api_key> -
准备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 -
运行MCP客户端工作流: 在另一个终端中,使用上述'workflow.yml'文件运行工作流。它将通过MCP连接到您的NeMo Agent Toolkit MCP服务器,并调用其发布的工具。
nat run --config_file workflow.yml --input "List five subspecies of Aardvarks"客户端将与MCP服务器通信,执行查询,并将结果输出到控制台。
信息
分类
AI与计算