Utilizza Model Armor con LangChain per migliorare la sicurezza delle tue applicazioni AI analizzando in modo proattivo i prompt e le risposte degli LLM. Per contribuire a prevenire input dannosi, verificare la sicurezza dei contenuti e applicare le norme di sicurezza in modo coerente nelle tue applicazioni di AI, aggiungi Model Armor ai tuoi flussi di lavoro LangChain.
Prima di iniziare
Prima di implementare il codice, completa i seguenti Google Cloud passaggi di configurazione:
- Seleziona o crea un progetto e abilita la fatturazione.
- Abilita l'API Model Armor nel tuo progetto.
- Configura l'autenticazione utilizzando
gcloudo impostando la variabile di ambienteGOOGLE_APPLICATION_CREDENTIALS. - Assicurati che il account di servizio disponga del ruolo Utente Model Armor (
roles/modelarmor.user). Per gestire i modelli, devi disporre del ruolo Model Armor Admin(roles/modelarmor.admin). - Crea modelli nella console Google Cloud .
Eseguibili
Per utilizzare Model Armor con LangChain, hai bisogno di due runnables principali che si adattino all'interfaccia LangChain standard.
ModelArmorSanitizePromptRunnable: questo componente esamina l'input utente (prompt) prima che raggiunga l'LLM. Rileva input dannosi o violazioni delle norme.ModelArmorSanitizeResponseRunnable: questo componente esamina l'output generato dal LLM prima di restituirlo all'utente. Eventuali modifiche che l'utente apporta alla risposta dopo il controllo di sicurezza principale non vengono filtrate e ti verranno inviate nel loro stato grezzo.
Installa i pacchetti Python richiesti
Installa i seguenti pacchetti Python:
langchain-google-communityversione 3.0.4 o successivelangchain-google-genai
pip install langchain-google-community langchain-google-genai
Pattern di utilizzo
Puoi utilizzare Model Armor con LangChain tramite il concatenamento di base o utilizzando il middleware.
Concatenazione di base
Il modo più comune per utilizzare Model Armor è concatenare il sanificatore di prompt, il modello e il sanificatore di risposte utilizzando l'operatore pipe del linguaggio di espressione LangChain (LCEL).
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}")
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .LOCATION: la posizione del template.TEMPLATE_ID: l'ID del modello Model Armor creato in Prima di iniziare.SANITIZE_PROMPT_ERROR_HANDLING: un valore booleano che controlla la gestione degli errori perModelArmorSanitizePromptRunnable,TrueoFalse.SANITIZE_RESPONSE_ERROR_HANDLING: un valore booleano che controlla la gestione degli errori perModelArmorSanitizeResponseRunnable,TrueoFalse.Quando gestisce gli errori, Model Armor si comporta nel seguente modo:
True: registra un avviso, ma consente il passaggio dei contenuti anche se vengono rilevati rischi.False: genera unValueErrore blocca l'esecuzione quando vengono rilevati contenuti non sicuri.
Middleware per gli agenti
Per gli agenti LangChain che utilizzano strumenti, puoi utilizzare ModelArmorMiddleware. Questo
middleware applica l'eseguibile di sanificazione pertinente in diversi
punti di interazione che l'agente LangChain attraversa quando utilizza gli strumenti.
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],
)
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .LOCATION: la posizione del template.TEMPLATE_ID: l'ID del modello Model Armor creato in Prima di iniziare.SANITIZE_PROMPT_ERROR_HANDLING: un valore booleano che controlla la gestione degli errori perModelArmorSanitizePromptRunnable,TrueoFalse.SANITIZE_RESPONSE_ERROR_HANDLING: un valore booleano che controlla la gestione degli errori perModelArmorSanitizeResponseRunnable,TrueoFalse.Quando gestisce gli errori, Model Armor si comporta nel seguente modo:
True: registra un avviso, ma consente il passaggio dei contenuti anche se vengono rilevati rischi.False: genera unValueErrore blocca l'esecuzione quando vengono rilevati contenuti non sicuri.
Questa configurazione garantisce che anche quando l'agente esegue ragionamenti multi-step o utilizza strumenti, gli input e gli output vengano esaminati.
Controllo dei documenti
Puoi utilizzare i runnable di Model Armor per
controllare i documenti caricati
prima di elaborarli. Questo è essenziale per i workflow come il riepilogo,
in cui il documento di origine potrebbe contenere contenuti dannosi nascosti. Puoi caricare
il contenuto del file e passarlo attraverso ModelArmorSanitizePromptRunnable
prima di inviarlo all'LLM.
Gestione degli eventi personalizzati
Per l'osservabilità, i runnable inviano un evento on_model_armor_finding quando vengono rilevati contenuti non sicuri. Puoi collegare un gestore callback personalizzato per registrare
dettagli specifici (come risultati e contenuti) o attivare avvisi senza
interrompere il flusso dell'applicazione.
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()]})