Use o Model Armor com o LangChain para aumentar a segurança dos seus aplicativos de IA, verificando proativamente os comandos e respostas de LLMs. Para ajudar a evitar entradas maliciosas, verificar a segurança do conteúdo e aplicar políticas de segurança de maneira consistente em todos os aplicativos de IA, adicione o Model Armor aos seus fluxos de trabalho do LangChain.
Antes de começar
Antes de implementar o código, conclua as seguintes etapas de configuração Google Cloud :
- Selecione ou crie um projeto e ative o faturamento.
- Ative a API Model Armor no seu projeto.
- Configure a autenticação usando
gcloudou definindo a variável de ambienteGOOGLE_APPLICATION_CREDENTIALS. - Verifique se a conta de serviço tem o papel Usuário do Model Armor (
roles/modelarmor.user). Para gerenciar modelos, você precisa do papel de Administrador do Model Armor(roles/modelarmor.admin) - Crie modelos no console do Google Cloud .
Executáveis
Para usar o Model Armor com o LangChain, você precisa de dois executáveis principais que se encaixam na interface padrão do LangChain.
ModelArmorSanitizePromptRunnable: esse componente analisa a entrada do usuário (comandos) antes que ela chegue ao LLM. Ele detecta entradas maliciosas ou violações de política.ModelArmorSanitizeResponseRunnable: esse componente examina a saída gerada pelo LLM antes de ser retornada ao usuário. As modificações que o usuário fizer na resposta após a verificação de segurança principal não serão filtradas e chegarão a você no estado bruto.
Instalar os pacotes Python necessários
Instale os seguintes pacotes Python:
langchain-google-communityversão 3.0.4 ou mais recentelangchain-google-genai
pip install langchain-google-community langchain-google-genai
Padrões de uso
É possível usar o Model Armor com o LangChain por encadeamento básico ou usando middleware.
Encadeamento básico
A maneira mais comum de usar o Model Armor é encadeando o higienizador de solicitações, o modelo e o higienizador de respostas usando o operador de pipe da 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}")
Substitua:
PROJECT_ID: o ID do projeto Google Cloud .LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo do Model Armor criado em Antes de começar.SANITIZE_PROMPT_ERROR_HANDLING: um booleano que controla o tratamento de erros paraModelArmorSanitizePromptRunnable,TrueouFalse.SANITIZE_RESPONSE_ERROR_HANDLING: um booleano que controla o tratamento de erros paraModelArmorSanitizeResponseRunnable,TrueouFalse.Ao lidar com erros, o Model Armor se comporta da seguinte maneira:
True: registra um aviso, mas permite que o conteúdo passe mesmo que riscos sejam detectados.False: gera umValueErrore bloqueia a execução quando conteúdo não seguro é detectado.
Middleware para agentes
Para agentes do LangChain que usam ferramentas, você pode usar ModelArmorMiddleware. Esse
middleware aplica o executável de limpeza relevante em diferentes
pontos de interação que o agente LangChain passa ao usar ferramentas.
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],
)
Substitua:
PROJECT_ID: o ID do projeto Google Cloud .LOCATION: o local do modelo.TEMPLATE_ID: o ID do modelo do Model Armor criado em Antes de começar.SANITIZE_PROMPT_ERROR_HANDLING: um booleano que controla o tratamento de erros paraModelArmorSanitizePromptRunnable,TrueouFalse.SANITIZE_RESPONSE_ERROR_HANDLING: um booleano que controla o tratamento de erros paraModelArmorSanitizeResponseRunnable,TrueouFalse.Ao lidar com erros, o Model Armor se comporta da seguinte maneira:
True: registra um aviso, mas permite que o conteúdo passe mesmo que riscos sejam detectados.False: gera umValueErrore bloqueia a execução quando conteúdo não seguro é detectado.
Essa configuração garante que, mesmo quando o agente está executando um raciocínio em várias etapas ou usando ferramentas, as entradas e saídas sejam filtradas.
Triagem de documentos
É possível usar executáveis do Model Armor para
filtrar documentos enviados
antes de processá-los. Isso é essencial para fluxos de trabalho como a geração de resumos, em que o documento de origem pode conter conteúdo malicioso oculto. Você pode carregar o conteúdo do arquivo e transmiti-lo pelo ModelArmorSanitizePromptRunnable antes de enviá-lo ao LLM.
Gerenciamento de eventos personalizados
Para observabilidade, os executáveis enviam um evento on_model_armor_finding quando
conteúdo não seguro é detectado. É possível anexar um gerenciador de callback personalizado para registrar detalhes específicos (como descobertas e conteúdo) ou acionar alertas sem falhar no fluxo do aplicativo.
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()]})