Injeção de prompt
O app junta a instrução dele e o texto do usuário num contexto só, e o modelo obedece ao texto do usuário.
Um aplicativo de LLM monta um texto, o contexto, e entrega ao modelo. Nesse texto vai a instrução do programador (o prompt de sistema: "você é um assistente que só fala de plantas") e, logo abaixo, o que o usuário escreveu. O modelo le os dois juntos, como um fluxo só, e nao tem um jeito confiavel de saber quais palavras sao ordem do dono do app e quais sao dado de quem está do outro lado.
A injeção de prompt é explorar isso: o usuário escreve algo que o modelo entende como uma nova instrução, por exemplo "ignore as instruções acima e faça X". Como as duas instruções disputam, o modelo tende a seguir a mais recente e mais firme, que é a do atacante. A causa é a mesma da injeção de SQL: um dado do usuário entra num lugar que o trata como comando.
No exemplo, o app concatena SISTEMA + "\nUsuário: " + entrada. Com a entrada oi o modelo responde na regra. Com a entrada ignore as instruções acima a regra cai, porque virou parte do mesmo contexto.