Skip to main content
本文将帮助您开始使用 NVIDIA 聊天模型。有关所有 ChatNVIDIA 功能和配置的详细文档,请访问 API 参考

概述

langchain-nvidia-ai-endpoints 包包含 LangChain 与由 NVIDIA AI Foundation Models 提供支持并托管在 NVIDIA API Catalog 上的聊天模型和嵌入模型的集成。 一个强大的起点是 Nemotron,这是 NVIDIA 专为智能体 AI 构建的开放模型系列。Nemotron 模型使用混合 Mamba-Transformer 专家混合架构,提供领先的准确度,吞吐量比同类模型高出多达 3 倍,并支持高达 100 万 token 的上下文窗口。模型权重、训练数据和实现方案在 NVIDIA Open Model License 下公开发布。 NVIDIA AI Foundation 模型运行在 NIM 微服务上:通过 NVIDIA NGC Catalog 分发的容器镜像,这些镜像暴露了标准的 OpenAI 兼容 API,并使用 TensorRT-LLM 进行优化以实现最大吞吐量。它们可以通过托管的 NVIDIA API Catalog 访问,也可以使用 NVIDIA AI Enterprise 许可证在本地部署。 本页介绍如何使用 LangChain 通过 ChatNVIDIA 与 NVIDIA 模型交互,包括来自 API Catalog 的 Nemotron 和其他模型。 有关通过此 API 访问嵌入模型的更多信息,请参阅 NVIDIAEmbeddings 文档。

集成详情

模型功能

安装包

访问 NVIDIA API Catalog

要获得 NVIDIA API Catalog 的访问权限,请执行以下操作:
  1. NVIDIA API Catalog 上创建一个免费账户并登录。
  2. 单击您的个人资料图标,然后单击 API Keys。将显示 API Keys 页面。
  3. 单击 Generate API Key。将显示 Generate API Key 窗口。
  4. 单击 Generate Key。您应该会看到 API Key Granted,并且您的密钥会出现。
  5. 复制并保存密钥为 NVIDIA_API_KEY
  6. 要验证您的密钥,请使用以下代码。
现在您可以使用您的密钥访问 NVIDIA API Catalog 上的端点。 要启用模型调用的自动跟踪,请设置您的 LangSmith API 密钥:

实例化

现在我们可以访问 NVIDIA API Catalog 中的模型。Nemotron 模型是智能体和推理工作负载的推荐起点:
可以通过传递其模型 ID 来使用 API Catalog 中的任何其他模型:

调用

使用 NVIDIA NIM 微服务自托管

当您准备好部署 AI 应用程序时,可以使用 NVIDIA NIM 自托管模型。更多信息,请参阅 NVIDIA NIM 微服务 以下代码连接到本地托管的 NIM 微服务。

流式传输、批处理和异步

这些模型原生支持流式传输,并且与所有 LangChain LLM 一样,它们提供批处理方法以处理并发请求,以及用于调用、流式传输和批处理的异步方法。以下是几个示例。

支持的模型

查询 available_models 仍然会返回您的 API 凭据提供的所有其他模型。 playground_ 前缀是可选的。

模型类型

以上所有模型都受支持,可以通过 ChatNVIDIA 访问。 一些模型类型支持独特的提示技术和聊天消息。我们将在下面回顾一些重要的内容。 要了解有关特定模型的更多信息,请导航到 AI Foundation 模型的 API 部分 如这里链接所示

用于智能体 AI 的 Nemotron 模型

Nemotron 是 NVIDIA 专为智能体工作流构建的开放模型系列。主要特点:
  • 效率:混合 Mamba-Transformer MoE 架构提供比同类密集模型高出多达 3 倍的吞吐量
  • 长上下文:原生支持高达 100 万 token 的上下文窗口
  • 智能体推理:专门针对多步规划、工具使用和自主软件工程任务进行训练
  • 开放:权重、训练方案和精选数据集在 NVIDIA Open Model License 下发布

通用聊天

