หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน)
บันทึกสิ่งที่เกิดขึ้นในแต่ละการสนทนา โดยจัดดัชนีตามเวลาและรหัสเซสชัน
หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน) เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
ความจำสามประเภท
โดยได้รับแรงบันดาลใจจากวิทยาศาสตร์การรู้คิด ความจำของเอเจนต์มักแบ่งออกเป็นสามประเภท:
- เหตุการณ์ — สิ่งที่เกิดขึ้น (การสนทนาครั้งนี้ เซสชันเมื่อสัปดาห์ที่แล้ว)
- ความหมาย — ข้อเท็จจริงเกี่ยวกับโลกหรือผู้ใช้
- กระบวนการ — ทักษะ (ลำดับการดำเนินการที่ประสบความสำเร็จ)
บทเรียนนี้ครอบคลุมความจำเหตุการณ์
ความจำเหตุการณ์คืออะไร
ความจำเหตุการณ์จัดเก็บเหตุการณ์เฉพาะพร้อมประทับเวลาและบริบท สำหรับเอเจนต์ นี่คือบันทึกการสนทนารายเซสชัน
เป็นรูปแบบความจำพื้นฐานที่สุดและสร้างได้ง่ายที่สุด
โมเดลข้อมูล
หนึ่งแถวต่อหนึ่งช่วงการสนทนาหรือหนึ่งเซสชัน:
CREATE TABLE episodes (
id BIGSERIAL PRIMARY KEY,
user_id TEXT NOT NULL,
session_id TEXT NOT NULL,
role TEXT NOT NULL, -- system/user/assistant/tool
content TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
metadata JSONB
);Saving Each Turn
def save_turn(user_id, session_id, role, content, metadata=None):
conn.execute('''
INSERT INTO episodes (user_id, session_id, role, content, metadata)
VALUES (%s, %s, %s, %s, %s::jsonb)
''', (user_id, session_id, role, content, json.dumps(metadata or {})))Loading a Session
def load_session(session_id):
rows = conn.execute('SELECT role, content FROM episodes WHERE session_id = %s ORDER BY id', (session_id,))
return [{'role': r[0], 'content': r[1]} for r in rows]ประวัติหลายเซสชัน
บางครั้งคุณต้องการบริบทจากเซสชันก่อนหน้าของผู้ใช้คนเดียวกัน เช่น "เมื่อวาน Alice ถามอะไร":
def recent_sessions(user_id, n=5):
rows = conn.execute('''
SELECT DISTINCT session_id, MIN(created_at) AS started
FROM episodes WHERE user_id = %s
GROUP BY session_id ORDER BY started DESC LIMIT %s
''', (user_id, n))
return [r[0] for r in rows]สร้างเวกเตอร์ฝังตัวจากเซสชันก่อนหน้า
หากต้องการเรียกคืนเหตุการณ์เก่าตามหัวข้อ ให้สร้างเวกเตอร์ฝังตัวจากสรุปของแต่ละเซสชัน:
def index_session(session_id):
summary = summarise(load_session(session_id))
vec = embed(summary)
save_to_vector_db(session_id, vec, summary)การเรียกคืนเหตุการณ์
เมื่อผู้ใช้ถามว่า "สัปดาห์ที่แล้วเราคุยกันเรื่องราคาอะไรบ้าง" ให้ค้นหาด้วยเวกเตอร์ฝังตัว:
def search_episodes(user_id, query):
qvec = embed(query)
candidates = vector_db.query(qvec, k=10, filter={'user_id': user_id})
return [load_session(c.id) for c in candidates]ความเป็นส่วนตัวและการเก็บรักษา
บันทึกเหตุการณ์มีข้อมูลส่วนบุคคลที่สามารถระบุตัวตนได้จำนวนมาก ให้ดำเนินการดังนี้:
- เข้ารหัสข้อมูลขณะจัดเก็บ
- ลบข้อมูลของผู้ใช้แต่ละรายเมื่อปิดบัญชี
- ลบข้อมูลโดยอัตโนมัติหลังผ่านไป N วัน
- ปกปิดหรือใช้นามแฝงก่อนนำไปวิเคราะห์
ย่อเหตุการณ์เก่า
เก็บช่วงการสนทนาล่าสุดไว้ตามเดิม และย่อช่วงที่เก่ากว่าให้เป็นสรุป:
if session_age_days > 30:
summary = summarise(load_session(sid))
conn.execute('UPDATE episodes SET content = %s WHERE session_id = %s', (summary, sid))
conn.execute('DELETE FROM episodes WHERE session_id = %s AND created_at < NOW() - INTERVAL \'1 day\'', (sid,))ความจำเหตุการณ์เทียบกับบริบทระยะสั้น
ระยะสั้น = รายการข้อความปัจจุบัน (สิ่งที่โมเดลเห็นในขณะนี้) ความจำเหตุการณ์ = ฐานข้อมูลที่ค้นหาได้ เก็บอยู่อย่างถาวร และมีขนาดใหญ่กว่า
เชื่อมความจำเหตุการณ์กับความจำประเภทอื่น
จากเหตุการณ์หนึ่ง คุณสามารถดึงข้อมูลต่อไปนี้ได้:
- ข้อเท็จจริงเชิงความหมาย ("ผู้ใช้ชอบหน่วยองศาเซลเซียส")
- ทักษะเชิงกระบวนการ (ลำดับการเรียกใช้เครื่องมือที่ทำงานได้ผล)
ข้อมูลเหล่านี้จะถูกส่งต่อไปยังความจำอีกสองประเภท
เล่นซ้ำเพื่อประเมินผล
บันทึกเหตุการณ์ดิบไว้เพื่อให้สามารถเล่นซ้ำได้ เมื่อคุณเปลี่ยนแปลงเอเจนต์ ให้เรียกใช้เหตุการณ์เก่าอีกครั้งและตรวจสอบว่าเอาต์พุตใหม่ยังคงดีอยู่
เหตุการณ์คืออะไร
ความจำเหตุการณ์จัดเก็บอะไรไว้
สรุป
ความจำเหตุการณ์ = บันทึกเซสชันในฐานข้อมูลพร้อมประทับเวลา ค้นหาได้ตามผู้ใช้ ตามเซสชัน หรือด้วยเวกเตอร์ฝังตัว ย่อข้อมูลเก่า และส่งต่อไปยังความจำเชิงความหมายและความจำเชิงกระบวนการ
คำถามที่พบบ่อย
บทเรียน “หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน)”
บันทึกสิ่งที่เกิดขึ้นในแต่ละการสนทนา โดยจัดดัชนีตามเวลาและรหัสเซสชัน คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- หน่วยความจำแบบเหตุการณ์ (ประวัติต่อเซสชัน)
- หน่วยความจำเชิงความหมาย (ข้อเท็จจริงแบบเวกเตอร์)
- หน่วยความจำเชิงกระบวนการ (คลังทักษะ)
- การเสื่อมของหน่วยความจำและการเก็บขยะ