139 lines
5.6 KiB
Python
139 lines
5.6 KiB
Python
import gc, lancedb, uuid
|
|
from datetime import datetime, timedelta
|
|
import config, embedding
|
|
|
|
def main():
|
|
db = lancedb.connect(config.memories_db_path)
|
|
table = db.open_table(config.memories_table)
|
|
now = datetime.now()
|
|
|
|
memories = [
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now - timedelta(days=10),
|
|
"relative_time": "Saat pertama kali menginjakkan kaki di Kota Perak",
|
|
"event": "Pertemuan pertama",
|
|
"category": "Social",
|
|
"detail": "Bertemu dengan karakter utama di perpustakaan kota, suasana terasa canggung namun hangat.",
|
|
"physical": "Tegak, sedikit gemetar",
|
|
"emotional": "Gugup, Penasaran",
|
|
},
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now - timedelta(days=9),
|
|
"relative_time": "Setelah badai pasir mereda di gurun",
|
|
"event": "Kesepakatan awal",
|
|
"category": "Plot",
|
|
"detail": "Menyepakati kerjasama untuk mencari artefak kuno yang hilang di hutan terlarang.",
|
|
"physical": "Bersalaman dengan erat",
|
|
"emotional": "Optimis, Bertekad",
|
|
},
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now - timedelta(days=7),
|
|
"relative_time": "Ketika bulan darah mencapai puncaknya",
|
|
"event": "Serangan mendadak",
|
|
"category": "Action",
|
|
"detail": "Diserang oleh sekelompok goblin saat berkemah di pinggir sungai.",
|
|
"physical": "Siaga, memegang senjata",
|
|
"emotional": "Terkejut, Waspada",
|
|
},
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now - timedelta(days=5),
|
|
"relative_time": "Di tengah perdebatan panas di aula rapat",
|
|
"event": "Diskusi moral",
|
|
"category": "Emotional",
|
|
"detail": "Berdebat tentang moralitas penggunaan sihir terlarang untuk menyelamatkan desa.",
|
|
"physical": "Tangan mengepal, napas berat",
|
|
"emotional": "Marah, Dilema",
|
|
},
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now - timedelta(days=3),
|
|
"relative_time": "Sesaat setelah pintu kuil terlarang terbuka",
|
|
"event": "Penemuan petunjuk",
|
|
"category": "Investigation",
|
|
"detail": "Menemukan peta tua di reruntuhan kuil yang menunjukkan lokasi tepat artefak.",
|
|
"physical": "Mata terbelalak, membungkuk melihat peta",
|
|
"emotional": "Sangat senang, Antusias",
|
|
},
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now - timedelta(days=2),
|
|
"relative_time": "Saat malam sunyi di bawah pohon kehidupan",
|
|
"event": "Momen tenang",
|
|
"category": "Social",
|
|
"detail": "Berbagi cerita masa lalu di depan api unggun di bawah langit berbintang.",
|
|
"physical": "Rileks, bersandar pada pohon",
|
|
"emotional": "Tenang, Melankolis",
|
|
},
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now - timedelta(days=1),
|
|
"relative_time": "Ketika topeng sang pengkhianat terbuka",
|
|
"event": "Pengkhianatan",
|
|
"category": "Plot",
|
|
"detail": "Mengetahui bahwa salah satu rekan tim ternyata adalah mata-mata dari kerajaan lawan.",
|
|
"physical": "Kaku, tatapan tajam",
|
|
"emotional": "Terkhianati, Kecewa",
|
|
},
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now - timedelta(hours=5),
|
|
"relative_time": "Di lorong gelap bawah tanah kastil",
|
|
"event": "Diskusi rahasia",
|
|
"category": "Plot",
|
|
"detail": "Membicarakan rencana infiltrasi ke markas musuh menggunakan terowongan bawah tanah.",
|
|
"physical": "Membungkuk, berbisik",
|
|
"emotional": "Waspada, Serius",
|
|
},
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now - timedelta(hours=2),
|
|
"relative_time": "Saat matahari baru saja terbit di ufuk timur",
|
|
"event": "Latihan tempur",
|
|
"category": "Training",
|
|
"detail": "Melatih kombinasi serangan sihir dan fisik untuk meningkatkan sinkronisasi tim.",
|
|
"physical": "Keringat bercucuran, napas terengah",
|
|
"emotional": "Fokus, Pantang menyerah",
|
|
},
|
|
{
|
|
"id": uuid.uuid4(),
|
|
"timestamp": now,
|
|
"relative_time": "Tepat sebelum genderang perang bertalu",
|
|
"event": "Persiapan akhir",
|
|
"category": "Plot",
|
|
"detail": "Memeriksa kembali semua perlengkapan sebelum memasuki gerbang terakhir menuju artefak.",
|
|
"physical": "Menyesuaikan pelindung lengan",
|
|
"emotional": "Tegang, Percaya Diri",
|
|
},
|
|
]
|
|
|
|
for mem in memories:
|
|
context_text = f"[{mem['category']}] {mem['event']} - {mem['relative_time']}: {mem['detail']}"
|
|
row = {
|
|
"id": mem["id"],
|
|
"timestamp": mem["timestamp"],
|
|
"relative_time": mem["relative_time"],
|
|
"event": mem["event"],
|
|
"category": mem["category"],
|
|
"detail": mem["detail"],
|
|
"physical": mem["physical"],
|
|
"emotional": mem["emotional"],
|
|
"vector_context": embedding.embed_text(config.model_url, config.model_name, context_text),
|
|
}
|
|
table.add([row])
|
|
print(f"Menambahkan memori: {mem['event']}")
|
|
|
|
print("\nTable memori roleplaying dengan vector_context berhasil diproses.")
|
|
print("Nama table:", config.memories_table)
|
|
print("Jumlah row:", table.count_rows())
|
|
|
|
del table
|
|
del db
|
|
gc.collect()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|