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
gcloudein oder legen Sie die UmgebungsvariableGOOGLE_APPLICATION_CREDENTIALSfest. - 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-communityVersion 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 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ürModelArmorSanitizePromptRunnablesteuert;TrueoderFalse.SANITIZE_RESPONSE_ERROR_HANDLING: ein boolescher Wert, der die Fehlerbehandlung fürModelArmorSanitizeResponseRunnablesteuert;TrueoderFalse.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: EinValueErrorwird 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ürModelArmorSanitizePromptRunnablesteuert;TrueoderFalse.SANITIZE_RESPONSE_ERROR_HANDLING: ein boolescher Wert, der die Fehlerbehandlung fürModelArmorSanitizeResponseRunnablesteuert;TrueoderFalse.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: EinValueErrorwird 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()]})