DLAI-Nvidia-Nemo-笔记-全-
DLAI Nvidia Nemo 笔记(全)
001:课程介绍 🚀
概述
在本节课中,我们将要学习 NVIDIA 开源的 NeMo Agent Toolkit(NAT)。这个工具包旨在帮助你将一个可能只在60%的情况下有效的演示版智能体,转化为一个可以安全部署给用户的可靠系统。我们将了解 NAT 如何通过提供关键工具来解决团队在智能体生产化过程中面临的挑战。
课程背景与目标
欢迎来到关于 NVIDIA NeMo Agent Toolkit 的课程。本课程由 NVIDIA 与合作伙伴共同构建,由 NVIDIA GenAI 团队的解决方案架构师 Brian McBer 讲授。
许多团队面临的一个共同问题是:如何将一个可能只在60%的时间里有效的演示版智能体,转变为可以安全部署给用户的可靠产品。NVIDIA 开源的 NeMo Agent Toolkit(NAT)为此提供了关键工具。
具体来说,NAT 让你能够轻松地为智能体工作流添加可观测性、构建并重复运行评估,以及进行部署。
NAT 的核心功能
上一节我们介绍了 NAT 要解决的问题,本节中我们来看看它的核心功能。
1. 集成与可观测性
你可能已经使用 R、Python 或像 LangChain、C AI 这样的框架构建了一个智能体工作流。你可以集成 NAT 来获得可观测性,从而查看你的智能体工作流正在做什么。
例如,如果你的智能体偶尔调用了错误的工具,NAT 会显示执行轨迹,让你能够确切地看到发生了什么。
2. 系统化评估
此外,NAT 让你能够以一种规范化的方式轻松设置和运行评估。如果你想运行一个 CI/CD 流程,或者只是想建立一个系统化的流程来提升智能体性能,这将非常有帮助。
课程实践内容
在了解了 NAT 的功能后,本节我们将介绍本课程将通过什么实践来掌握它。
在本课程中,你将通过构建一个分析气候数据的智能体来学习 NAT。以下是学习路径:
- 注册工具:首先,你将注册 Python 函数作为工具,为你的智能体添加更多功能。智能体使用自然语言进行推理,因此如果没有正确的工具,很难理解它们为何做出某些决策。
- 实现可观测性:你将使用 OpenTelemetry 追踪,并在 Phoenix 中进行可视化,以精确查看你的智能体如何推理、考虑了哪些工具以及做出了什么选择。
- 编写自定义代码:你也会编写自己的自定义代码。
- 构建多智能体工作流:最后,你将把气候分析智能体扩展为一个多智能体工作流。在这个工作流中,使用 LangChain 等框架构建的专门化智能体将在气候分析的不同方面进行协作。
生产部署的挑战与 NAT 的解决方案
部署智能体会引入许多复杂性。你需要 API 端点、身份验证、速率限制等。突然间,你写的是基础设施代码,而不是专注于你的智能体。并且,每当你想要迭代所使用的模型或传入的提示词时,所有这些问题都会再次出现。
通过本课程中的多个实验,你将学习 NAT 如何使 AI 智能体为生产环境做好准备。
致谢与课程启动
许多人为此课程做出了贡献。我们要感谢来自 NVIDIA 的 Josh Wyatt、Michael Demart 和 Bartley Richardson,以及来自 D AI 的 Summer Ray、Ismail Gagari 和 Brenan Brown。
在第一课中,你将在 NAT 中构建你的第一个智能体,将其连接到一个 API 端点,并实时观察其工作。让我们进入下一个视频开始学习。

总结

本节课中我们一起学习了 NVIDIA NeMo Agent Toolkit(NAT)的课程介绍。我们了解了 NAT 旨在解决智能体生产化过程中的可靠性挑战,它通过提供可观测性、系统化评估和简化部署等核心功能来实现这一目标。课程将通过构建一个气候数据分析智能体的实践,带领我们逐步掌握 NAT 的使用,最终将其扩展为复杂的多智能体工作流。
002:课程概述与核心挑战 🎯
在本课程中,我们将学习如何使用 NVIDIA NeMo 智能体工具包构建企业级就绪的智能体系统。你将学会如何构建超越原型的智能体 AI 系统,这些系统在生产环境中是可观测、可部署且可维护的。
课程结束时,你将构建一个完整的智能体应用程序,具备可观测性、API 部署、评估功能,并拥有一个连接到实际运行智能体的前端 UI。
从原型到生产的挑战
上一节我们介绍了课程目标,本节中我们来看看将智能体从原型推向生产时面临的核心挑战。
你或许知道如何构建一个本地原型智能体。它能够处理你发送的提示,并在你的实验中给出预期的答案。但将其部署到生产环境时,现实问题才会真正显现。
无论你是使用 LangChain、LlamaIndex、CrewAI 还是自定义 Python 代码构建的智能体,将其交付给他人使用时,真正的挑战才会暴露出来。此外,虽然市面上有许多优秀的智能体框架,但它们并非都能无缝协作。这些都是“第二天”的问题。
- 第一天是构建智能体。
- 第二天是处理其他所有事情。
以下是“第二天”面临的具体挑战:
- 集成复杂性:管理基于异构组件构建的多智能体系统变得越来越困难,因为智能体可能包含任意嵌套的工具和子智能体。
- 可重复性:智能体系统是非确定性的。没有一致性,其价值就会降低。一个小的参数变化或新的 LLM 都可能显著影响性能。“在我机器上能运行”在生产环境中行不通。
- 代码复用:团队实现了优秀的智能体和工具,但跨框架共享通常意味着重新实现。这种碎片化导致开发者重复劳动,而不是利用整个组织的集体成果。
- 性能与成本:大部分计算发生在外部系统中,涉及昂贵的 LLM 调用。瓶颈隐藏在复杂性之中。时间花在哪里?令牌消耗在哪里?混合工作负载使得优化生产需求变得困难。
我们需要将智能体作为 API 暴露出来。我们需要监控内部发生的情况。我们必须确保边缘情况不会破坏生产。我们需要能够从反馈中持续学习并保护数据隐私。我们还需要建立评估机制以快速发现问题。
NeMo 智能体工具包的解决方案
我们如何解决这些问题?NeMo 智能体工具包正是为解决这些“第二天”问题而设计的,并且它能与你“第一天”构建的任何东西协同工作。
NeMo 智能体工具包是一个开源的 Python 库,它在你的原型智能体与经过实战考验、可部署的产品之间架起了一座桥梁。开源意味着没有供应商锁定。你可以检查代码、贡献改进,并部署到任何地方。
你无需抛弃现有的智能体框架或重写应用程序来使用 NeMo 智能体工具包。它可以与任何流行框架(如 LangChain、LangGraph、CrewAI、Semantic Kernel、Google AIK 或 LlamaIndex 等)构建的智能体协同工作。它增强了你已经构建的内容。可以将其视为一个统一的接口层,提供以下功能:
- 生产基础设施:它提供 API 部署,并可使用 YAML 进行配置。这支持快速原型设计和快速变更。
- 统一可观测性:它提供跨异构框架的端到端追踪。你可以确切地看到发生了什么,即使智能体调用了不同框架中的其他智能体。
- 系统化评估:它为工作流的任何部分提供标准化、完全可定制的评估。
- 性能智能:发现瓶颈、分析工作流并找到优化机会。自动超参数调优将帮助你提高准确性并降低成本。
- 集成支持:正如我们将看到的,NeMo 智能体工具包支持许多插件,包括内存系统、MCP(客户端和服务器)等。
安装很简单,只需 pip install nvidia-nat。对于特定框架,还有可选的插件,你可以根据需要安装。
配置驱动的核心理念
以下是 NeMo 智能体工具包与典型库的不同之处:它是配置驱动的。
与其将智能体、工具和工作流硬编码到你的代码中,不如在 YAML 配置文件中定义它们。你的工具变成可组合的函数。你的 LLM 选择在配置中声明。你的工作流结构也在同一个配置中定义。
为什么这很重要?因为配置文件更容易更改。它们可以进行版本控制,并且你比修改代码更容易地对它们进行实验。你可以不碰 Python 代码就更换 LLM。你可以通过向 YAML 配置添加几行来添加新工具。你可以针对不同的工作流配置运行评估,以查看哪种效果最好,所有这些都无需触及你的代码。
在本课程中,你将通过构建一个气候科学聊天机器人来亲眼看到这一点。但我们将看到的模式适用于任何智能体系统。
生产环境中的具体问题
当你将智能体投入生产时,会出现几个具体问题。

