Verwenden Sie Model Armor mit LangChain, um die Sicherheit Ihrer KI-Anwendungen zu verbessern, indem Sie LLM-Prompts und ‑Antworten proaktiv prüfen. Um schädliche Eingaben zu verhindern, die Inhaltssicherheit zu überprü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 eines und aktivieren Sie die Abrechnung.
- Aktivieren Sie die Model Armor API in Ihrem Projekt.
- Richten Sie die Authentifizierung mit
gcloudoder durch Festlegen der UmgebungsvariableGOOGLE_APPLICATION_CREDENTIALSein. - 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). - Vorlagen in der Google Cloud Console erstellen
Runnables
Wenn Sie Model Armor mit LangChain verwenden möchten, benötigen Sie zwei primäre Runnables, die in die standardmäßige LangChain-Schnittstelle passen.
ModelArmorSanitizePromptRunnable: Diese Komponente prüft Nutzereingaben (Prompts), bevor sie das LLM erreichen. Es erkennt schädliche 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öherlangchain-google-genai
pip install langchain-google-community langchain-google-genai
Nutzungsmuster
Sie können Model Armor mit LangChain entweder durch grundlegende Verkettung oder durch Verwendung von Middleware verwenden.
Einfaches Chaining
Model Armor wird am häufigsten verwendet, indem der Prompt-Sanitizer, das Modell und der Antwort-Sanitizer mit dem Pipe-Operator der LangChain Expression Language (LCEL) verkettet werden.
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: Projekt-ID in Google Cloud .LOCATION: Der Speicherort der Vorlage.TEMPLATE_ID: die ID der Model Armor-Vorlage, die Sie unter Vorbereitung erstellt haben.SANITIZE_PROMPT_ERROR_HANDLING: Ein boolescher Wert, der die Fehlerbehandlung fürModelArmorSanitizePromptRunnablesteuert;TrueoderFalse.SANITIZE_RESPONSE_ERROR_HANDLING: Ein boolescher Wert, der die Fehlerbehandlung fürModelArmorSanitizeResponseRunnablesteuert;TrueoderFalse.So geht Model Armor mit Fehlern um:
True: Es wird eine Warnung protokolliert, aber Inhalte werden auch dann zugelassen, wenn Risiken erkannt werden.False: Löst eineValueErroraus und blockiert die Ausführung, wenn unsichere Inhalte erkannt werden.
Middleware für KI-Agenten
Für LangChain-Agents, die Tools verwenden, können Sie ModelArmorMiddleware verwenden. Diese Middleware wendet den entsprechenden Sanitizer-Runnable an verschiedenen Interaktionspunkten an, die der LangChain-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: Projekt-ID in Google Cloud .LOCATION: Der Speicherort der Vorlage.TEMPLATE_ID: die ID der Model Armor-Vorlage, die Sie unter Vorbereitung erstellt haben.SANITIZE_PROMPT_ERROR_HANDLING: Ein boolescher Wert, der die Fehlerbehandlung fürModelArmorSanitizePromptRunnablesteuert;TrueoderFalse.SANITIZE_RESPONSE_ERROR_HANDLING: Ein boolescher Wert, der die Fehlerbehandlung fürModelArmorSanitizeResponseRunnablesteuert;TrueoderFalse.So geht Model Armor mit Fehlern um:
True: Es wird eine Warnung protokolliert, aber Inhalte werden auch dann zugelassen, wenn Risiken erkannt werden.False: Löst eineValueErroraus und blockiert die Ausführung, wenn unsichere Inhalte erkannt werden.
So wird sichergestellt, dass Ein- und Ausgaben auch dann überprüft werden, wenn der Agent mehrstufige Schlussfolgerungen zieht oder Tools verwendet.
Dokumentprüfung
Sie können Model Armor-Runnables verwenden, um hochgeladene Dokumente zu prüfen, bevor Sie sie verarbeiten. Dies ist für Workflows wie die Zusammenfassung unerlässlich, da das Quelldokument möglicherweise verborgene schädliche Inhalte enthält. Sie können den Dateiinhalt laden und ihn durch ModelArmorSanitizePromptRunnable leiten, bevor Sie ihn an das LLM senden.
Benutzerdefinierte Ereignisverarbeitung
Zur Beobachtbarkeit senden die Runnables ein on_model_armor_finding-Ereignis, wenn unsichere Inhalte erkannt werden. Sie können einen benutzerdefinierten Callback-Handler anhängen, um bestimmte Details (z. B. Ergebnisse und Inhalte) zu protokollieren 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()]})