import dev.langchain4j.agent.tool.Tool;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.service.SystemMessage;
import java.util.Random;
// -----------------------------
// MÓDULO HUMANIZER
// -----------------------------
class HumanizerModule {
private final Random random = new Random();
// Simula tempo humano de resposta
public void delayHumano() {
try {
int delay = 300 + random.nextInt(1200); // 300ms a 1500ms
Thread.sleep(delay);
} catch (InterruptedException ignored) {}
}
// Introduz ruído humano na resposta
public String humanizarTexto(String texto) {
String[] hesitacoes = {"hmm...", "uh...", "bem...", "deixa ver...", ""};
String prefixo = hesitacoes[random.nextInt(hesitacoes.length)];
// Pequena variação sintática
if (random.nextBoolean()) {
texto = texto.replace("temperatura", "temp.");
}
// Micro erro humano ocasional
if (random.nextInt(10) == 3) {
texto += " (acho eu)";
}
return prefixo + " " + texto;
}
}
// -----------------------------
// SISTEMA REAL DA FÁBRICA
// -----------------------------
public class AgenteAutoDecisao {
static class SistemaFabrica {
@Tool("Ativa ou desativa o sistema de refrigeração da fábrica com base no nível de risco.")
public void controlarRefrigeracao(String estado) {
System.out.println("\n[AÇÃO EXECUTADA EM JAVA] -> Alterando hardware de refrigeração para: "
+ estado.toUpperCase() + "\n");
}
}
// -----------------------------
// CONTROLADOR INTELIGENTE
// -----------------------------
interface ControladorSeguranca {
@SystemMessage({
"Tu és o controlador de segurança automatizado de uma fábrica.",
"Se a temperatura informada nos dados ultrapassar os 75°C, deves ligar_maximo.",
"Se estiver entre 40°C e 75°C, deves ligar_moderado.",
"Caso contrário, deves desligar.",
"Responde de forma natural, com estilo humano."
})
String analisarInput(String inputUtilizador);
}
// -----------------------------
// MAIN
// -----------------------------
public static void main(String[] args) {
String apiKey = System.getenv("OPENAI_API_KEY") != null ?
System.getenv("OPENAI_API_KEY") : "A_SUA_CHAVE_AQUI";
OpenAiChatModel modelo = OpenAiChatModel.builder()
.apiKey(apiKey)
.modelName("gpt-4o-mini")
.build();
HumanizerModule humanizer = new HumanizerModule();
ControladorSeguranca agente = AiServices.builder(ControladorSeguranca.class)
.chatLanguageModel(modelo)
.tools(new SistemaFabrica())
.chatMemory(MessageWindowChatMemory.withMaxMessages(10))
.build();
// --- TESTE 1 ---
System.out.println("--- TESTE 1 ---");
System.out.println("Input Recebido: 'Atenção, o sensor reportou 89°C na linha de montagem!'");
humanizer.delayHumano();
String resposta1 = agente.analisarInput("Atenção, o sensor reportou 89°C na linha de montagem!");
System.out.println("🧠 Resposta Humanizada: " + humanizer.humanizarTexto(resposta1));
// --- TESTE 2 ---
System.out.println("--- TESTE 2 ---");
System.out.println("Input Recebido: 'A temperatura na fábrica neste momento é de 23°C.'");
humanizer.delayHumano();
String resposta2 = agente.analisarInput("A temperatura na fábrica neste momento é de 23°C.");
System.out.println("🧠 Resposta Humanizada: " + humanizer.humanizarTexto(resposta2));
}
}

