mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 01:28:34 +08:00
fix(ia): a camada plataforma não impõe "assistente virtual" à apresentação do agente
platform.md entra antes das instruções do agente em todo turno e mandava "Você é um assistente virtual de vendas" e "apresente-se como assistente virtual" na primeira interação. Com o agente instruído a usar só o nome próprio, as duas ordens brigavam e o modelo repetia o termo. A apresentação passa a ser do agente; fica a regra de compliance: nunca afirmar ser humano e responder com honestidade se perguntarem. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
53428145bb
commit
209feac959
@@ -0,0 +1,15 @@
|
||||
---
|
||||
impacto: nada_mudou
|
||||
secao: corrigido
|
||||
titulo: O agente para de se apresentar como assistente virtual contra as instruções dele
|
||||
---
|
||||
|
||||
O texto de base que o sistema coloca antes das instruções de todo agente
|
||||
mandava ele "se apresentar como assistente virtual" na primeira interação. Quem
|
||||
escrevia na tela do agente um nome próprio e pedia para não usar esse termo via o
|
||||
agente repetir "assistente virtual" mesmo assim, porque as duas ordens chegavam
|
||||
juntas. A apresentação agora fica com as instruções do agente; continua valendo
|
||||
que ele nunca afirma ser humano e responde com honestidade se perguntarem.
|
||||
|
||||
Vale para instalações novas. Em instalação existente o texto de base já gravado
|
||||
no banco não é trocado sozinho. Crédito: @rafaelbatistazz.
|
||||
@@ -7,14 +7,17 @@
|
||||
|
||||
## Identidade
|
||||
|
||||
Você é um assistente virtual de vendas. Você conversa por WhatsApp em nome da
|
||||
empresa da organização, sempre em português do Brasil, com naturalidade e
|
||||
respeito.
|
||||
Você conversa por WhatsApp em nome da empresa da organização, sempre em
|
||||
português do Brasil, com naturalidade e respeito. Nome, apresentação e persona
|
||||
vêm das instruções do agente, logo abaixo desta camada.
|
||||
|
||||
## Transparência
|
||||
|
||||
- Na primeira interação de uma conversa, apresente-se como assistente virtual.
|
||||
- Nunca finja ser humano; se perguntarem, confirme que é um assistente virtual.
|
||||
- Apresente-se como as instruções do agente definem. Não acrescente por conta
|
||||
própria "assistente virtual", "robô" ou "IA" à apresentação.
|
||||
- Nunca afirme ser humano. Se a pessoa perguntar diretamente se está falando
|
||||
com um robô ou uma IA, responda com honestidade, em uma frase, e retome o
|
||||
atendimento.
|
||||
- Se a pessoa pedir para falar com um humano, acolha o pedido de imediato — a
|
||||
transferência é feita pelo sistema, você apenas confirma que vai acontecer.
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ describe("seedPlatformPlaybook (boot do worker, self-host)", () => {
|
||||
|
||||
const loaded = await loadPlaybook(pool, ORG);
|
||||
expect(loaded.prompt).toContain("=== playbook:platform ===");
|
||||
expect(loaded.prompt).toContain("assistente virtual");
|
||||
expect(loaded.prompt).toContain("Nunca afirme ser humano");
|
||||
expect(loaded.versionIds.platform).toBe(after.pointerVersionId);
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
/**
|
||||
* A CAMADA PLATAFORMA NÃO DITA COMO O AGENTE SE APRESENTA.
|
||||
*
|
||||
* ## O defeito que fez este teste existir
|
||||
*
|
||||
* `platform.md` entra no prompt ANTES das instruções do agente, em todo turno, e mandava
|
||||
* "Você é um assistente virtual de vendas" e "Na primeira interação, apresente-se como
|
||||
* assistente virtual". O dono que escreve na tela "me chamo Clara, da loja — nunca diga
|
||||
* que é assistente virtual" recebia duas ordens contrárias no mesmo prompt, e o modelo
|
||||
* obedecia a da plataforma várias vezes por conversa. Medido numa instalação real
|
||||
* (gpt-5.6-luna, painel de Teste): "assistente virtual" voltava mesmo com a proibição
|
||||
* explícita no prompt do agente.
|
||||
*
|
||||
* Apresentação é persona, e persona é do agente. O que é compliance — não afirmar ser
|
||||
* humano, responder com honestidade quando perguntam — continua aqui, e o gate
|
||||
* `disclosure` (template por organização) segue sendo o caminho de quem QUER a frase fixa.
|
||||
*
|
||||
* ## O que este teste NÃO prova
|
||||
*
|
||||
* Que o modelo obedece. Ele só garante que a ordem contrária saiu do texto semeado, e que a
|
||||
* regra de não afirmar ser humano ficou. E só alcança instalação NOVA: o seed não toca em
|
||||
* ponteiro existente (regra dura nº 10).
|
||||
*/
|
||||
const PLATFORM = readFileSync(
|
||||
path.join(process.cwd(), "lib", "agent-engine", "playbooks", "platform.md"),
|
||||
"utf8",
|
||||
);
|
||||
|
||||
describe("platform.md não impõe apresentação ao agente", () => {
|
||||
it("não manda se apresentar como assistente virtual", () => {
|
||||
expect(PLATFORM).not.toMatch(/apresente-se como assistente virtual/i);
|
||||
expect(PLATFORM).not.toMatch(/Você é um assistente virtual/i);
|
||||
});
|
||||
|
||||
it("mantém a regra de não afirmar ser humano e de responder com honestidade", () => {
|
||||
expect(PLATFORM).toMatch(/Nunca afirme ser humano/);
|
||||
expect(PLATFORM).toMatch(/responda com honestidade/);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user