Usa Model Armor con LangChain para mejorar la seguridad de tus aplicaciones de IA mediante el análisis proactivo de las instrucciones y respuestas del LLM. Para evitar entradas maliciosas, verificar la seguridad del contenido y aplicar políticas de seguridad de manera coherente en tus aplicaciones de IA, agrega Model Armor a tus flujos de trabajo de LangChain.
Antes de comenzar
Antes de implementar el código, completa los siguientes Google Cloud pasos de configuración:
- Selecciona o crea un proyecto y habilita la facturación.
- Habilita la API de Model Armor en tu proyecto.
- Configura la autenticación con
gcloudo configura la variable de entornoGOOGLE_APPLICATION_CREDENTIALS. - Asegúrate de que tu cuenta de servicio tenga el rol de usuario de Model Armor
(
roles/modelarmor.user). Para administrar plantillas, necesitas el rol de administrador de Model Armor(roles/modelarmor.admin). - Crea plantillas en la Google Cloud consola.
Ejecutables
Para usar Model Armor con LangChain, necesitas dos ejecutables principales que se ajusten a la interfaz estándar de LangChain.
ModelArmorSanitizePromptRunnable: Este componente analiza la entrada del usuario (instrucciones) antes de que llegue al LLM. Detecta entradas maliciosas o incumplimientos de políticas.ModelArmorSanitizeResponseRunnable: Este componente analiza el resultado generado por el LLM antes de que se devuelva al usuario. Las modificaciones que el usuario realice en la respuesta después de la verificación de seguridad principal no se filtran y te llegarán en su estado sin procesar.
Instala los paquetes obligatorios de Python
Instala los siguientes paquetes de Python:
langchain-google-communityversión 3.0.4 o posteriorlangchain-google-genai
pip install langchain-google-community langchain-google-genai
Patrones de uso
Puedes usar Model Armor con LangChain mediante el encadenamiento básico o el uso de middleware.
Encadenamiento básico
La forma más común de usar Model Armor es encadenar el sanitizador de instrucciones, el modelo y el sanitizador de respuestas con el operador de canalización de LangChain Expression Language (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}")
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del Google Cloud proyecto de.LOCATION: la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla de Model Armor creada en Antes de comenzar.SANITIZE_PROMPT_ERROR_HANDLING: Es un valor booleano que controla el manejo de errores paraModelArmorSanitizePromptRunnable;TrueoFalse.SANITIZE_RESPONSE_ERROR_HANDLING: Es un valor booleano que controla el manejo de errores paraModelArmorSanitizeResponseRunnable;TrueoFalse.Cuando se manejan errores, Model Armor se comporta de la siguiente manera:
True: Registra una advertencia, pero permite que el contenido pase incluso si se detectan riesgos.False: Genera unValueErrory bloquea la ejecución cuando se detecta contenido inseguro.
Middleware para agentes
Para los agentes de LangChain que usan herramientas, puedes usar ModelArmorMiddleware. Este
middleware aplica el ejecutable de sanitizador pertinente en diferentes
puntos de interacción por los que pasa el agente de LangChain cuando usa herramientas.
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],
)
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del Google Cloud proyecto de.LOCATION: la ubicación de la plantilla.TEMPLATE_ID: Es el ID de la plantilla de Model Armor creada en Antes de comenzar.SANITIZE_PROMPT_ERROR_HANDLING: Es un valor booleano que controla el manejo de errores paraModelArmorSanitizePromptRunnable;TrueoFalse.SANITIZE_RESPONSE_ERROR_HANDLING: Es un valor booleano que controla el manejo de errores paraModelArmorSanitizeResponseRunnable;TrueoFalse.Cuando se manejan errores, Model Armor se comporta de la siguiente manera:
True: Registra una advertencia, pero permite que el contenido pase incluso si se detectan riesgos.False: Genera unValueErrory bloquea la ejecución cuando se detecta contenido inseguro.
Esta configuración garantiza que, incluso cuando el agente ejecuta un razonamiento de varios pasos o el uso de herramientas, se analicen las entradas y salidas.
Análisis de documentos
Puedes usar ejecutables de Model Armor para
analizar los documentos subidos
antes de procesarlos. Esto es esencial para flujos de trabajo como la generación de resúmenes, en los que el documento fuente puede contener contenido malicioso oculto. Puedes cargar el contenido del archivo y pasarlo por ModelArmorSanitizePromptRunnable antes de enviarlo al LLM.
Control de eventos personalizados
Para la observabilidad, los ejecutables envían un evento on_model_armor_finding cuando se detecta contenido inseguro. Puedes adjuntar un controlador de devolución de llamada personalizado para registrar detalles específicos (como hallazgos y contenido) o activar alertas sin bloquear el flujo de la aplicación.
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()]})