0Pricing
AI Agents · บทเรียน

โหนด ขอบ และสถานะ

กำหนดสถานะ TypedDict เขียนฟังก์ชันโหนดที่เปลี่ยนแปลงสถานะ และเชื่อมต่อด้วยขอบแบบมีทิศทาง

โหนด ขอบ และสถานะ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

ออบเจ็กต์สถานะ

เอเจนต์ LangGraph ทุกตัวมีสถานะที่ระบุชนิดข้อมูล ซึ่งโดยปกติจะเป็น TypedDict:

from typing import TypedDict
from typing_extensions import Annotated
import operator

class AgentState(TypedDict):
    messages: Annotated[list, operator.add]   # appends instead of replaces
    plan: str
    answer: str

การทำงานของการอัปเดตสถานะ

แต่ละโหนดส่งคืนพจนานุกรมบางส่วน LangGraph จะ:

  1. อ่านสถานะปัจจุบัน
  2. เรียกโหนดพร้อมสถานะนั้น
  3. รวมพจนานุกรมบางส่วนที่ส่งคืนกลับเข้าไป

สำหรับฟิลด์รายการที่ใช้ operator.add รายการใหม่จะถูกต่อท้ายแทนการเขียนทับ

Defining a Node

def planner(state: AgentState) -> dict:
    prompt = f'User wants: {state["messages"][-1].content}'
    plan = llm.invoke(prompt).content
    return {'plan': plan}

Registering the Node

from langgraph.graph import StateGraph, END

graph = StateGraph(AgentState)
graph.add_node('planner', planner)

การกำหนดเส้นเชื่อม

เส้นเชื่อมแบบคงที่จะทำงานโดยไม่มีเงื่อนไข:

graph.set_entry_point('planner')
graph.add_edge('planner', 'researcher')
graph.add_edge('researcher', 'writer')
graph.add_edge('writer', END)

เส้นเชื่อมแบบมีเงื่อนไข

สำหรับการแตกแขนง ให้ลงทะเบียนฟังก์ชันที่เลือกโหนดถัดไป:

def route(state: AgentState) -> str:
    if state['needs_research']:
        return 'researcher'
    return 'writer'

graph.add_conditional_edges(
    'planner',
    route,
    {'researcher': 'researcher', 'writer': 'writer'}
)

END เป็นกรณีพิเศษ

END คือโหนดสิ้นสุด เส้นเชื่อมใด ๆ ที่ไปยัง END จะยุติกราฟและส่งคืนสถานะปัจจุบัน

Compiling the Graph

app = graph.compile()
result = app.invoke({'messages': [...]})
print(result['answer'])

การสตรีมการอัปเดตสถานะ

ดูการเปลี่ยนแปลงของสถานะแบบเรียลไทม์:

for event in app.stream({'messages': [...]}):
    print(event)
# Each event is the state diff from the just-completed node.

ฟังก์ชันลดรูป

สำหรับการรวมสถานะที่ซับซ้อน ให้ใช้ตัวลดรูปที่กำหนดเอง:

def merge_facts(old, new):
    return {**old, **new}

class State(TypedDict):
    facts: Annotated[dict, merge_facts]

กราฟย่อย

โหนดหนึ่งสามารถเป็นกราฟที่คอมไพล์แล้วอีกกราฟหนึ่งได้ ซึ่งเหมาะสำหรับเอเจนต์แบบลำดับชั้น:

subgraph = StateGraph(SubState).compile()
graph.add_node('subprocess', subgraph)

โหนดแบบอะซิงโครนัส

โหนดสามารถเป็นฟังก์ชันแบบอะซิงโครนัสได้:

async def fetch_node(state):
    data = await fetch_async(state['url'])
    return {'data': data}

result = await app.ainvoke({...})

ข้อผิดพลาดในโหนด

หากโหนดส่งข้อผิดพลาด LangGraph จะส่งต่อข้อผิดพลาดและหยุดทำงาน หากต้องการจัดการอย่างราบรื่น ให้ดักจับข้อผิดพลาดภายในโหนด:

def safe_search(state):
    try:
        return {'results': search(state['query'])}
    except Exception as e:
        return {'error': str(e), 'results': []}

การอัปเดตสถานะ

จะเกิดอะไรขึ้นเมื่อโหนดส่งคืน {'plan': '...'} เป็นพจนานุกรม

สรุปทบทวน

กำหนดสถานะ TypedDict เขียนฟังก์ชันที่ส่งคืนการอัปเดตบางส่วน เพิ่มโหนดและเส้นเชื่อม คอมไพล์ แล้วเรียกใช้ นั่นคือ LangGraph

คำถามที่พบบ่อย

บทเรียน “โหนด ขอบ และสถานะ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “โหนด ขอบ และสถานะ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “โหนด ขอบ และสถานะ”

กำหนดสถานะ TypedDict เขียนฟังก์ชันโหนดที่เปลี่ยนแปลงสถานะ และเชื่อมต่อด้วยขอบแบบมีทิศทาง คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “โหนด ขอบ และสถานะ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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