In LangChain einbinden

Verwenden Sie Model Armor mit LangChain um die Sicherheit Ihrer KI-Anwendungen zu verbessern, indem Sie LLM Prompts und Antworten proaktiv prüfen. Um böswillige Eingaben zu verhindern, die Inhalssicherheit zu prüfen und Sicherheitsrichtlinien in Ihren KI-Anwendungen einheitlich durchzusetzen, fügen Sie Model Armor in Ihre LangChain-Workflows ein.

Hinweis

Führen Sie vor der Implementierung des Codes die folgenden Google Cloud Einrichtungsschritte aus:

  • Wählen Sie ein Projekt aus oder erstellen Sie ein Projekt und aktivieren Sie die Abrechnung.
  • Aktivieren Sie die Model Armor API in Ihrem Projekt.
  • Richten Sie die Authentifizierung mit gcloud ein oder legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS fest.
  • Prüfen Sie, ob Ihr Dienstkonto die Rolle „Model Armor User“ (roles/modelarmor.user) hat. Zum Verwalten von Vorlagen benötigen Sie die Rolle „Model Armor Admin“(roles/modelarmor.admin).
  • Erstellen Sie Vorlagen in der Google Cloud Console.

Ausführbare Objekte

Wenn Sie Model Armor mit LangChain verwenden möchten, benötigen Sie zwei primäre ausführbare Objekte, die in die Standardschnittstelle von LangChain passen.

  • ModelArmorSanitizePromptRunnable: Diese Komponente prüft Nutzereingaben (Prompts), bevor sie an das LLM gesendet werden. Sie erkennt böswillige Eingaben oder Richtlinienverstöße.

  • ModelArmorSanitizeResponseRunnable: Diese Komponente prüft die vom LLM generierte Ausgabe, bevor sie an den Nutzer zurückgegeben wird. Alle Änderungen, die der Nutzer nach der primären Sicherheitsprüfung an der Antwort vornimmt, werden nicht gefiltert und erreichen Sie im Rohzustand.

Erforderliche Python-Pakete installieren

Installieren Sie die folgenden Python-Pakete:

  • langchain-google-community Version 3.0.4 oder höher
  • langchain-google-genai
pip install langchain-google-community langchain-google-genai

Nutzungsmuster

Sie können Model Armor mit LangChain entweder durch grundlegende Verkettung oder mithilfe von Middleware verwenden.

Grundlegende Verkettung

Die häufigste Methode zur Verwendung von Model Armor besteht darin, den Prompt-Bereiniger, das Modell und den Antwort-Bereiniger mit dem Pipe-Operator der LangChain Expression Language (LCEL) zu verketten.

from langchain_google_community.model_armor import (
    ModelArmorSanitizePromptRunnable,
    ModelArmorSanitizeResponseRunnable,
)
from langchain_google_genai import ChatGoogleGenerativeAI

# Initialize Model Armor runnables
sanitize_prompt = ModelArmorSanitizePromptRunnable(
    project="PROJECT_ID",
    location="LOCATION",
    template_id="TEMPLATE_ID",
    fail_open="SANITIZE_PROMPT_ERROR_HANDLING"
)

sanitize_response = ModelArmorSanitizeResponseRunnable(
    project="PROJECT_ID",
    location="LOCATION",
    template_id="TEMPLATE_ID",
    fail_open="SANITIZE_RESPONSE_ERROR_HANDLING"
)

# Initialize the model
llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash", <var>...</var>)

# Build the chain
chain = sanitize_prompt | llm | sanitize_response

# Invoke
try:
    result = chain.invoke("<var>YOUR_USER_PROMPT_HERE</var>")
    print(result)
except ValueError as e:
    print(f"Content blocked: {e}")

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID.
  • LOCATION: der Speicherort der Vorlage.
  • TEMPLATE_ID: die ID der Model Armor Vorlage, die Sie unter Hinweis erstellt haben.
  • SANITIZE_PROMPT_ERROR_HANDLING: ein boolescher Wert, der die Fehlerbehandlung für ModelArmorSanitizePromptRunnable steuert; True oder False.
  • SANITIZE_RESPONSE_ERROR_HANDLING: ein boolescher Wert, der die Fehlerbehandlung für ModelArmorSanitizeResponseRunnable steuert; True oder False.

    Bei der Fehlerbehandlung verhält sich Model Armor so:

    • True: Eine Warnung wird protokolliert, aber Inhalte werden auch dann weitergeleitet, wenn Risiken erkannt werden.
    • False: Ein ValueError wird ausgelöst und die Ausführung wird blockiert, wenn unsichere Inhalte erkannt werden.