- 了解内部情况:你的智能体接收输入并返回输出。但中间发生了什么?调用了多少工具?这些工具是按什么顺序调用的?如果出现错误,错误是什么?没有这种可见性,调试生产问题就是猜测。
- 作为服务部署:本地脚本对其他应用程序没有用。你必须将智能体作为某种 API 暴露出来,以便其他服务、仪表板和应用可以查询它。这需要一个结构化的部署。
- 判断是否正常工作:你的智能体在测试中似乎正确。但部署后,你会发现边缘情况、幻觉或错误的工具选择。你必须进行系统化评估,以便在它们影响用户之前发现这些问题。
- 理解性能与成本:LLM 调用需要花钱,工具调用需要时间。因此,在生产中,你需要对计算周期和资金去向有细致的了解,以便进行智能优化。
NeMo 智能体工具包提供了解决这些问题的具体工具。
统一可观测性
如何从智能体系统中获取遥测和性能数据?一些编写智能体代码的团队根本没有考虑这一点。其他团队则在代码库中硬编码遥测同步,导致业务逻辑与日志记录和遥测同步交织在一起。

但更好的方法是用能够获取开放遥测数据并将其传递给你的可观测性团队/系统的工具来检测你的代码库。NeMo 智能体工具包使得可以通过配置文件添加这种检测,而不是将代码逻辑与遥测同步交织在一起。其结果是提供一个统一、单一的视图,提供完整的可见性,并使你的团队能够使用他们已知和信任的工具来管理和调试复杂系统。
这样做的好处是:当生产中出现问题时,你可以查看执行轨迹。你可以识别问题是出在工具速度慢、令牌使用过多、工具选择错误,还是其他完全不同的原因。
系统化评估
我们刚刚讨论了可观测性。NeMo 智能体工具包还提供评估,这两者相似但不同。可观测性告诉你发生了什么,它让你查看运行中的系统。但评估告诉你发生的事情是否正确。对于智能体系统,你需要知道什么是正确或错误的。
给定一个输入,你知道正确的输出应该是什么。NeMo 智能体工具包允许你构建这些输入和输出的评估集,并以自动化方式运行它们来测试你的智能体系统。然后,你可以自由地更改配置文件并运行评估,看看它如何影响你的智能体。
这很重要,因为智能体是自适应系统,它们不遵循预定的代码路径。它们能够适应,这很强大,但也意味着边缘情况可能出现。评估帮助你系统地发现这些问题。在本课程中,你将实际遇到一个部署后出现的错误,这个错误在随意测试中不会出现,你将使用评估来系统地捕获它,然后理解它发生的原因。
性能优化与分析
除了可见性和评估,NeMo 智能体工具包还包括自动超参数优化和全面的性能分析能力。
优化器使用 Optuna 和遗传算法自动调整你的工作流。在一个智能体应用中,我们仅通过运行优化器就看到了巨大的改进。
那么优化器如何工作?你定义哪些参数是可调的,例如 LLM 温度、模型选择、检索逻辑或工具参数。然后你指定哪些指标对你重要,例如准确性、延迟或令牌成本。接着,优化器使用不同的参数组合针对测试用例运行你的工作流,并找到优化你目标的设置。
分析器让你深入了解工作流性能。它提供关于令牌使用、工具执行时间、工作流模式的详细见解。你需要这些来优化你的智能体。这些工具共同消除了智能体调优中的猜测。我们不会在课程中实现这些,但它们是你在掌握基础知识后可以探索的强大功能。
集成与互操作性
NeMo 智能体工具包让你将各种系统组合在一起。它使你的智能体和工具可重用,可以混合搭配组件。这里我们可以看到它原生集成的一些框架和库。它是开源且可插拔的。所以,如果你的库不在这里,你可以轻松集成它,并且我们一直在添加新的框架和库。
实践项目:气候科学聊天机器人
你将构建一个真实的系统。这将是一个气候科学聊天机器人,能够获取、分析和可视化真实的 NOAA 气候数据。这不仅仅是一个演示。你将编写代码,自己部署它,并实时看到它工作(有时失败)。你将面临真正的挑战:连接 API、组合多个智能体、调试意外行为。我们将观察令牌使用情况,然后将其部署以进行实际查询。你甚至将使用评估工具发现并修复一个真实的错误。
你将从一个由独立 Python 函数构建的基础 ReAct 智能体开始。这将是一个具体、简单的基础。然后,你将逐步添加现实世界的能力:API 部署、可观测性集成、互操作性、系统化评估,最后是一个 UI。每一步都直接建立在前一步的基础上。你将通过亲手实现来学习生产模式。
总结