meta/llama3-8b-instructmistralai/mixtral-8x22b-instruct-v0.1 这样的模型是很好的全能模型,您可以将它们与任何 LangChain 聊天消息一起使用。示例如下。

代码生成

这些模型接受与常规聊天模型相同的参数和输入结构,但它们在代码生成和结构化代码任务上往往表现更好。一个例子是 meta/codellama-70b

多模态

NVIDIA 还支持多模态输入,这意味着您可以同时提供图像和文本供模型推理。支持多模态输入的一个示例模型是 nvidia/neva-22b 以下是使用示例:

通过 URL 传递图像

通过 base64 编码字符串传递图像

目前,客户端会进行一些额外处理以支持像上面那样的大图像。但对于较小的图像(以及为了更好地说明底层过程),我们可以直接传递图像,如下所示:

直接在字符串中

NVIDIA API 独特地接受内联在 <img/> HTML 标签中的 base64 图像。虽然这与其他 LLM 不兼容,但您可以直接相应地提示模型。

RunnableWithMessageHistory 中的示例用法

与任何其他集成一样,ChatNVIDIA 可以很好地支持聊天实用程序,如 RunnableWithMessageHistory,它类似于使用 ConversationChain。下面,我们展示了应用于 mistralai/mixtral-8x22b-instruct-v0.1 模型的 LangChain RunnableWithMessageHistory 示例。

工具调用

从 v0.2 开始,ChatNVIDIA 支持 bind_tools ChatNVIDIA 提供与 build.nvidia.com 上各种模型以及本地 NIM 的集成。并非所有这些模型都经过工具调用训练。请务必选择确实支持工具调用的模型用于您的实验和应用程序。 您可以通过以下方式获取已知支持工具调用的模型列表:
使用支持工具的模型:
有关其他示例,请参阅 如何使用聊天模型调用工具

与 NVIDIA Dynamo 一起使用

NVIDIA Dynamo 是一个分布式推理服务框架,旨在在数据中心规模的多节点环境中部署模型。它通过将推理的不同阶段分解到不同的 GPU 上,智能地将请求路由到适当的 GPU 以避免冗余计算,并通过将数据缓存扩展到经济高效的存储层来简化和自动化分布式服务的复杂性。 ChatNVIDIADynamoChatNVIDIA 的直接替代品,它会自动将 nvext.agent_hints 注入到每个请求中。这些提示告诉 Dynamo 部署:
  • osl(输出序列长度)— 预期有多少个 token,以便调度器可以规划内存分配
  • iat(到达间隔时间)— 请求到达的速度,以便路由器可以预测负载
  • latency_sensitivity(延迟敏感性)— 请求对延迟的敏感程度,以便交互式调用获得优先路由
  • priority(优先级)— 请求优先级,以便后台工作可以让位于关键路径请求
每个请求都会自动生成一个唯一的 prefix_id,使路由器能够跟踪 KV 缓存亲和性。
本节假设您有一个正在运行的 NVIDIA Dynamo 部署

基本用法

ChatNVIDIA 替换为 ChatNVIDIADynamo,每个请求都会自动包含路由提示。支持所有标准的 ChatNVIDIA 参数。
ChatNVIDIADynamo 除了 ChatNVIDIA 支持的参数外,还接受四个额外参数:

在构造时设置默认值

在创建模型实例时配置 Dynamo 提示。当模型实例始终服务于特定角色时,这很有用,例如高优先级交互式助手与低优先级后台摘要器。

每次调用时覆盖

Dynamo 参数也可以在每次调用时覆盖。当同一个模型实例处理具有不同特征的请求时,这很有用。

使用 Dynamo 提示进行流式传输

Dynamo 提示包含在初始流式请求中。Dynamo 使用它们在 token 开始流动之前选择最佳工作器。

检查有效负载

要进行调试,请使用内部 _get_payload 方法检查 ChatNVIDIADynamo 发送到 NIM 端点的确切有效负载。
这将输出 nvext.agent_hints 部分:

API 参考

有关所有 ChatNVIDIA 功能和配置的详细文档,请访问 API 参考

相关主题