เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน
เอเจนต์จริงต้องมีลูป การลองใหม่ และเงื่อนไข DAG และกราฟจึงแสดงสิ่งที่สายงานไม่สามารถแสดงได้
เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
ข้อจำกัดของเชน
เชน LCEL เหมาะอย่างยิ่งกับลำดับการทำงานเชิงเส้น: A -> B -> C แต่จะทำได้ไม่ดีเมื่อคุณต้องการ:
- ลูป (ลองใหม่จนกว่าจะสำเร็จ)
- การแตกแขนงแบบมีเงื่อนไข (ตัดสินใจเลือก A หรือ B ตามสถานะ)
- การหยุดรอมนุษย์ในกระบวนการ
- สถานะที่คงอยู่ระหว่างการเรียกใช้
เอเจนต์จริงคือกราฟ
เอเจนต์จะตัดสินใจทีละขั้น เอเจนต์จริงอาจทำสิ่งต่อไปนี้:
- วางแผน
- ค้นหาข้อมูล
- หากพบ ให้ร่างคำตอบ หากไม่พบ ให้ค้นหาอีกครั้ง
- ตรวจสอบความถูกต้อง
- หากไม่ถูกต้อง ให้แก้ไข มิฉะนั้นให้ส่งคืน
นี่คือกราฟ ไม่ใช่เส้นตรง
แนะนำ LangGraph
LangGraph (โดยทีม LangChain) ช่วยให้คุณกำหนดเอเจนต์เป็นกราฟ:
- โหนด — ฟังก์ชันที่อ่านและอัปเดตสถานะ
- เส้นเชื่อม — โหนดใดจะทำงานถัดไป
- สถานะ — พจนานุกรมร่วมที่คงอยู่
Nodes Are Just Functions
from langgraph.graph import StateGraph
class AgentState(TypedDict):
messages: list
plan: str
answer: str
def plan_step(state: AgentState) -> AgentState:
plan = generate_plan(state['messages'])
return {'plan': plan}Edges Connect Nodes
from langgraph.graph import StateGraph, END
graph = StateGraph(AgentState)
graph.add_node('plan', plan_step)
graph.add_node('search', search_step)
graph.add_node('answer', answer_step)
graph.set_entry_point('plan')
graph.add_edge('plan', 'search')
graph.add_edge('search', 'answer')
graph.add_edge('answer', END)
app = graph.compile()Running the Graph
result = app.invoke({'messages': [{'role': 'user', 'content': 'What is RAG?'}]})
print(result['answer'])การอัปเดตสถานะจะถูกรวมเข้าด้วยกัน
เมื่อโหนดส่งคืนพจนานุกรมบางส่วน LangGraph จะรวมพจนานุกรมนั้นเข้ากับสถานะ คุณไม่จำเป็นต้องเขียนสถานะทั้งหมดในทุกขั้น
การแตกแขนงแบบมีเงื่อนไข
ใช้ add_conditional_edges เพื่อกำหนดเส้นทางตามสถานะ:
def needs_more_info(state):
if state['confidence'] < 0.7:
return 'search'
return 'answer'
graph.add_conditional_edges('plan', needs_more_info, {
'search': 'search',
'answer': 'answer'
})Loops Are Just Edges Back
graph.add_edge('search', 'plan') # loop back to planner
# The planner decides if more search is needed.การแสดงภาพ
LangGraph สร้างไดอะแกรม Mermaid ของกราฟให้คุณ ซึ่งเหมาะอย่างยิ่งสำหรับแก้ไขข้อบกพร่องของโครงสร้าง:
from IPython.display import Image
Image(app.get_graph().draw_mermaid_png())เทียบกับลูป while ที่เขียนเอง
คุณสามารถทำเช่นนี้ด้วยลูป while ของไพธอน แต่ LangGraph เพิ่มสิ่งต่อไปนี้:
- โครงสร้างกราฟที่ชัดเจน (นำไปแสดงภาพได้)
- การสร้างจุดตรวจสอบในตัว
- การสตรีมการอัปเดตสถานะ
- องค์ประกอบพื้นฐานสำหรับการหยุดรอมนุษย์
LangGraph + LCEL
โหนดสามารถเป็นสิ่งที่เรียกใช้ได้ใด ๆ รวมถึงเชน LCEL ผสมผสานได้ตามต้องการ:
summarise_chain = prompt | model | parser
def summarise_node(state):
return {'summary': summarise_chain.invoke(state['text'])}เมื่อใดควรใช้กราฟ
สถานการณ์ใดได้รับประโยชน์จาก LangGraph มากกว่าเชน LCEL แบบราบ
สรุปทบทวน
กราฟดีกว่าเชนเมื่อคุณต้องการลูป การแตกแขนง การคงอยู่ หรือการหยุดรอมนุษย์ LangGraph มอบโครงสร้างให้คุณ
คำถามที่พบบ่อย
บทเรียน “เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน”
เอเจนต์จริงต้องมีลูป การลองใหม่ และเงื่อนไข DAG และกราฟจึงแสดงสิ่งที่สายงานไม่สามารถแสดงได้ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน
- โหนด ขอบ และสถานะ
- การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข
- การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)