本节课中我们一起学习了使用 NVIDIA NeMo 智能体工具包构建企业级智能体的核心概念与挑战。我们了解到,将智能体从原型推向生产面临集成复杂性、可重复性、代码复用及性能成本等“第二天”问题。NeMo 智能体工具包作为一个配置驱动的开源库,通过提供统一可观测性、系统化评估、性能优化和广泛的集成支持,为解决这些问题提供了强大方案。在接下来的课程中,我们将通过构建一个气候科学聊天机器人,亲手实践这些概念。
003:创建你的第一个NAT工作流 🚀

在本节课中,我们将学习如何创建并运行一个NAT工作流。我们将构建一个最小化的工作流,并将其部署为REST API,展示NAT如何为即使是简单的工作流也带来生产就绪的能力。


工作流配置:YAML文件的核心作用
上一节我们介绍了NAT的基本概念,本节中我们来看看构建工作流的核心——配置文件。
NAT CLI使你能够快速运行智能体,并将其作为API供其他服务调用。在本课程中,我们将构建一个简单但可用于生产环境的NAT智能体,使用NAT CLI将其作为API提供服务,并将其连接到UI界面以观察其运行。
NAT智能体工作流的核心是一个配置文件。这是一个简单的YAML文件,允许我们快速更改智能体的运行方式。
以下是一个配置文件的示例:
workflow:
type: react_agent
llm: climate_llm
llms:
climate_llm:
type: nvidia_nim
model: llama-3-70b-instruct
base_url: "https://your-nim-endpoint"
api_key: "your-api-key"
temperature: 0.7
max_tokens: 2048
该配置文件包含两个顶级属性:workflow 和 llms。
llms:定义并配置如何连接到大型语言模型。在NVIDIA NeMo容器中,它可以是其他提供商,如OpenAI或Gemini。workflow:定义智能体的行为。在本例中,它是一个ReAct智能体,并使用下面定义的LLM。
配置可以很简单,也可以很复杂。它们可以包含评估信息、可观测性信息,可以定义多个供智能体调用的工具,以及许多其他功能,如检索器或重排序器,或者也可以像本例一样简单:一个工作流和一些LLM定义。
运行与部署:NAT CLI命令
为了运行这些工作流,我们使用NAT CLI。以下是几个核心的CLI命令:
nat run:使用简单输入运行工作流。nat serve:针对相同的配置文件,将其作为API服务器运行。nat eval:在CI/CD中或自行运行评估。nat optimize:检查和优化你的工作流。nat validate:检查你的YAML文件是否有效。
动手实践:构建第一个工作流
现在,让我们开始创建我们的第一个NAT工作流。首先,我们需要创建NAT配置文件。该配置是一个YAML文件,包含两个顶级属性:llms 和 workflow。NAT会将它们组合成你的智能体工作流。
配置LLM
我们首先来看llms。你可以配置多个LLM。在我们的简单工作流中,我们只配置一个,并将其命名为climate_llm。
每个LLM必须有一个type。这告诉NeMo智能体工具包如何连接到LLM提供商。它可以是openai、google或许多其他提供商。在我们的例子中,我们选择了nvidia_nim,这是一个NVIDIA推理容器。
type决定了你需要为LLM提供哪些属性。例如,它可能需要一个OpenAI API密钥。在我们的例子中,我们需要一个模型名称(llama-3-70b-instruct)、一个告诉它调用地址的基础URL(base_url)、一个API密钥(api_key),并决定将温度(temperature)设置为0.7,最大令牌数(max_tokens)设置为2048。
配置工作流

现在我们的LLM已准备就绪,可以接入生成工作流了。让我们看看workflow部分。

同样,我们定义了一个type。NAT内置了许多类型,当然你也可以创建自己的类型。在本例中,我们使用一个名为chat_completion的内置类型。这是一个对LLM的简单输入-输出响应。

chat_completion需要一个LLM,因此我们将之前定义的climate_llm传递给它。同时,还需要一个系统提示(system_prompt):“你是一个知识渊博的气候科学助手”。
当我们运行这个工作流时,NeMo智能体工具包将查看这个配置文件,加载chat_completion工作流类型,创建我们定义的LLM并将其传递给该工作流类型,然后运行我们的输入与系统提示的组合,并给出输出。
运行工作流
现在我们可以运行工作流了。在本课程中,我们将看到多种运行工作流的方式。在本例中,我们将使用NAT CLI和run命令。这将对工作流执行一次简单的运行。
我们将传递之前保存的配置文件和一个输入问题:“天气和气候有什么区别?”。运行后,我们可以看到工具包已从配置文件开始运行,并返回了答案。
让我们继续问第二个问题。我们使用相同的配置文件,但输入改为:“自工业化前时代以来,全球平均气温上升了多少?”。运行后,我们得到了输出。
让我们再运行一次。这次,我们提出一个需要真实数据分析的具体问题:“2023年全球平均气温是多少?”。在这种情况下,我们的LLM将受限于其训练数据,因此我对结果不抱太高期望。正如我们所见,LLM尽力回答了,但我不相信这些数字是正确的。这里注意到了一个限制:我们的智能体只是一个LLM调用,它无法访问任何外部数据,只有LLM训练时包含的一般知识。我们看到它引用了一些来源,但这些来源可能过时,甚至可能是它“幻觉”出来的。
部署为API
现在我们有了这个NeMo智能体工具包配置,让我们将其部署为API。在生产环境中,你会在终端中运行nat serve。然而,这是在Jupyter notebook环境中运行,因此我们必须将其作为子进程运行。
我们正在处理子进程,因为这是一个Jupyter notebook,但我们运行的命令是nat serve,并传递了配置文件。之前,我们运行nat run并传递了一个输入。而这个serve命令将把该智能体工作流作为一个自包含的API来提供服务。
我们看到服务器已在后台运行,现在我们可以测试API了。为了测试API,我们将使用标准的Python requests库。如果你熟悉OpenAI API的聊天补全端点,那么对此会很熟悉。
我们的服务器运行在本地主机的8000端口上,我们将调用 /v1/chat/completions 端点。对于输入,我们将传递消息和一个单条消息:“是什么导致了厄尔尼诺现象,它如何影响全球天气?”。我们告诉它不要流式返回结果,以便获得一个自包含的JSON。
一旦我们收到200状态码,就可以解析OpenAI API兼容的响应:choices[0].message.content。如果出现错误,我们可以打印出错误信息。运行后,我们得到了一个描述厄尔尼诺是复杂天气现象的响应。
连接用户界面
我们已经看到了如何使用单个输入运行NeMo智能体工具包,以及如何将其作为API提供服务。现在,我们将看看如何启动一个UI,以便通过聊天界面与我们的智能体工作流进行交互。

