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 微服務!
?