Use o Model Armor com LangChain para melhorar a segurança dos aplicativos de IA, verificando proativamente comandos e respostas de LLM. 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 fluxos de trabalho do LangChain.
Antes de começar
Antes de implementar o código, conclua as etapas de Google Cloud configuração a seguir:
- Selecione ou crie um projeto e ative o faturamento.
- Ative a API Model Armor no projeto.
- Configure a autenticação usando o
gcloudou definindo a variável de ambienteGOOGLE_APPLICATION_CREDENTIALS. - Verifique se a conta de serviço tem o papel de 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 Google Cloud console.
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 verifica 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 verifica a saída gerada pelo LLM antes de ser retornada ao usuário. As modificações feitas pelo usuário na resposta após a verificação de segurança principal não são filtradas e chegam 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 comandos, o modelo e o higienizador de respostas usando o operador de pipe da linguagem de expressão do LangChain (LCEL, na sigla em inglês).
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 Google Cloud projeto.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 seja aprovado mesmo que os 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, é possível usar ModelArmorMiddleware. Esse
middleware aplica o executável de higienizador relevante em diferentes
pontos de interação que o agente do 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 Google Cloud projeto.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 seja aprovado mesmo que os 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 estiver executando o raciocínio em várias etapas ou o uso de ferramentas, as entradas e saídas sejam verificadas.
Verificação de documentos
É possível usar executáveis do Model Armor para
verificar documentos enviados
antes de processá-los. Isso é essencial para fluxos de trabalho como a sumarização, em que o documento de origem pode conter conteúdo malicioso oculto. É possível carregar o conteúdo do arquivo e transmiti-lo pelo ModelArmorSanitizePromptRunnable antes de enviá-lo ao LLM.
Tratamento 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 o 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()]})