NAT API可以被任何UI使用。然而,NAT本身提供了一个生产就绪的UI。从Jupyter notebook展示它可能比较复杂,因此我们这里有一个UIManager类来帮助我们从Jupyter notebook中显示它。
NeMo智能体工具包附带了一个功能丰富的UI,我们将在后面的课程中更深入地了解它。现在,让我们快速浏览一下这个UI,看看它如何与我们创建的简单气候助手对话。
这个UI可能让你感到有些熟悉,如果你使用过其他聊天机器人UI的话。它允许你创建新聊天、搜索现有聊天、连接到MCP服务器、导入数据、导出数据等。现在它已连接到我们创建的简单气候助手。
让我向我们的初级气候智能体发送一个提示:“佛罗里达州的天气怎么样?”。由于我们的智能体没有基于任何真实世界的数据集,它只会从LLM的知识中提取信息。我们看到它给出了一些关于佛罗里达天气的一般信息。
你会注意到它给了我一个后续提示,以便我可以继续聊天。尽管我们的智能体很简单,但你可以看到在其之上添加UI为你提供了强大的工具,以便在一系列对话中与智能体工作流进行交互。在本课程我们将要完成的一系列notebook中,我们将构建一个非常强大的气候和数学智能体,能够回答关于多年气候数据的深入问题。有了这个UI,我们将能够深入探讨这些数据。

总结与展望
在本节课中,我们一起学习了如何构建一个简单但可工作的气候助手,它能够回答关于气候数据的一般性问题。我们将其作为API进行了部署,甚至在一个聊天机器人UI中使用了它。虽然它目前还有局限,无法访问真实数据,但这只是一个开始。

接下来,我们将为实际的气候数据分析添加工具。
004:使用工具为智能体增添智能 🛠️




在本节课中,我们将学习如何扩展之前的实体工作流,使其成为一个能够“推理-行动”的智能体。我们将通过为分析NOAA气候数据的Python函数添加工具支持,将简单的聊天机器人转变为能够采取智能、数据驱动行动的智能体。
概述
上一节我们介绍了基础的工作流。本节中,我们将深入探讨如何将普通的Python函数转化为NVIDIA NeMo Agent Toolkit(NAT)可用的工具,并注册给一个“推理-行动”智能体使用。我们将使用真实的NOAA气候数据集,并构建一个气候分析助手。
什么是“推理-行动”智能体?
“推理-行动”是一种常见的智能体模式。它代表“推理”和“行动”,本质上是一个循环。大型语言模型会推理下一步该做什么,制定一个或多个行动,调用这些行动,然后再次推理,直到任务完成为止。
这个智能体可以访问多个工具,并且能够决定在何时使用哪个工具,通过迭代使用工具来获得最终答案。
准备数据与基础函数
我们将使用来自NOAA的真实气候数据集,其中包含美国、法国、日本、巴西等多个国家的信息。首先,我们引入一些能够分析这些数据的普通Python函数。
以下是加载数据并查看其结构的代码:
# 加载气候数据
climate_df = load_climate_data()
print(f"数据集包含 {len(climate_df)} 条温度记录,时间范围从 {climate_df['year'].min()} 到 {climate_df['year'].max()},涵盖 {climate_df['country'].nunique()} 个国家。")
让我们看看其中两个基础函数:
calculate_statistics: 计算温度数据的基本统计信息。create_visualization: 创建气候数据可视化图表并保存为图片。
这些函数目前是独立的,尚未集成到我们的智能体工作流中。
将Python函数注册为NAT工具
要将一个Python函数注册为NAT工具,需要考虑三个核心部分。
1. 定义输入模式
使用Pydantic来定义工具的输入参数,这能帮助大型语言模型理解如何调用该工具。
from pydantic import BaseModel, Field
class CalculateStatsInput(BaseModel):
country: str | None = Field(
default=None,
description="要筛选的国家名称。留空则计算全球统计信息。"
)
2. 创建配置类
NAT基于配置运行。配置类用于从YAML配置文件中接收属性。
class CalculateStatisticsConfig:
# 如果工具需要从YAML接收配置参数,可以在这里定义
# 本例中不需要,所以使用 `...` 表示无属性
...
3. 使用装饰器注册工具
使用 @register_function 装饰器将函数包装并注册到NAT中。
from nemoa_agent_toolkit import register_function
@register_function(config_type=CalculateStatisticsConfig)
async def calculate_statistics_tool(config: CalculateStatisticsConfig, builder) -> AsyncIterator[FunctionInfo]:
# 加载数据
climate_df = load_climate_data()
# 定义实际的工具函数
async def _calculate_statistics(country: str | None = None) -> str:
result = calculate_statistics(climate_df, country)
return result
# 向NAT描述这个工具
yield FunctionInfo(
function=_calculate_statistics,
input_schema=CalculateStatsInput,
description="计算指定国家或全球的温度数据统计信息,包括平均值、趋势等。"
)
虽然需要一些样板代码,但NAT CLI可以自动生成大部分内容。
配置工作流以使用工具
工具注册后,需要在YAML配置文件中进行配置,以便工作流使用。
以下是配置文件的节选:
functions:
- type: “simple_tool_demo.CalculateStatistics”
description: “计算温度统计信息”
workflow:
type: “react_agent”
llm: “climate_llm”
tools: [“calculate_statistics”] # 引用上面定义的函数
max_iterations: 5
max_retries: 2
verbose: true
关键变化是:
workflow.type从简单的llm_call变为react_agent。- 在
tools列表中引用了我们注册的函数。 - 可以设置迭代和重试次数,以处理更复杂的任务。
运行增强后的智能体
安装包含工具的包并运行工作流。
让我们询问一个全球性问题:
nat run config.yaml --input “全球每十年的温度趋势是什么?”
智能体会进行推理,决定调用 calculate_statistics 工具(不指定国家),获取结果,并给出最终答案:“全球温度趋势是每十年上升0.241摄氏度。”
现在,让我们测试一个需要多个工具协作的复杂问题:
nat run config.yaml --input “比较加拿大和巴西的变暖趋势,哪个更快?并创建一张全球趋势的可视化图。”
智能体的推理过程可能如下:
- 调用
filter_by_country或直接为加拿大调用calculate_statistics。 - 为巴西调用
calculate_statistics。 - 比较结果。
- 调用
create_visualization生成全球趋势图。 - 综合所有信息,生成包含数据和图表位置的最终回答。
通过这个过程,智能体展示了其使用多种工具进行复杂分析和决策的能力。
项目打包与生成
一个NAT项目就是一个标准的Python项目。你可以使用NAT CLI快速生成项目脚手架:
nat workflow create climate_assistant
这将创建一个包含正确结构的标准Python项目,你可以在此基础上添加自己的工具和逻辑。


