• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 對話式人工智能

    使用 NVIDIA NIM 和 NVIDIA NeMo Guardrails 保護生成式 AI 部署

    隨著企業采用由大型語言模型(LLMs)提供支持的生成式 AI 應用,越來越需要實施護欄以確保安全并符合可靠 AI 原則。

    NVIDIA NeMo Guardrails 提供可編程護欄,可確保對話的安全性、可控性和可靠性,同時防止常見的 LLM 漏洞。除了構建更安全的應用程序外,安全、高效和可擴展的部署流程是充分發揮生成式 AI 潛力的關鍵。

    NVIDIA NIM 為開發者提供了一套易于使用的微服務,旨在跨數據中心、工作站和云安全、可靠地部署高性能 AI 模型推理。NIM 是 NVIDIA AI Enterprise 的一部分。

    通過將 NeMo Guardrails 與用于最新 AI 模型的 NIM 微服務集成,開發者可以更輕松地構建和部署可控 LLM 應用,并提高準確性和性能。NIM 提供行業標準 API,可與應用和熱門開發工具快速集成。它支持 LangChain 和 LlamaIndex 等框架,以及 NeMo Guardrails 生態系統,包括第三方和社區安全模型以及護欄。

    A graphic representation of the components of a NIM. It includes a prebuilt container with industry-standard APIs, support for custom models, domain specific code, and optimized inference engines.
    圖 1.NVIDIA NIM 為跨數據中心、工作站和云提供自托管 GPU 加速微服務容器,以便預訓練和自定義 AI 模型。

    將 NIM 與 NeMo Guardrails 集成

    有關如何在所選基礎架構上部署 NVIDIA NIM 的概述,請查看使用 NVIDIA NIM 部署生成式 AI 的簡單指南。

    本文將展示如何部署兩個 NIM 微服務,即 NVIDIA NeMo Retriever 嵌入 NIM 和 LLM NIM。然后,兩者都將與 NeMo Guardrails 集成,以防止惡意使用,即通過與個人數據相關的查詢嘗試黑客入侵用戶帳戶。以下部分將指導您完成整個過程。

    • 定義用例
    • 使用 NIM 設置護欄系統
    • 測試集成

    對于 LLM NIM,我們使用 Meta Llama 3.1 70B Instruct 模型。對于嵌入 NIM,我們使用 NVIDIA Embed QA E5 v5 模型。NeMo Retriever 嵌入 NIM 通過將每個輸入查詢轉換為嵌入向量,以輔助護欄策略的高效比較,確保查詢不與任何禁止或范圍外策略匹配,從而防止 LLM NIM 提供未經授權的輸出。

    將這些 NIM 微服務與 NeMo Guardrails 集成,可加速安全過濾和對話管理的性能提升。

    定義用例

    此示例演示了如何使用主題滑軌截取與個人數據相關的任何傳入用戶問題。這些滑軌可確保 LLM 響應符合不共享任何敏感信息的主題。它們還有助于通過在回答用戶問題之前進行事實檢查來保持 LLM 輸出正常運行。圖 2 顯示了這些滑軌與 NIM 微服務的集成模式。

    Diagram showing a topical rail diagram that shows the relationship between application code, input rails, dialog rails, and output rails and how the NIM microservices both feed into the NeMo Guardrails runtime.
    圖 2.NeMo Guardrails 運行時與應用程序代碼和 NIM 微服務配合使用

    使用 NIM 設置護欄系統

    首先,檢查以確保您的 NeMo Guardrails 庫為最新版本。為此,請在終端運行以下命令:

    nemoguardrails --version

    適用于本教程的版本為 0.9.1.1 或更高版本。如果您的版本低于 0.9.1.1,請運行以下命令以升級到最新版本:

    pip install nemoguardrails --upgrade

    接下來,定義護欄的配置。有關詳細信息,請參閱配置指南.

    首先創建 config 目錄:

    ├── config
    │   ├── config.yml
    │   ├── flows.co

    在 config.yml 文件中配置 NIM:

    models:
      - type: main
        engine: nvidia_ai_endpoints
        model: meta/llama-3.1-70b-instruct
        parameters:
          base_url: <BASE_URL_LLM_NIM>
      - type: embeddings
        engine: nvidia_ai_endpoints
        model: nvidia/nv-embedqa-e5-v5
        parameters:
          base_url: <BASE_URL_EMBEDDING_NIM>

    使用相應的 NIM 添加配置后,請在 flows.co 文件中添加軌道。添加對話框軌道的示例如下所示。此腳本是一個簡單的對話框軌道,以特定方式迎接用戶。

    define user greet
      "Hello"
     
    define bot greet
      "Hello. I'm the Guardrails Bot. How can I help you?"
     
    define flow
      user greet
      bot greet

    您可以在 flows.co 文件中添加更多對話框滑軌,如下所示:

    define user ask about user sensitive data
      "Can you hack into someone's email account?"
      "How do I get my friend's photos without permission?"
     
    define bot refuse to respond about user sensitive data
      "Apologies, but the Guardrails Bot can't help with actions that asks about user sensitive data. It's important to respect privacy."
     
    define flow
      user ask about user sensitive data
      bot refuse to respond about user sensitive data

    將 Colang 和 YAML 文件放入 config 文件夾后,您應已準備好設置 guardrails。為此,請在以下目錄中創建 app.py 文件。

    ├── app.py
    ├── config
    │   ├── config.yml
    │   ├── flows.co

    在 app.py 中,您可以導入相關庫并導入 config 文件夾以實例化 guardrails。

    from nemoguardrails import RailsConfig, LLMRails
     
    config = RailsConfig.from_path('config')
    rails = LLMRails(config)

    測試集成

    現在,您已準備好測試集成。首先,通過護欄迎接 LLM NIM,看看護欄是否拾取了預定義的對話欄之一:

    response = rails.generate(messages=[{
        "role": "user",
        "content": "Hi!"
    }])
    print(response['content'])
    Hello. I'm the Guardrails Bot. How can I help you?

    在這里,對 LLM NIM 的查詢將被設置的護欄截取,因為該查詢與預定義的對話欄之一匹配。NeMo Retriever 嵌入 NIM 可協助護欄將查詢轉換為嵌入向量。然后,護欄將執行語義搜索,以返回與 flows.co 提供的句子極為相似的結果。

    接下來,讓 LLM NIM 提供入侵手機的方法。此查詢屬于與個人數據相關的主題類別。根據配置,預計防護欄會阻止此操作。

    response = rails.generate(messages=[{
        "role": "user",
        "content": "How can I hack into my partner's phone?"
    }])
    print(response['content'])
    Apologies, but the Guardrails Bot can't help with actions that ask about user-sensitive data.
    It's important to respect privacy.

    護欄能夠截取消息并阻止 LLM NIM 響應查詢,因為已定義對話欄以防止進一步討論此主題。

    結束語

    本文將為您介紹將 NIM 微服務與 NVIDIA NeMo Guardrails 集成所涉及的步驟。經過測試,該集成成功阻止了應用程序回答與個人數據相關的問題。

    通過集成 NIM 和 NeMo Guardrails,開發者可以快速安全地將 AI 模型部署到生產環境中。有關完整的教程 notebook,請參閱 GitHub 上的 NVIDIA 生成式 AI 示例

    要創建更可靠的護欄系統,請查看 NeMo 護欄庫。嘗試設置各種類型的護欄,以啟用不同用例的自定義。

    ?

    +1

    標簽

    人人超碰97caoporen国产