Middleware für KI-Agenten

Für LangChain-KI-Agenten, die Tools verwenden, können Sie ModelArmorMiddleware verwenden. Diese Middleware wendet das entsprechende ausführbare Objekt für die Bereinigung an verschiedenen Interaktionspunkten an, die der LangChain-KI-Agent bei der Verwendung von Tools durchläuft.

from langchain.agents import create_agent
from langchain.tools import tool
from langchain_google_genai import ChatGoogleGenerativeAI

from langchain_google_community.model_armor import (
    ModelArmorMiddleware,
    ModelArmorSanitizePromptRunnable,
    ModelArmorSanitizeResponseRunnable,
)

# Create Model Armor sanitizers (same configuration as earlier sections)
prompt_sanitizer = ModelArmorSanitizePromptRunnable(
    project="PROJECT_ID",
    location="LOCATION",
    template_id="TEMPLATE_ID",
    fail_open="SANITIZE_PROMPT_ERROR_HANDLING",
)

response_sanitizer = ModelArmorSanitizeResponseRunnable(
    project="PROJECT_ID",
    location="LOCATION",
    template_id="TEMPLATE_ID",
    fail_open="SANITIZE_RESPONSE_ERROR_HANDLING",
)

# Wrap them in the official Model Armor middleware
model_armor_middleware = ModelArmorMiddleware(
    prompt_sanitizer=prompt_sanitizer,
    response_sanitizer=response_sanitizer,
)

# --- Create agent with Model Armor middleware ---
agent = create_agent(
    model="SOME_GEMINI_VERSION",
    tools=[],
    middleware=[model_armor_middleware],
)

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID.
  • LOCATION: der Speicherort der Vorlage.
  • TEMPLATE_ID: die ID der Model Armor Vorlage, die Sie unter Hinweis erstellt haben.
  • SANITIZE_PROMPT_ERROR_HANDLING: ein boolescher Wert, der die Fehlerbehandlung für ModelArmorSanitizePromptRunnable steuert; True oder False.
  • SANITIZE_RESPONSE_ERROR_HANDLING: ein boolescher Wert, der die Fehlerbehandlung für ModelArmorSanitizeResponseRunnable steuert; True oder False.

    Bei der Fehlerbehandlung verhält sich Model Armor so:

    • True: Eine Warnung wird protokolliert, aber Inhalte werden auch dann weitergeleitet, wenn Risiken erkannt werden.
    • False: Ein ValueError wird ausgelöst und die Ausführung wird blockiert, wenn unsichere Inhalte erkannt werden.

Mit dieser Einrichtung wird sichergestellt, dass Eingaben und Ausgaben auch dann geprüft werden, wenn der KI-Agent mehrstufige Schlussfolgerungen zieht oder Tools verwendet.

Dokumentenprüfung

Sie können ausführbare Objekte von Model Armor verwenden, um hochgeladene Dokumente vor der Verarbeitung zu prüfen. Dies ist für Workflows wie die Zusammenfassung unerlässlich, da das Quelldokument möglicherweise verborgene böswillige Inhalte enthält. Sie können den Dateiinhalt laden und ihn über ModelArmorSanitizePromptRunnable weiterleiten, bevor Sie ihn an das LLM senden.

Benutzerdefinierte Ereignisbehandlung

Zur Beobachtbarkeit senden die ausführbaren Objekte ein on_model_armor_finding-Ereignis, wenn unsichere Inhalte erkannt werden. Sie können einen benutzerdefinierten Callback-Handler anhängen, um bestimmte Details zu protokollieren (z. B. Ergebnisse und Inhalte) oder Benachrichtigungen auszulösen, ohne den Anwendungsablauf zu unterbrechen.

from langchain_core.callbacks import BaseCallbackHandler

class SecurityHandler(BaseCallbackHandler):
    def on_custom_event(self, name, data, **kwargs):
        if name == "on_model_armor_finding":
            print(f"Alert: {data['findings']} detected in {data['template_id']}")

# Attach to config
chain.invoke(user_input, config={"callbacks": [SecurityHandler()]})