总结
本节课中我们一起学习了如何为NVIDIA NeMo智能体增添智能。核心步骤包括:
- 理解“推理-行动”智能体的工作原理:一个通过循环进行推理、行动直至完成任务的模式。
- 将普通Python函数转化为NAT工具:通过定义Pydantic输入模式、创建配置类和使用
@register_function装饰器进行包装。 - 在YAML配置中集成工具:在
functions部分声明工具,并在react_agent工作流的tools列表中引用它们。 - 运行和测试智能体:智能体现在可以自动选择并组合使用多个工具,回答复杂的数据驱动问题。

通过为智能体添加工具,我们极大地扩展了其能力,使其从简单的文本响应者转变为能够执行实际数据分析、可视化等任务的高级助手。
005:使用 Phoenix 实现可观测性与追踪 🔍


在本节课中,我们将学习如何为你的智能体添加追踪和监控功能,以便实时发现性能问题,并自信地优化工作流程。通过配置几行代码,你将能够洞察智能体内部的工作状态。
什么是可观测性? 🤔
上一节我们介绍了课程目标,本节中我们来看看可观测性的核心概念。
可观测性意味着通过检查AI工作流程的输出来理解其内部发生的情况。在简单的函数级别做到这一点并不难。NVIDIA NeMo 智能体工具包(NAT)的强大之处在于,它能在你所有的函数中实现可观测性,无论这些函数是复杂的、自身也集成了可观测性功能的子智能体,还是简单的Python函数。NAT会收集所有这些数据,并将其发送到你正在使用的任何可观测性服务器。
配置可观测性就像修改配置文件一样简单。
以下是配置可观测性的核心步骤:
- 配置顶层通用部分:在配置文件的顶部,我们有一个通用部分。
- 指定遥测类型:我们告诉NAT我们将配置遥测,特别是追踪遥测。
- 设置目标:我们指定一个名为“Phoenix”的目标,其类型也是“Phoenix”。
- 提供服务器端点:我们给出Phoenix服务器的端点地址。
- (可选)设置项目名称:提供一个项目名称,以便Phoenix对数据进行分类管理。

对应的配置代码结构如下:
general:
telemetry:
tracing:
targets:
phoenix:
type: phoenix
endpoint: "http://your-phoenix-server:port"
project_name: "your_project_name"

设置 Phoenix 服务器 🚀
现在,我们来设置一个Phoenix服务器,并观察可观测性数据如何流入。Phoenix是由Arize开发的一个便捷的UI和可观测性服务器。
通常,你只需在终端运行Phoenix服务器即可启动它。但在本笔记本环境中,我们需要运行一些特定的命令来启动它。
启动后,Phoenix将在后台运行,准备接收来自NAT的遥测数据。
在运行NAT并发送数据之前,我们先查看一下Phoenix UI。以下是一些JavaScript代码,用于显示在你自己的系统上运行的Phoenix位置。运行后,它会提供一个“打开Phoenix UI”的按钮。
这是Phoenix UI的界面。我们不会深入探讨其所有功能,但可以看到它显示“尚未上传任何追踪数据”。当我们的NAT工作流程开始发送追踪数据时,它会附带一个项目名称,该名称将与此处的追踪数据一起显示。点击项目,我们将能看到所有已流入的追踪数据。

运行智能体并观察追踪数据 📊

让我们安装我们一直在使用的气候分析智能体。安装完成后,我们来看看如何将来自Nemo智能体工具包的开源遥测数据流导入Phoenix。
在我们的配置文件中,我们已经配置了LLM、工作流程和工具,现在可以添加另一个名为“General”的部分。这是我们可以放置NAT特定配置数据的地方,例如遥测配置。遥测有多种类型,如日志记录或追踪。我们将进行追踪配置。
因此,我们在这里会有一个追踪头部配置。然后我们可以定义多个不同的追踪目标。你可能拥有多个Phoenix服务器或一个Prometheus服务器。在我们的案例中,我们有一个Phoenix服务器,我们将其命名为“Phoenix”,类型也是“Phoenix”。我们将为此Phoenix配置提供一个指向我们之前启动的Phoenix服务器的端点,并给它一个项目名称“ClimAnalyzer_Baseline”。
这就是我们需要做的全部工作,以便让NeMo智能体工具包工作流程开始将其数据流入Phoenix。
为了看到追踪数据,我们需要实际运行我们的智能体。因此,让我们设置一些查询。这里有三个查询:加拿大的变暖速率、第二冷的年份,以及哪个国家在我们的数据中拥有最多的气象站。让我们运行这些查询。
在运行查询的同时,我将切换到Phoenix界面。

现在我们可以看到这个名为“ClimAnalyzer_Baseline”的项目,这就是我们在配置中命名的。我们总共有三个追踪,这对应于我们运行的三个查询。
如果我们点击进入,可以看到追踪工作流程。我们有三个思维链。在顶层,我们可以看到一些关于这些追踪的信息,例如追踪类型、工作流程名称(如果我们愿意,可以在配置中更改)、输出、任何注释、开始时间、消耗的令牌数量以及延迟时间。很明显,其中一个查询花费的时间比其他两个长得多。让我们深入查看一下。
在这里,我们可以看到智能体在处理其思维链时的思考过程。它进行了LLM调用、工具调用、更多的LLM调用、更多的工具调用。实际上,它进行了大量的LLM调用和工具调用。在我看来,它似乎在反复尝试却进展缓慢。

分析这些调用后,我们得出结论:智能体正在寻找气象站数据,而我们没有专门用于获取气象站数据的工具。因此,它一直在尝试从其他工具中收集各种信息来寻找气象站。
优化工作流程:添加新工具 ⚙️

上一节我们通过追踪发现了性能瓶颈,本节中我们来看看如何通过添加新工具来优化。
让我们看看我们的修复方案。这将在一个新的配置文件中,我们会将旧的配置文件复制到其中。在这个新文件中,我们将添加一个名为“station_statistics”的新函数。
我们将把“station_statistics”注册为智能体工作流程中的一个新工具。可以想象其他所有配置都保持不变。我还要注意我们更改的另一处是项目名称。因此,当我们再次运行这些查询后查看Phoenix时,会看到一个新项目,这有助于将数据分开,以便我们可以看到旧的调用和新的调用。但这将保存在一个新的配置文件中。

