生成式人工智能/大语言模型

利用 NVIDIA NIM 微服务和 LangChain 构建智能代理系统

NVIDIA NIM 是 NVIDIA AI Enterprise 的一部分,现在支持对 Llama 3.1 等模型进行工具调用。它还与 LangChain 集成,为您提供用于构建代理工作流程的生产就绪型解决方案。NIM 微服务为 Llama 3.1 等开源模型提供最佳性能,并且可以在 LangChain 应用中通过 NVIDIA API 目录免费测试。

使用 NVIDIA NIM 构建 AI 代理

借助 Llama 3.1 NIM 微服务,您可以为生产部署构建具有高级功能的生成式 AI 应用。您可以使用具有先进代理功能的加速开放模型,构建更复杂、更可靠的应用。有关更多信息,请参阅跨 NVIDIA 平台为 Llama 3.1 提供强效助力

NIM 提供了一个与 OpenAI 兼容的工具,可以通过调用 API 实现熟悉性和一致性。现在,您可以将工具与 LangChain 绑定到 NIM 微服务,以创建结构化输出,为您的应用程序带来代理功能。

NIM 中的工具使用情况

Tool 接受模型的结构化输出,执行操作,并以结构化格式将结果返回模型。这些工具通常涉及外部 API 调用,但这并非强制要求。

例如,天气工具可能会获取San Diego的当前天气,而网络搜索工具可能会获取San Francisco 49ers橄榄球赛的当前分数。

为了支持在代理工作流程中使用 Tool,首先必须训练模型以检测何时调用函数,并输出结构化响应(如带有函数及其参数的 JSON)。然后,该模型被优化为适用于 NVIDIA 基础设施的 NIM 微服务,并且易于部署,使其与 LangChain 的 LangGraph 等框架兼容。

使用 LangChain 使用 Tool 开发 LLM 应用

以下是如何将 LangChain 与支持 Tool 调用的模型(例如 Llama 3.1)结合使用。有关安装包和设置 ChatNVIDIA 库的更多信息,请参阅 LangChain NVIDIA 文档

要获取支持 Tool 调用的模型列表,请运行以下命令:

from langchain_nvidia_ai_endpoints import ChatNVIDIA

tool_models = [model for model in ChatNVIDIA.get_available_models() if model.supports_tools]

您可以创建自己的函数或工具,并使用 LangChain 的 bind_tools 函数将其绑到模型。

from langchain_core.pydantic_v1 import Field
from langchain_core.tools import tool

@tool
def get_current_weather(
    location: str = Field(..., description="The location to get the weather for.")
):
    """Get the current weather for a location."""
    ...

llm = ChatNVIDIA(model=tool_models[0].id).bind_tools(tools=[get_current_weather])
response = llm.invoke("What is the weather in Boston?")
response.tool_calls

您可以在 get_current_weather 函数中使用类似于 Tavily API 的通用搜索或美国国家气象局 API

探索更多资源

前面的代码示例只是一个展示模型如何支持 Tool 的小示例。正如 GitHub 上的 NVIDIA NIM with Tool Calling for Agents 示例所示,LangChain 的 LangGraph 与 NVIDIA NIM 微服务集成。

查看其他 LangGraph 示例,使用 NIM 微服务构建有状态的多参与者应用,用于客户支持、编码助手和高级 RAG 评估等用例。

在使用 self-RAG 和校正 RAG 等策略的代理工作流程中,可以使用 LangGraph 和 NVIDIA NeMo Retriever 构建 Advanced RAG。有关更多信息,请参阅使用 Llama 3.1 和 NVIDIA NeMo Retriever NIM 微服务及相关笔记本构建代理 RAG 工作流

开始使用NVIDIA NIM 微服务!

 

标签