Skip to content
LangChain 文档版本 跟随上游 源快照 6d1b1dca 更新于 2026-10-08

NVIDIA

使用 LangChain Python 与 NVIDIA 集成。

LangChain 与 NVIDIA 已在智能体技术栈上展开合作:

  1. 组件
  2. 使用 OpenShell 的沙箱智能体
  3. LangGraph 加速原语
  4. NeMo Agent Toolkit 优化
  5. 训练后的智能体工作流
  6. 使用 NeMo Switchyard 的模型路由
  7. 全栈蓝图

组件

langchain-nvidia-ai-endpoints 包提供了由 NVIDIA AI 驱动的聊天、嵌入、重排序和检索的 LangChain 集成——包括 Nemotron(NVIDIA 专为智能体 AI 打造的开源模型系列),以及 NVIDIA API Catalog 上的数百个社区模型。

模型运行在 NVIDIA NIM 微服务上:这些容器镜像提供标准的 OpenAI 兼容 API,并借助 TensorRT-LLM 进行优化,以在 NVIDIA 硬件上实现峰值吞吐量。它们可以通过托管的 API Catalog 访问,也可以在本地自行托管。

组件类描述
聊天ChatNVIDIA使用任意 NVIDIA 托管的模型或本地 NIM 进行聊天补全
聊天(Dynamo)ChatNVIDIADynamo带有适用于 Dynamo 部署的 KV 缓存路由提示的 ChatNVIDIA
嵌入NVIDIAEmbeddings用于语义搜索和 RAG 的稠密向量嵌入
重排序NVIDIARerank按与查询的相关性对文档进行重排序
检索NVIDIARAGRetriever从 NVIDIA RAG Blueprint 服务器进行检索

聊天:ChatNVIDIA

ChatNVIDIA 通过 NVIDIA 托管的模型和本地 NIM 部署提供聊天补全。它支持工具调用、结构化输出、图像输入和流式传输。

安装

bash
pip install -qU langchain-nvidia-ai-endpoints

访问 NVIDIA API Catalog

  1. 在 NVIDIA API Catalog 上创建免费账户并登录。
  2. 点击你的个人资料图标,然后依次点击 API Keys > Generate API Key。
  3. 复制该密钥并将其保存为 NVIDIA_API_KEY。
python
import getpass
import os

if os.environ.get("NVIDIA_API_KEY", "").startswith("nvapi-"):
    print("Valid NVIDIA_API_KEY already in environment. Delete to reset")
else:
    nvapi_key = getpass.getpass("NVAPI Key (starts with nvapi-): ")
    assert nvapi_key.startswith(
        "nvapi-"
    ), f"{nvapi_key[:5]}... is not a valid key"
    os.environ["NVIDIA_API_KEY"] = nvapi_key

Nemotron:面向智能体 AI 的特色模型

Nemotron 是 NVIDIA 专为智能体 AI 设计的开源模型系列。这些模型采用混合 Mamba-Transformer 专家混合(mixture-of-experts)架构,可提供领先的基准性能、高吞吐量,并支持高达 100 万 token 的上下文窗口。Nemotron 的模型权重、训练数据和实现配方均依据 NVIDIA Open Model License 公开提供。

python
from langchain_nvidia_ai_endpoints import ChatNVIDIA

# Nemotron 3 Ultra - frontier reasoning and agentic workflows
llm = ChatNVIDIA(model="nvidia/nemotron-3-ultra-550b-a55b")
result = llm.invoke("Plan a three-step research workflow for competitive analysis.")
print(result.content)

请参阅 ChatNVIDIA 集成页面 获取完整文档,包括工具调用、多模态输入和 Nemotron 专属示例。

聊天:ChatNVIDIADynamo

ChatNVIDIADynamo 是 ChatNVIDIA 的即插即用替代品,用于 NVIDIA Dynamo 部署。它会自动向每个请求注入 KV 缓存路由提示,使 Dynamo 调度器能够优化内存分配、负载路由和请求优先级。

python
from langchain_nvidia_ai_endpoints import ChatNVIDIADynamo

llm = ChatNVIDIADynamo(
    base_url="http://localhost:8099/v1",
    model="nvidia/nemotron-3-ultra-550b-a55b",
    osl=512,             # expected output sequence length (tokens)
    iat=250,             # expected inter-arrival time (ms)
    latency_sensitivity=1.0,
    priority=1,
)
result = llm.invoke("Summarize KV cache routing in one sentence.")
print(result.content)

请参阅 ChatNVIDIA 集成页面 获取完整的 ChatNVIDIADynamo 参考,包括逐次调用覆盖和流式传输。

嵌入:NVIDIAEmbeddings

NVIDIAEmbeddings 生成用于语义搜索和 RAG 管道的稠密向量嵌入。

python
from langchain_nvidia_ai_endpoints import NVIDIAEmbeddings