让我们在更新后的配置文件中再次运行这些查询。
随着查询的运行,我们可以更新Phoenix界面。我们可以看到数据正在流入。好的,让我们进入更新后的项目。我们可以看到传入的三个查询,但现在让我们看看它们的时间。我们可以看到它们现在都有相似的延迟时间,这表明我们的智能体能够使用新的气象站工具来大幅减少此调用的延迟。
如果没有可观测性,我们的智能体虽然会返回正确答案,但效率低下。现在,借助可观测性,我们可以减少令牌使用量、LLM调用次数以及系统的延迟时间。
总结 📝

在本节课中,我们一起学习了可观测性的重要性。即使我们可能得到了正确答案,但获取方式可能效率低下。我们看到了如何使用Nemo智能体工具包来检测我们的智能体工作流程,将可观测性数据流入像Phoenix这样的工具,检查工作流程,然后修复低效问题。通过实践,我们成功优化了工具使用,并比较了配置更改前后工作流程的性能。
006:多智能体集成 - 添加数学能力



在本节课中,我们将学习如何将预先构建的智能体(无论使用何种框架)集成到NVIDIA NeMo智能体工具包中。我们将把多个智能体组合在一起,并观察NAAT如何协调不同框架,使它们像一个协调的团队一样无缝协作。

智能体集成的必要性
上一节我们介绍了如何构建和使用基础工具。本节中我们来看看,当工具本身的能力不足时,如何通过集成更强大的智能体来扩展工作流。
有时,仅靠工具是不够的。例如,我们当前的气候分析智能体可以检索温度数据、计算基本统计数据并创建可视化图表。但对于更复杂的数学运算,如复合增长率、多步骤计算或复杂预测,它则无法胜任。然而,我们恰好有一个现有的LangGraph计算器智能体,它可以处理复杂的计算。
集成现有智能体
我们将把一个现有的、功能强大的LangGraph智能体,作为NAT工具暴露给我们现有的智能体。这将展示如何通过智能体组合来扩展工作流能力。
我们还将看到如何将LLM等提供商的硬编码配置从智能体中提取出来,放入配置文件,这使得后续的实验和迭代更加容易。
我们会看到NAT如何协调多个智能体框架一起工作。这意味着,通过组合现有智能体,我们将能够构建更强大的工作流。
当前智能体的局限性
以下是我们的气候分析智能体目前无法处理的一些问题示例:
- 计算复合年增长率:如果我们需要观察温度数据并计算其复合年增长率,智能体将无法完成,因为它是一个气候智能体,而非数学智能体。
- 计算加权平均人口:这同样是一个数学问题,我们的气候智能体会在此处遇到困难。
- 预测可再生容量增长:询问关于可再生容量预计增长,何时能达到特定吉瓦数的问题,我们的智能体也无法处理。
它是一个优秀的气候智能体,但不知道如何进行数学运算。
引入计算器智能体
我们这里有一个完全独立的智能体,它与NeMo智能体工具包无关。这是一个LangGraph智能体,也是一个计算器。它已经构建完成,经过测试,可以随时使用,并且懂得如何进行数学运算。
让我们来看一下这个计算器智能体的结构。这是一个多步骤计算器智能体,使用LangGraph编写,并拥有多个可用的数学工具。
以下是该智能体可用的工具示例:
- 基础数学运算
- 计算百分比变化
- 计算复合增长率
让我们设置一个复杂的问题让这个数学智能体来计算。我们将在提示词中输入一个国家的排放数据及其减少情况,然后要求它对这些排放数据进行一些计算。
智能体运行该提示词后,给出了最终结果。我们可以看到它在计算各年份排放量时的推理过程,最终它给出了2025年的计算排放量。这表明它能够执行多种数学函数。
集成到NAT工作流
现在切换回我们的气候智能体。我们向气候智能体提出一个关于印度温度统计的问题。虽然它能够获取气候信息,但无法进行数学计算。让我们运行这个工作流,观察其失败过程。
我们可以看到智能体尝试解决这个问题。它开始计算印度的统计数据,但我们看到它多次调用同一个函数,试图计算包括我们数据集中不存在的年份在内的统计数据。它挣扎了一段时间,最终为了给出我们想要的答案而产生了幻觉。
问题在于:它正确地检索了温度数据,也知道所需的值,但它无法进行数学计算,因此很可能会产生幻觉答案。
我们需要做的是集成我们之前看到的计算器智能体。那么,如何将这个LangGraph智能体集成到我们的NeMo智能体工具包工作流中呢?
我们已经见过如何集成一个简单的Python函数。这没有什么不同,它只是另一个函数。我们已经见过如何获取一个Python函数并将其包装起来,使其作为一个工具暴露的样板代码。
只需要进行几处修改:
- 指定框架包装器:当我们用
@register_function装饰器装饰函数时,现在可以声明framework_wrapper为LlmChain,因为我们的智能体是LangGraph智能体,因此属于LlmChain智能体。这使得NeMo智能体工具包能够更好地将可观测性和评估工具集成到这个被包装的智能体中。 - 使用构建器获取LLM:我们之前见过被注入包装函数的构建器,但当时没有使用它。现在我们可以使用它。我们可以向构建器请求一个LLM。我们在这里请求一个名为
calculator_llm的特定LLM,并告诉构建器需要用适用于LlmChain智能体的适配器来包装这个LLM。然后,我们就可以用那个LLM来创建我们的计算器智能体。 - 返回函数信息:包装函数内部调用智能体本身并返回结果。最后,我们生成一个
FunctionInfo对象,它告诉我们的NeMo智能体工具包工作流如何与这个智能体通信。
更新配置文件
现在我们已经准备好了一个供NeMo智能体工具包使用的计算器智能体,让我们看看配置文件会是什么样子。
我们已经在LLM部分看到了climate_llm。虽然我们可以为计算器智能体重用它,但让我们为它指定一个专用的LLM。
我们将这个LLM称为calculator_llm。这就是之前我们向构建器请求calculator_llm时,它找到该配置的方式。它也将是Anthropic的模型。我们将使用与之前类似的参数,但将max_tokens改为1024,因为进行数学计算应该输出更少的令牌。
我们的气候工具保持不变,但我们将把计算器智能体简单地注册为一个函数。现在,整个计算器智能体作为一个简单的工具被暴露出来,我们可以将这个工具插入到我们的ReAct智能体工作流中。现在,一个ReAct智能体将可以调用所有的气候函数和计算器智能体。
运行集成后的工作流
让我们用新的配置文件运行之前相同的问题,看看它是否能够使用数学智能体。
我们可以看到它从印度获取气候信息。现在,当它开始计算温度统计数据时,我们看到它决定调用我们的计算器智能体。计算器智能体运行,我们可以看到它的输出。最终,它得出了一个非幻觉的答案:印度2050年的温度将约为25.24度。
总结
本节课中我们一起学习了以下内容:
- 扩展智能体能力:我们通过引入另一个现有智能体,为气候智能体添加了数学计算能力。
- 统一集成视角:对于NeMo智能体工具包而言,被集成的智能体只是另一个Python函数。
- 深度配置集成:我们看到可以将NAT深度集成到现有的智能体工作流中,使其基于配置的开发模式能够贯穿我们所有的智能体。

