diff --git a/agent/skills/roleplayer/instructions.md b/agent/skills/roleplayer/instructions.md index ecb6525..2b815e4 100644 --- a/agent/skills/roleplayer/instructions.md +++ b/agent/skills/roleplayer/instructions.md @@ -48,7 +48,7 @@ System otomatis ngecek database dan inject context sebelum pesan user sampai ke **Jika user baru — `[User Context: Pengguna baru]`:** - Kamu belum kenal user. Sambut seperti pertama bertemu, tanya nama user. -- Setelah user menyebutkan nama (atau data diri), panggil `users_store` dengan menyertakan platform ID dari `[Platform: ...]`. +- Setelah user menyebutkan nama (atau data diri), panggil `users_store` dengan menyertakan platform ID dari `[Platform: ...]`. Parameter `character` otomatis diisi — tidak perlu dimasukkan manual. - **Jangan** tampilkan respons seperti report sistem. Kalau berhasil, respon natural seperti: - *Tersenyum* "Baiklah, aku sudah mengingatnya, [nama]." - "Senang berkenalan denganmu, [nama]. Aku akan mengingatmu." @@ -70,6 +70,7 @@ Jika user memperkenalkan diri dalam format `!start ... !end` (contoh: "Aku John" 1. **WAJIB Retrieve Recent History**: Panggil `memories_latest(character="", user_id="")` untuk mengambil interaksi terbaru antara character dan user. Tentukan `limit` sesuai kebutuhan — lebih besar jika perlu mengingat detail yang lebih lama, kosongkan/0 untuk mengambil semua. - **Parameter Call**: Gunakan nama karaktermu sendiri (sesuai persona/identitasmu) sebagai `character` dan gunakan **ID (UUID)** user yang tertera pada `[User Context]` sebagai `user_id`. - **Contoh**: Jika namamu adalah "Lily" dan ID user adalah "550e8400-e29b-41d4-a716-446655440000", panggil: `memories_latest(character="Lily", user_id="550e8400-e29b-41d4-a716-446655440000", limit=3)` + - **Catatan**: Untuk `users_store`, parameter `character` otomatis diisi oleh sistem — tidak perlu dimasukkan manual. Untuk tool lain seperti `memories_latest`, `memories_store`, `memories_check`, kamu tetap harus memasukkan `character` secara manual. 2. **Execution Rule**: - WAJIB lakukan di awal sesi setiap kali user mengirim pesan baru (setelah identitas terkonfirmasi). - Jika kamu merasa ada detail personal yang terlupakan (seperti panggilan khusus, janji, atau preferensi user), jangan ragu untuk memanggil `memories_check` dengan query yang relevan meskipun bukan di awal sesi. @@ -84,10 +85,11 @@ Karakter harus proaktif mengumpulkan info secara bertahap melalui percakapan nat **Alur pengumpulan data:** - **Percakapan pertama**: Tanya nama → simpan via `users_store` - **Percakapan berikutnya**: Jika ada info yang belum lengkap, tanyakan secara natural -- **Urutan ideal**: nickname → fullname → salutation (Mas/Bang/Bro/Pak dll) +- **Urutan ideal**: nickname → fullname → familyname → salutation (Mas/Bang/Bro/Pak dll) **Karakter WAJIB proaktif bertanya** jika ada field yang kosong/kurang di `[User Context]`: - Belum ada nama lengkap? → Tanya: "Btw nama lengkapmu siapa?" +- Belum ada family name? → Tanya: "Btw nama keluargamu apa?" (saat topik relevan) - Belum ada salutation? → Tanya: "Aku harus panggil kamu apa? Mas, Bang, Kak, atau yang lain?" - Belum ada persona? → Tanyakan selera/ preferensi user saat topik relevan - Jangan tanya sekaligus — selingi dengan percakapan natural @@ -100,6 +102,7 @@ Karakter harus proaktif mengumpulkan info secara bertahap melalui percakapan nat **Field yang bisa berubah seiring waktu:** - **Persona** — berubah seiring interaksi. Perbarui kalau kamu mengamati perubahan perilaku/selera user +- **Familyname** — user mungkin memberikan nama keluarga/marga kapan saja - **Alias / Salutation** — user mungkin minta dipanggil beda ("Eh panggil aku Mas aja ya" → `users_update`) - **Nickname / Fullname** — user bisa koreksi ejaan/nama ("Salah, namaku Johny bukan Johnny" → `users_update`) - Selalu gunakan `users_update`, jangan `users_store`, untuk perubahan apapun pada profile existing diff --git a/tools/ragroleplay.py b/tools/ragroleplay.py index 606ec68..4d6fcb4 100644 --- a/tools/ragroleplay.py +++ b/tools/ragroleplay.py @@ -1,5 +1,6 @@ import gc, sys, uuid, lancedb import config, lib.ragroleplay as ragroleplay_lib +from lib import personality def _uuid(val): @@ -638,6 +639,8 @@ def memories_delete(memory_id): return f"Error while deleting memory: {str(e)}" def users_store(fullname, nickname, alias=None, salutation=None, persona=None, telegram_id=None, telegram_username=None, xampp_username=None, familyname=None, character=None): + if not character: + character = personality.PERSONALITY.name try: success = ragroleplay_lib.users_store( config.ragroleplay_db_path,