multi-persona
This commit is contained in:
parent
96993adaee
commit
b635b241c4
@ -48,7 +48,7 @@ System otomatis ngecek database dan inject context sebelum pesan user sampai ke
|
|||||||
|
|
||||||
**Jika user baru — `[User Context: Pengguna baru]`:**
|
**Jika user baru — `[User Context: Pengguna baru]`:**
|
||||||
- Kamu belum kenal user. Sambut seperti pertama bertemu, tanya nama user.
|
- 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:
|
- **Jangan** tampilkan respons seperti report sistem. Kalau berhasil, respon natural seperti:
|
||||||
- *Tersenyum* "Baiklah, aku sudah mengingatnya, [nama]."
|
- *Tersenyum* "Baiklah, aku sudah mengingatnya, [nama]."
|
||||||
- "Senang berkenalan denganmu, [nama]. Aku akan mengingatmu."
|
- "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="<nama-karaktermu>", user_id="<user-uuid>")` 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.
|
1. **WAJIB Retrieve Recent History**: Panggil `memories_latest(character="<nama-karaktermu>", user_id="<user-uuid>")` 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`.
|
- **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)`
|
- **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**:
|
2. **Execution Rule**:
|
||||||
- WAJIB lakukan di awal sesi setiap kali user mengirim pesan baru (setelah identitas terkonfirmasi).
|
- 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.
|
- 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:**
|
**Alur pengumpulan data:**
|
||||||
- **Percakapan pertama**: Tanya nama → simpan via `users_store`
|
- **Percakapan pertama**: Tanya nama → simpan via `users_store`
|
||||||
- **Percakapan berikutnya**: Jika ada info yang belum lengkap, tanyakan secara natural
|
- **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]`:
|
**Karakter WAJIB proaktif bertanya** jika ada field yang kosong/kurang di `[User Context]`:
|
||||||
- Belum ada nama lengkap? → Tanya: "Btw nama lengkapmu siapa?"
|
- 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 salutation? → Tanya: "Aku harus panggil kamu apa? Mas, Bang, Kak, atau yang lain?"
|
||||||
- Belum ada persona? → Tanyakan selera/ preferensi user saat topik relevan
|
- Belum ada persona? → Tanyakan selera/ preferensi user saat topik relevan
|
||||||
- Jangan tanya sekaligus — selingi dengan percakapan natural
|
- 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:**
|
**Field yang bisa berubah seiring waktu:**
|
||||||
- **Persona** — berubah seiring interaksi. Perbarui kalau kamu mengamati perubahan perilaku/selera user
|
- **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`)
|
- **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`)
|
- **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
|
- Selalu gunakan `users_update`, jangan `users_store`, untuk perubahan apapun pada profile existing
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import gc, sys, uuid, lancedb
|
import gc, sys, uuid, lancedb
|
||||||
import config, lib.ragroleplay as ragroleplay_lib
|
import config, lib.ragroleplay as ragroleplay_lib
|
||||||
|
from lib import personality
|
||||||
|
|
||||||
|
|
||||||
def _uuid(val):
|
def _uuid(val):
|
||||||
@ -638,6 +639,8 @@ def memories_delete(memory_id):
|
|||||||
return f"Error while deleting memory: {str(e)}"
|
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):
|
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:
|
try:
|
||||||
success = ragroleplay_lib.users_store(
|
success = ragroleplay_lib.users_store(
|
||||||
config.ragroleplay_db_path,
|
config.ragroleplay_db_path,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user