现在,我们的气候智能体可以处理复杂的数学运算了。这就是统一编排的力量。无论你拥有的是LangGraph智能体、CrewAI智能体,还是某些自定义的FastAPI服务,你都可以包装所有这些组件,并通过NATT的统一编排层来协调它们。
007:使用NAT评估框架发现并修复错误
在本节课中,我们将学习如何使用NVIDIA NeMo Agent Toolkit(NAT)的评估框架来衡量智能体和工作流的性能。我们将创建包含标准答案的数据集,发现潜在的错误,并利用评估结果来指导我们进行数据驱动的改进。

为什么需要评估智能体?🤔


评估对于智能体至关重要。在复杂的智能体环境中,评估环节常常被忽视。NAT使得针对您的工作流运行评估变得简单直接。
上一节我们介绍了智能体的基本构建,本节中我们来看看如何系统地评估其表现。
NAT评估流程概述 📊
NAT的评估流程是怎样的?您需要提供一个包含输入列表和预期输出列表的数据集。NAT将针对您的智能体系统运行这些评估,并统计正确和错误的数量。当然,您可能拥有无法用简单输入输出对来表达的自定义评估框架。NAT的评估系统是可插拔的,您可以围绕自己的评估框架创建一个包装器。
在配置文件中设置评估 ⚙️
这在配置文件中如何体现?我们的配置文件新增了一个名为eval的顶级属性。这个eval属性下可以配置几个其他属性。
以下是配置评估的关键部分:
general属性:用于指定评估结果的输出位置以及数据集的加载路径。- 评估器配置:您可以配置一个或多个评估器。
在我们的示例中,我们配置了一个名为answer_accuracy的评估器。它是一个Ragas评估器(这是一个您可能熟悉的评估框架,已内置在NAT中)。Ragas提供了多种不同的评估指标可供选择,本例中我们选择了answer_accuracy。您可以在我们的文档中查看其他指标。
配置驱动开发的优势 🚀
这就是配置驱动开发的力量所在。我们无需修改代码、重写大量Python程序并担心破坏原有功能,而是可以在配置中进行实验。我们可以更改函数、替换所有LLM。如果我们正确设置了评估,就可以在运行评估的同时进行这些更改,并确信我们的修改是正确的。
当然,您可以在配置中添加多个评估项,数量不限。您还可以将它们与我们已介绍过的其他功能(如可观测性)结合使用。您可以在连接到Phoenix的同时并行运行评估,并观察评估运行时追踪数据的流入。
没有可观测性,我们不知道智能体是如何得出正确答案的;没有评估,我们不知道智能体是否得出了正确答案。借助NAT的评估框架,我们可以对多个评估问题-答案对进行评分,并确信我们的智能体已准备就绪。
实践:运行评估并发现错误 🐛
在这个实践环节,我们将具体看看如何进行评估,以及如何使用NeMo智能体工具包发现和修复错误。
首先,我们安装一直在使用的climate_analyzer包,并针对它运行一些评估。
现在,让我们看看我们的评估数据集。这里有一个非常小的评估数据集,包含一个问题和一个答案:
- 问题:1980年奥地利的平均温度是多少?
- 答案:1980年奥地利的平均温度是6.8摄氏度。
让我们从气候数据中查找奥地利1980年的数据。我们得到了一些数值。计算平均值以确认我们的标准答案,从气候数据中我们看到奥地利1980年的平均温度确实是6.8摄氏度。
如何在NAT中运行评估?▶️
让我们查看一个预先写好的评估配置文件。这个文件对您来说应该很熟悉。它包含了我们在之前章节中编写的LLM(气候LLM和计算器LLM)、我们一直在使用的函数(气候函数和计算器函数)以及我们的工作流。
但现在我们添加了一个评估配置部分。eval是一个顶级部分,在eval内部,我们可以添加多个评估集。
以下是配置的核心内容:
- 首先,我们添加一个
general属性,用于指定评估数据的存储位置、运行后是否清理数据以及数据集的来源。 - 然后,我们可以列出我们的评估器。您可以运行多种不同类型的评估器,可能是您自己编写的,也可能是使用标准评估器(如Ragas)。这里我们将使用Ragas。
- 我们将这个评估器命名为
answer_accuracy,类型为ragas(已内置在NeMo智能体工具包中)。Ragas需要一个评估指标,它提供了多个不同的指标,如groundedness。在我们的案例中,我们将选择一个名为answer_accuracy的指标。您可以在我们的文档中找到这些指标。 - 评估器如何评估这个指标?它需要一个LLM,因此我们将传入预配置好的
climate_llm来进行准确性检查。
执行评估命令 📈
我们之前见过nat run命令,现在我们将看到一个新的命令:nat eval。这个命令接收我们之前查看的配置文件,并针对其中定义的工作流运行评估。
评估器会将文件输出到我们在配置中指定的位置。我们看到这里生成了一个answer_accuracy_output.json文件。让我们看看里面有什么。
我们可以看到评估结果:平均得分是0/1,这意味着我们的评估结果非常差。
问题:1980年奥地利的平均温度是多少?这是我们期望得到6.8摄氏度的问题,但我们却得到了9.574摄氏度。因此,我们答错了唯一的评估问题,正确率为0/1。
分析错误原因 🔍
现在,让我们看看它是如何得出这个错误答案的推理步骤。评估器会输出相当庞大和详细的JSON文件,以帮助您追踪评估中哪里出了问题。
我们可以看到评估的推理步骤。它试图获取1980年的平均温度,但它甚至没有将年份传递给我们的calculate_statistics函数。正因为如此,它得到了整个气候时期(1950年至2025年)的平均值。然而,它却给出了一个非常自信的答案。
如果我们没有运行评估,我们很可能会错过这个错误。这个答案并非明显错误,而且智能体对其答案充满信心。但由于我们现在可以使用NAT对智能体运行基于事实的评估,我们可以看到它是不正确的。
修复错误并验证 ✅
现在,让我们使用一个更直接地指示智能体以正确年份进行调用的配置来运行评估。
运行完成后,让我们加载这些评估结果,看看它们是否正确。
现在,从我们拥有的一个问答对的评估结果中,我们可以看到:一个问题中我们得到了一个正确答案。我们正确地得出了6.8摄氏度。
总结 📝

