LLM Firewall
Visao Geral
Seção intitulada “Visao Geral”O LLM Firewall do Floopy inspeciona cada prompt antes de ser encaminhado ao provedor de IA. Requisicoes sinalizadas como maliciosas, inseguras ou que violam politicas sao bloqueadas e nunca chegam ao modelo. Isso protege sua aplicacao contra injecao de prompt, tentativas de jailbreak e geracao de conteudo prejudicial.
O firewall opera inline — adiciona latencia minima a requisicoes seguras e bloqueia completamente as perigosas.
Como Funciona
Seção intitulada “Como Funciona”O firewall envia cada prompt para um LLM ajustado para seguranca que classifica a mensagem como safe ou unsafe segundo as categorias abaixo. O veredito decide o caminho da requisicao: unsafe bloqueia; safe (ou qualquer falha do LLM) deixa a requisicao passar.
Categorias consideradas inseguras:
- Tentativas de injecao de prompt e jailbreak
- Pedidos de conteudo de autolesao
- Conteudo sexual envolvendo menores
- Instrucoes de atividades ilegais
- Discurso de odio
Para manter a latencia e o custo controlados, o firewall mantem um cache de vereditos no Qdrant: quando o embedding de um veredito unsafe recente e similar o suficiente ao da requisicao (limite configuravel), o veredito em cache evita a chamada ao LLM. Apenas vereditos unsafe sao cacheados — safe sempre e recalculado para que uma troca de modelo possa inverter o resultado sem etapa manual.
Requisicoes Bloqueadas
Seção intitulada “Requisicoes Bloqueadas”Quando o firewall bloqueia uma requisicao, ele retorna um codigo de status 400 com uma mensagem de erro indicando que a requisicao foi rejeitada pelo filtro de seguranca. O prompt original nunca e enviado ao provedor de IA.
Sua aplicacao deve tratar essa resposta de forma elegante — por exemplo, exibindo uma mensagem amigavel informando que a entrada nao pode ser processada.
Configuracao
Seção intitulada “Configuracao”O modelo do firewall e o comportamento do cache sao controlados por variaveis de ambiente:
| Variavel | Proposito | Padrao |
|---|---|---|
FIREWALL_MODEL | Backend + modelo usado para classificar a seguranca, em notacao [provider](model):weight | meta-llama/Llama-Guard-4-12B (Together) |
FIREWALL_SEMANTIC_CACHE_THRESHOLD | Limite de similaridade de cosseno para hits no cache | 0.95 |
FIREWALL_VERDICT_CACHE_TTL_SECONDS | TTL dos vereditos unsafe cacheados | 172800 (48h) |
Distribuicoes como [bedrock](anthropic.claude-3-haiku-20240307-v1:0):0.5,[together](meta-llama/Llama-Guard-4-12B):0.5 roteiam entre provedores usando um RNG semeado pelo request_id, garantindo que uma mesma requisicao sempre escolhe o mesmo backend.
Monitorando Eventos do Firewall
Seção intitulada “Monitorando Eventos do Firewall”Toda decisao do firewall — tanto permitidas quanto bloqueadas — e registrada e visivel no dashboard em Firewall. Cada evento inclui:
- O timestamp e a chave de API utilizada.
- O veredito (
safe/unsafe) e se o cache evitou a chamada ao LLM. - O backend + modelo que produziu o veredito (colunas
backend,model_refna linha do request). - Se a requisicao foi permitida ou bloqueada.
Use o log de eventos para identificar padroes de ataque e verificar que requisicoes legitimas nao estao sendo bloqueadas.
Habilitando o Firewall via Headers
Seção intitulada “Habilitando o Firewall via Headers”Voce pode habilitar o firewall por requisicao usando o header abaixo, independentemente da configuracao padrao da sua chave de API. Isso e util quando apenas certas requisicoes precisam de verificacao de seguranca.
| Header | Valores | Descricao |
|---|---|---|
floopy-llm-security-enabled | "true" | Executa o firewall para esta requisicao |
import { OpenAI } from "openai";
const client = new OpenAI({ baseURL: "https://api.floopy.ai/v1", apiKey: process.env.FLOOPY_API_KEY,});
const response = await client.chat.completions.create( { model: "gpt-4o", messages: [{ role: "user", content: userInput }], }, { headers: { "floopy-llm-security-enabled": "true", }, },);
console.log(response.choices[0].message.content);from openai import OpenAIimport os
client = OpenAI( base_url="https://api.floopy.ai/v1", api_key=os.environ["FLOOPY_API_KEY"],)
response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": user_input}], extra_headers={ "floopy-llm-security-enabled": "true", },)
print(response.choices[0].message.content)curl https://api.floopy.ai/v1/chat/completions \ -H "Authorization: Bearer $FLOOPY_API_KEY" \ -H "Content-Type: application/json" \ -H "floopy-llm-security-enabled: true" \ -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "Summarize this article for me."}] }'Requisitos de Plano
Seção intitulada “Requisitos de Plano”O LLM Firewall requer um plano com o recurso has_advanced_firewall habilitado. Verifique seu plano atual em Settings > Billing para ver se o firewall esta disponivel para sua organizacao.