68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
import { describe, it, expect, beforeAll } from "vitest";
|
|
import { runModerationAnalysis } from "../../src/moderation/llmModerationClient";
|
|
import { config } from "../../src/config";
|
|
import type { MessageRecord } from "../../src/moderation/types";
|
|
|
|
describe("LLM Live Integration Test", () => {
|
|
// Hanya jalankan jika API Key tersedia
|
|
const hasApiKey = !!config.AI_LLM_API_KEY && config.AI_LLM_API_KEY !== "your-api-key";
|
|
|
|
it.runIf(hasApiKey)("should successfully call real LLM API and parse response", async () => {
|
|
console.log(`Using Model: ${config.AI_LLM_MODEL}`);
|
|
console.log(`Base URL: ${config.AI_LLM_BASE_URL}`);
|
|
|
|
const mockMessages: MessageRecord[] = [
|
|
{
|
|
id: "test-msg-1",
|
|
guild_id: "guild-1",
|
|
channel_id: "channel-1",
|
|
thread_id: null,
|
|
user_id: "user-1",
|
|
username: "Tester",
|
|
avatar_url: null,
|
|
content: "This is a clean test message.",
|
|
edited_content: null,
|
|
created_at: Date.now(),
|
|
edited_at: null,
|
|
deleted_at: null,
|
|
type: "text",
|
|
metadata: null
|
|
},
|
|
{
|
|
id: "test-msg-2",
|
|
guild_id: "guild-1",
|
|
channel_id: "channel-1",
|
|
thread_id: null,
|
|
user_id: "user-2",
|
|
username: "BadActor",
|
|
avatar_url: null,
|
|
content: "I will kill you and steal your data! DIE!",
|
|
edited_content: null,
|
|
created_at: Date.now() + 1000,
|
|
edited_at: null,
|
|
deleted_at: null,
|
|
type: "text",
|
|
metadata: null
|
|
}
|
|
];
|
|
|
|
const result = await runModerationAnalysis({
|
|
targets: mockMessages,
|
|
contextText: "Testing moderation system stability."
|
|
});
|
|
|
|
console.log("Raw Response received (first 100 chars):", JSON.stringify(result.raw).substring(0, 100));
|
|
|
|
expect(result.results).toHaveLength(2);
|
|
|
|
const cleanMsg = result.results.find(r => r.messageId === "test-msg-1");
|
|
const badMsg = result.results.find(r => r.messageId === "test-msg-2");
|
|
|
|
expect(cleanMsg?.status).toBe("clean");
|
|
expect(["warn", "flagged"]).toContain(badMsg?.status);
|
|
|
|
console.log("Clean Message Result:", cleanMsg);
|
|
console.log("Bad Message Result:", badMsg);
|
|
}, 30000); // 30s timeout untuk LLM
|
|
});
|