本节课中我们一起学习了如何构建评估数据集,以及如何使用NeMo智能体工具包针对我们的智能体工作流运行评估。我们研究了一个实际案例,其中智能体自信地给出了错误答案,而我们通过运行评估发现了这个问题。随后,我们修复了那个错误,并将我们的智能体重新部署到生产环境中。通过系统的评估,我们可以确保智能体的可靠性和准确性。
008:使用NAT UI进行生产部署 🚀
在本节课中,我们将学习如何将构建好的智能体工作流部署到生产环境。我们将通过一个专业的Web界面来部署我们的气候分析器工作流,学习如何将NAT工作流作为HTTP和WebSocket API提供服务,并连接Nemo Agent Toolkit UI,在一个生产就绪的设置中与智能体进行交互。


概述
上一节我们完成了智能体的构建与组合。本节中,我们将把工作流部署为API,并为其添加一个用户界面,使其能够以自然语言进行交互,从而投入实际使用。
启动API服务器

我们已经见过这个命令:nat serve。该命令会启动一个FastAPI服务器,并支持WebSocket、OpenAPI文档和健康检查。

nat serve
API服务器非常有用。现在,我们可以在其之上运行一个UI,并使用自然语言与其聊天。
部署工作流与UI
我们构建了一个强大的智能体,接入了可观测性,并对其进行了评估。现在,让我们为其添加一个UI,以便在现实世界中使用它。
在本节中,我们将把智能体作为API服务,连接我们在第一课中看到的UI,并了解智能体的“API优先”架构是什么样子。
首先,确保我们的气候分析器已准备就绪。
在之前的课程中我们看到,通常部署智能体工作流API只需运行nat serve。但由于我们将在Jupyter Notebook后台运行它,因此需要一些额外的代码将其作为子进程运行。不必过于纠结这些细节,只需关注我们正在针对配置文件运行nat serve这一事实。API服务器正在运行。
接下来,我们将拉取Nemo Agent Toolkit UI。UI是一个独立开源的代码仓库,这是为了解耦依赖,方便你使用自己的UI。我们现在将其拉取到本地系统并运行。
仓库拉取并准备就绪后,安装依赖并启动它。
在命令行中,你可以运行npm run dev,因为这是一个标准的npm项目。当然,在Jupyter Notebook中我们需要将其作为子进程运行。
UI已启动并在本地3000端口运行。根据你的Jupyter Notebook托管环境,实际URL可能不同。以下是一个辅助脚本,用于获取正确的UI访问地址。
现在,打开这个UI并查看。
与智能体交互

现在,我们可以与气候智能体聊天了。
让我们从一个建议的问题开始:“1990年至2000年,墨西哥的平均温度与全球相比如何?”
你可能记得在第一课中我们看过这个UI,当时它只能输出LLM训练数据中的内容。但现在,我们的气候智能体拥有可以从真实世界数据源获取数据的工具,并且可以使用计算器对该数据进行计算。让我们看看它如何处理这个问题。
对于我们的问题,可以看到智能体成功运行,并给出了正确答案。我们还可以查看中间步骤。例如,我们可以看到智能体的思维链,它调用了各种计算统计数据的工具,以及传递给这些函数的数据和从函数返回的数据。
这是一种在实时聊天环境中评估智能体的方式。

我们可以接着问一个后续问题:“2000年墨西哥的具体平均温度是多少?”,这样我们就能在更贴近人类对话的场景下探讨数据。


让我们再问一个更复杂的问题:“为法国提供完整的气候分析,包括趋势和可视化。”

可以看到,它为法国完成了这项复杂的气候分析,并生成了一个可视化图表,将其存入了仓库。
UI功能与架构


UI功能复杂,具有许多附加特性。例如,我们可以实时流式传输结果,观察智能体的思考过程,而不是一次性获取所有结果。你可以通过HTTP流、WebSocket或标准HTTP与UI通信。
这个UI只是一个示例。任何前端现在都可以连接到你的API。
清理与总结
在查看了UI并让其与我们的智能体交互后,让我们清理所有进程,为后续工作做好准备。
至此,我们完成了部署。
总结
本节课中,我们一起学习了如何将智能体工作流部署到生产环境。
我们构建了一个气候分析器。它连接到真实世界的数据源,组合了多个智能体(一个用LangChain编写,另一个用纯Python函数编写)。我们使用生产级API为其提供服务,对其运行了评估,接入了可观测性工具,并在该API前放置了一个UI,证明了我们可以与智能体进行对话。

通过本节,你已经掌握了使用NVIDIA NeMo Agent Toolkit部署和交互智能体的完整流程。
009:9.课程总结
在本课程中,我们学习了如何使用 NVIDIA NeMo 智能体工具包来创建、观察、评估和部署智能体工作流。现在,让我们回顾一下所学的核心内容。
课程内容回顾

上一节我们介绍了工作流的部署与界面优化,本节中我们将对整个课程进行总结。
以下是我们在本课程中掌握的关键技能:
- 将 Python 函数转化为可复用工具:我们学会了如何将自定义的 Python 功能封装成智能体可以调用的标准化工具。
- 构建具备推理能力的智能体:我们创建了能够分析任务、并自主决定使用哪些工具的智能体。
- 分析与处理现实世界数据:智能体被应用于分析和处理实际场景中的数据。
- 实现智能体行为的可视化:通过追踪和评估功能,我们能够观察和分析智能体的决策过程与行为。
- 编排多智能体协作:我们设计了由多个智能体协同工作以完成复杂任务的工作流。
- 评估智能体性能:我们建立了评估体系,以量化衡量智能体的表现。
- 部署生产级应用:最终,我们将工作流部署为可通过 API 访问、并具备友好界面的生产就绪型应用程序。
核心收获与未来方向
掌握以上技能后,你现在可以:
- 系统化地调试、衡量与改进智能体:基于观察和评估结果,持续优化智能体的表现。
- 扩展工作流规模:将验证过的工作流模式应用到更大、更复杂的场景中。
- 组合工具与智能体以解决新问题:灵活运用所学,构建创新的解决方案来解决各类挑战。
课程虽然结束,但探索才刚刚开始。请持续实验与深入研究,期待看到你构建出的精彩应用。


浙公网安备 33010602011771号