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