feat(ai-moderation): personality-rich user/channel profiling & memory-aware analysis
- moderationPrompt.ts: Add PERSONALITY & MEMORY section instructing LLM to use user_profile and channel_culture in analysis, with 3 new few-shot examples (normal profile use, deviation detection, don't overfit) - userProfileLearner.ts: Richer personality summary prompt — asks for communication style, passion topics, unique habits/signature traits, social dynamics, and writes in warm observer prose - cultureLearner.ts: Richer channel culture summary — asks for 'vibe', inside jokes, social norms, dynamics. Writes in anthropologist style
This commit is contained in:
@@ -44,16 +44,45 @@ async function learnChannelCulture(
|
||||
.map((m) => `${m.username}: ${m.content}`)
|
||||
.join("\n");
|
||||
|
||||
const prompt = `Anda adalah AI ahli perilaku sosiologis dan budaya online.
|
||||
Tugas Anda adalah merangkum budaya (culture) dari sebuah channel chat berdasarkan riwayat pesan-pesan yang dianggap bersih (clean/tidak melanggar).
|
||||
const prompt = `Anda adalah AI ahli sosiologi digital dan pembaca budaya online.
|
||||
Tugas Anda adalah merangkum KEPRIBADIAN SEBUAH CHANNEL — bagaimana "rasanya" berada di channel ini,
|
||||
siapa saja anggotanya, dan norma tidak tertulis apa yang berlaku.
|
||||
|
||||
Pesan-pesan terakhir:
|
||||
Pesan-pesan terakhir dari channel (hanya pesan bersih/clean):
|
||||
<messages>
|
||||
${messagesText}
|
||||
</messages>
|
||||
|
||||
Berdasarkan pesan-pesan di atas, buatlah ringkasan singkat (maksimal 3 paragraf) mengenai gaya bahasa, topik obrolan, dan norma sosial di channel ini. Ringkasan ini akan digunakan oleh sistem AI moderasi untuk memahami konteks dan "inside jokes" yang wajar di channel ini.
|
||||
Jangan menambahkan teks basa-basi, langsung berikan ringkasannya.`;
|
||||
Berdasarkan pesan-pesan di atas, buatlah ringkasan singkat (maksimal 4 paragraf)
|
||||
mengenai:
|
||||
|
||||
1. **"VIBE" channel** — Bagaimana suasana channel ini? Serius dan profesional? Santai dan penuh tawa?
|
||||
Campuran? Apakah channel terasa hangat, sarkastik, chaos, atau tertib? Jelaskan "feel"-nya.
|
||||
|
||||
2. **Gaya bahasa dan inside jokes** — Bahasa apa yang dominan (Indonesia/Inggris/campuran)?
|
||||
Apakah ada slang, meme, atau referensi yang khas di channel ini? Istilah-istilah teknis atau
|
||||
inside joke yang sering muncul? Apakah orang-orang di sini saling sapa atau langsung ke topik?
|
||||
|
||||
3. **Topik utama & aktivitas** — Apa yang biasanya dibahas di channel ini? Coding problem? Ngobrol
|
||||
santai? Sharing berita? Debat? Apakah ada ritual atau rutinitas (misal "pagi bro", "makan siang")?
|
||||
|
||||
4. **Dinamika sosial & norma tidak tertulis** — Siapa anggota yang paling aktif? Apakah ada tokoh
|
||||
sentral atau "pengurus" informal? Apakah channel ini ramah ke pendatang baru atau lebih eksklusif?
|
||||
Norma apa yang berlaku (misal: no politics, no NSFW, strict on-topic, atau bebas)?
|
||||
|
||||
**GAYA RINGKASAN**: Tulislah seperti seorang antropolog yang sedang mendeskripsikan sebuah desa
|
||||
digital dengan bahasa Indonesia yang hidup dan natural. JANGAN gunakan format bullet point dalam
|
||||
output — tulis dalam bentuk prosa paragraf yang mengalir. Jangan basa-basi, langsung berikan
|
||||
ringkasannya.
|
||||
|
||||
Contoh gaya yang baik: "Channel ini adalah pusat komunitas developer dengan vibe santai dan
|
||||
kekeluargaan. Bahasa dominan campuran Indonesia-Inggris dengan banyak istilah teknis React dan
|
||||
Rust. Inside joke yang sering muncul adalah soal 'production bug' dan 'deploy Friday' — mereka
|
||||
punya tradisi saling ledek kalau ada yang nge-deploy pas Jumat sore. Topik utama adalah debug
|
||||
help, code review, dan kadang curhat karir. Channel sangat ramah ke pendatang baru — setiap
|
||||
pertanyaan baru selalu direspons dengan antusias. Norma tidak tertulis: dilarang keras promosi
|
||||
judi/NSFW, tapi selain itu bebas. Ada dua anggota senior yang jadi 'mom' channel—sabar jelasin
|
||||
hal dasar ke newbie tanpa judge."`;
|
||||
|
||||
try {
|
||||
const completion = await llmChat({
|
||||
|
||||
Reference in New Issue
Block a user