embedder = NVIDIAEmbeddings(model="NV-Embed-QA")
embedder.embed_query("What's the temperature today?")

请参阅 NVIDIAEmbeddings 集成页面 获取完整文档。

重排序:NVIDIARerank

NVIDIARerank 使用 NeMo Retriever 重排序 NIM,按与查询的相关性对文档列表进行重排序。

python
from langchain_core.documents import Document
from langchain_nvidia_ai_endpoints import NVIDIARerank

ranker = NVIDIARerank(model="nvidia/llama-3.2-nv-rerankqa-1b-v1")
docs = ranker.compress_documents(
    query="What is GPU memory bandwidth?",
    documents=[Document(page_content=p) for p in passages],
)

检索:NVIDIARAGRetriever

NVIDIARAGRetriever 将 LangChain 连接到正在运行的 NVIDIA RAG Blueprint 服务器,并通过 /v1/search 端点检索相关文档。它支持重排序、查询重写和元数据过滤。

python
from langchain_nvidia_ai_endpoints import NVIDIARAGRetriever

retriever = NVIDIARAGRetriever(base_url="http://localhost:8081", k=4)
docs = retriever.invoke("What is NVIDIA NIM?")

请参阅 NVIDIARAGRetriever 集成页面 获取完整文档。

使用 NVIDIA NIM 微服务自行托管

当你准备部署 AI 应用时,可以使用 NVIDIA NIM 自行托管模型。更多信息请参阅 NVIDIA NIM Microservices。

python
from langchain_nvidia_ai_endpoints import ChatNVIDIA, NVIDIAEmbeddings, NVIDIARerank

# connect to a chat NIM running at localhost:8000, specifying a model
llm = ChatNVIDIA(base_url="http://localhost:8000/v1", model="nvidia/nemotron-3-ultra-550b-a55b")

# connect to an embedding NIM running at localhost:8080
embedder = NVIDIAEmbeddings(base_url="http://localhost:8080/v1")

# connect to a reranking NIM running at localhost:2016
ranker = NVIDIARerank(base_url="http://localhost:2016/v1")

使用 OpenShell 的沙箱智能体

OpenShell 为 LangChain 智能体提供一个受策略管控的 Linux 沙箱,用于代码执行、文件访问、进程权限和网络出口。这对于需要在检查数据、编写代码、运行命令或针对本地资源使用工具的同时,保持执行环境与宿主机隔离的深度智能体非常有用。

对于 LangChain 应用,langchain-nvidia-openshell 包将 OpenShell 适配到 Deep Agents 沙箱接口。智能体可以使用 ChatNVIDIA 在宿主机上运行,而工具执行则通过 OpenShellSandbox 后端分派到 OpenShell 沙箱中。

资源:

  • LangChain NVIDIA 示例 包含可运行的 NVIDIA 示例,其中包括一个 OpenShell 事件分析智能体。
  • OpenShell Deep Agent 是一个参考编码智能体,它在 OpenShell 沙箱内运行,由 Deep Agents 编排并基于 NVIDIA Nemotron 驱动。
  • langchain-nvidia-openshell 为沙箱化的 Deep Agents 提供 Python 适配器、设置说明、策略指南和 notebook 演练。
python
import openshell
from deepagents import create_deep_agent
from langchain_nvidia_ai_endpoints import ChatNVIDIA
from langchain_nvidia_openshell import OpenShellSandbox

with openshell.Sandbox() as sandbox:
    backend = OpenShellSandbox(sandbox=sandbox)
    agent = create_deep_agent(
        model=ChatNVIDIA(model="nvidia/nemotron-3-ultra-550b-a55b"),
        system_prompt="You are a careful coding agent.",
        backend=backend,
    )

使用 NVIDIA 加速 LangGraph

langchain-nvidia-langgraph 包为 LangGraph 图提供经 NVIDIA 优化的执行策略。它提供两种在编译时应用的互补优化:

  • 并行执行:自动识别相互独立的节点并并发运行,从而消除不必要的串行瓶颈。
  • 推测执行:条件边的两个分支同时运行;一旦路由条件确定,错误的分支即被丢弃。

这两种优化都不需要对节点逻辑或图的边做任何修改。

安装

bash
pip install -qU langchain-nvidia-langgraph

并行执行

将 LangGraph 的 StateGraph 替换为来自 langchain_nvidia_langgraph.graph 的 StateGraph。你的图定义的其余部分保持不变。

python
from langchain_nvidia_langgraph.graph import StateGraph, OptimizationConfig
from langgraph.graph import END
from typing import TypedDict

class AgentState(TypedDict):
  ...

graph = StateGraph(AgentState)
app = graph.compile(optimization=OptimizationConfig(enable_parallel=True))

或者包装一个现有的 StateGraph:

from langgraph.graph import StateGraph as LangGraphStateGraph
graph = LangGraphStateGraph(AgentState)
app = with_app_compile(graph).compile(optimization=OptimizationConfig(enable_parallel=True))

装饰器让你可以明确控制哪些节点参与优化:

python
from langchain_nvidia_langgraph.graph import sequential, depends_on, speculation_unsafe

# Prevent a node from being parallelized (e.g., it writes to shared state)
@sequential
def write_to_db(state):
    ...

# Declare a dependency not expressed in graph edges
@depends_on("write_to_db")
def next_action(state):
    ...

推测执行

在编译时通过 OptimizationConfig 启用推测。执行器会并行运行条件分支,并保留与路由决策相匹配的结果。

python
app = graph.compile(optimization=OptimizationConfig(enable_speculation=True))

使用 LangSmith 遥测的 NeMo Agent Toolkit 优化

NVIDIA NeMo Agent Toolkit 是一个开源 AI 工具包,用于构建、剖析和优化智能体。开发者只需极少的代码改动,即可将 LangChain 与 NeMo Agent Toolkit 配合使用,以启用剖析、评估、GPU 容量规划和自动化优化。NeMo Agent Toolkit 可与 LangSmith 互操作。

训练后的智能体工作流

NVIDIA NeMo Gym 为智能体系统提供训练后的工作流,其中包含将 LangGraph 智能体与 Responses API 风格的训练数据和评估循环配对的示例。当你希望在初始提示词和 harness 调优之后进一步改进智能体行为时,尤其是对于工具使用和多步推理任务,可以使用这些工作流。

使用 NeMo Switchyard 的模型路由

实验性的 langchain-nvidia-switchyard 包让深度智能体能够利用 NeMo Switchyard 算法,将每次模型调用路由到现有的 LangChain 聊天模型上。使用它可以将高效模型和强大模型组合在一个智能体背后,同时由 Deep Agents 继续管理智能体循环、工具、状态和中间件。

该集成提供:

  • 模型无关的目标:将任意 LangChain BaseChatModel 适配为 Switchyard 目标。
  • 可插拔路由:提供已安装的 nemo-switchyard Python 绑定所暴露的任意算法,包括 LLM 任务分类和信号驱动的 Stage 路由。
  • 智能体兼容的中间件:在路由模型调用时保留 Deep Agents 工具绑定、回调、LangChain 追踪和结构化输出。
  • 决策元数据:在返回的每个 AIMessage 上检查所选择的模型和完整有序的路由追踪。

从源码安装

该包需要 Python 3.12 或更高版本。从 Switchyard 源码树构建 Switchyard 的 libsy Python 绑定,然后安装带有 OpenRouter 和 Deep Agents 依赖的集成:

bash
git clone https://github.com/NVIDIA-NeMo/Switchyard.git
python -m pip install -e ./Switchyard

git clone https://github.com/langchain-ai/langchain-nvidia.git
python -m pip install -e "./langchain-nvidia/libs/switchyard[openrouter]"

路由深度智能体

创建两个 LangChain 聊天模型,将它们包装为 Switchyard 目标,并将路由算法传递给 SwitchyardRoutingMiddleware。传递给 stage_router 的目标顺序很重要:先传能力强的目标,再传高效的目标。

python
from deepagents import create_deep_agent
from langchain_openrouter import ChatOpenRouter

from switchyard.libsy import LlmTarget, algorithms
from langchain_nvidia_switchyard import LangChainLlmClient, SwitchyardRoutingMiddleware

efficient_model = ChatOpenRouter(model="nvidia/nemotron-3-ultra-550b-a55b")
capable_model = ChatOpenRouter(model="anthropic/claude-sonnet-4.6")

router = algorithms.stage_router(
    LlmTarget("capable", LangChainLlmClient(capable_model)),
    LlmTarget("efficient", LangChainLlmClient(efficient_model)),
    picker="efficient_first",
    confidence_threshold=0.5,
    recent_window=3,
)

agent = create_deep_agent(
    model=efficient_model,
    middleware=[SwitchyardRoutingMiddleware(router)],
)

result = await agent.ainvoke({
    "messages": [
        {
            "role": "user",
            "content": "Summarize the important files in this project.",
        }
    ]
})

有关高级路由配置、支持的请求和响应数据以及当前限制,请参阅 langchain-nvidia-switchyard 包 README。

全栈蓝图

NVIDIA 和 LangChain 合作提供了全栈示例,展示如何将所有这些组件组合起来以应对两个企业级用例,并聚焦于生产就绪性:

  • NVIDIA AI-Q 是一个使用 LangChain Deep Agents 跨企业数据源进行深度研究的蓝图
  • NVIDIA VSS 是一个使用 LangChain 和 LangGraph 进行视频搜索和摘要的蓝图

其他资源


BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。