การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)
บันทึกสถานะลงใน Postgres หรือ SQLite เพื่อให้เอเจนต์ที่ทำงานยาวนานสามารถหยุดชั่วคราว ทำงานต่อ และตรวจสอบย้อนหลังได้
การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ) เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องคงสถานะไว้
เอเจนต์ที่ทำงานเป็นเวลานานจำเป็นต้อง:
- หยุดชั่วคราวและทำงานต่อในอีกหลายชั่วโมงภายหลัง
- กู้คืนจากการหยุดทำงานระหว่างการประมวลผล
- รองรับการหยุดรอมนุษย์ (รอการอนุมัติ)
- เล่นการทำงานซ้ำเพื่อแก้ไขข้อบกพร่อง
ตัวตรวจสอบจุดของ LangGraph จะคงสถานะไว้ที่ขอบเขตของทุกโหนด
ตัวตรวจสอบจุดในหน่วยความจำ
สำหรับการพัฒนาและการทดสอบ:
from langgraph.checkpoint.memory import MemorySaver
checkpointer = MemorySaver()
app = graph.compile(checkpointer=checkpointer)ตัวตรวจสอบจุด Postgres
สำหรับระบบจริง:
from langgraph.checkpoint.postgres import PostgresSaver
checkpointer = PostgresSaver.from_conn_string('postgresql://...')
await checkpointer.setup() # create tables
app = graph.compile(checkpointer=checkpointer)ตัวตรวจสอบจุด Sqlite
การคงข้อมูลไว้ในเครื่องโดยไม่ต้องมีเซิร์ฟเวอร์ฐานข้อมูล:
from langgraph.checkpoint.sqlite import SqliteSaver
import sqlite3
conn = sqlite3.connect('agents.db', check_same_thread=False)
checkpointer = SqliteSaver(conn)รหัสเธรด
การทำงานทุกครั้งมี thread_id ซึ่งคล้ายกับรหัสเซสชัน ผู้ใช้แต่ละรายจะได้รับ thread_id แยกกัน หากต้องการทำงานต่อ ให้ใช้รหัสเดิม:
config = {'configurable': {'thread_id': 'user-42-conversation-1'}}
result = app.invoke({'messages': [...]}, config)การทำงานต่อจากเดิม
เรียกใช้ invoke ด้วย thread_id เดิมและไม่ส่ง input — เอเจนต์จะทำงานต่อจากจุดที่หยุดไว้:
# Some hours later:
app.invoke(None, config)การตรวจสอบสถานะ
อ่านสถานะปัจจุบันของเธรด:
snapshot = app.get_state(config)
print(snapshot.values) # current state dict
print(snapshot.next) # which node is next
print(snapshot.created_at)ประวัติสถานะ
ย้อนดูจุดตรวจสอบทั้งหมด:
for snapshot in app.get_state_history(config):
print(snapshot.created_at, snapshot.values)การแยกแขนงการทำงาน
คุณสามารถอัปเดตสถานะที่จุดตรวจสอบใด ๆ ในอดีต แล้วเรียกใช้ใหม่จากจุดนั้นได้ ซึ่งมีประโยชน์สำหรับการแก้ไขข้อบกพร่องแบบ "ถ้าเป็นเช่นนั้น"
app.update_state(config, {'plan': 'a different plan'})
app.invoke(None, config) # continue with the new planการหยุดรอมนุษย์ด้วย interrupt_before
หยุดการทำงานก่อนโหนดที่มีความละเอียดอ่อน เพื่อให้มนุษย์ตรวจสอบ:
app = graph.compile(
checkpointer=checkpointer,
interrupt_before=['send_email']
)
result = app.invoke({'messages': [...]}, config)
# Agent paused. Human inspects state.
# When approved:
app.invoke(None, config)การทำงานต่อหลังแก้ไข
มนุษย์สามารถแก้ไขสถานะก่อนทำงานต่อได้:
app.update_state(config, {'email_draft': 'final version'})
app.invoke(None, config)การติดตามค่าใช้จ่ายระหว่างจุดตรวจสอบ
สถานะที่คงไว้สามารถรวมตัวนับโทเค็นและค่าใช้จ่ายที่ยังคงอยู่แม้ระบบหยุดทำงาน:
class State(TypedDict):
cost_usd: Annotated[float, lambda a, b: a + b]
# Every LLM-calling node adds to it.การล้างข้อมูล
เธรดเก่าจะสะสมเพิ่มขึ้น ควรลบเธรดที่เสร็จสมบูรณ์เป็นระยะเพื่อควบคุมพื้นที่จัดเก็บ:
await checkpointer.delete(thread_id='old-thread')การทำงานต่อของเธรด
คุณจะทำงานของเอเจนต์ต่อหลังจากระบบหยุดทำงานได้อย่างไร
สรุปทบทวน
ใช้ SqliteSaver สำหรับการทำงานในเครื่อง และ PostgresSaver สำหรับระบบจริง รหัสเธรดช่วยแยกการทำงานแต่ละครั้ง ใช้ร่วมกับ interrupt_before สำหรับกระบวนการที่หยุดรอมนุษย์
เรียนรู้ AI Agents ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 60
- บทเรียน
- 239
คำถามที่พบบ่อย
บทเรียน “การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)”
บันทึกสถานะลงใน Postgres หรือ SQLite เพื่อให้เอเจนต์ที่ทำงานยาวนานสามารถหยุดชั่วคราว ทำงานต่อ และตรวจสอบย้อนหลังได้ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน
- โหนด ขอบ และสถานะ
- การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข
- การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)