AI Agents · บทเรียน

การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)

บันทึกสถานะลงใน Postgres หรือ SQLite เพื่อให้เอเจนต์ที่ทำงานยาวนานสามารถหยุดชั่วคราว ทำงานต่อ และตรวจสอบย้อนหลังได้

บทเรียน 4 จาก 415 ขั้นตอน

การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ) เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน
  2. โหนด ขอบ และสถานะ
  3. การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข
  4. การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)
← กลับไปที่ AI Agents