การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข
ใช้ add_conditional_edges เพื่อส่งงานตามสถานะ โดยเอเจนต์จะตัดสินใจว่าจะไปที่ใดต่อ
การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
เหตุใดจึงต้องใช้เส้นเชื่อมแบบมีเงื่อนไข
เอเจนต์จริงต้องตัดสินใจ หลังจากขั้นตอนหนึ่ง ขั้นตอนถัดไปจะขึ้นอยู่กับสถานะปัจจุบัน เส้นเชื่อมแบบมีเงื่อนไขใช้เข้ารหัสตรรกะนี้
การเพิ่มเส้นเชื่อมแบบมีเงื่อนไข
มีองค์ประกอบสามอย่าง: โหนดต้นทาง ฟังก์ชันกำหนดเส้นทาง และแผนผังปลายทาง:
def route_after_planning(state: AgentState) -> str:
if state.get('confidence', 0) > 0.8:
return 'execute'
return 'replan'
graph.add_conditional_edges(
'planner',
route_after_planning,
{
'execute': 'executor',
'replan': 'planner'
}
)รูปแบบลายเซ็นของฟังก์ชันกำหนดเส้นทาง
ตัวกำหนดเส้นทางรับสถานะทั้งหมดและส่งคืนสตริง (หรือรายการสตริงสำหรับแขนงแบบขนาน)
ลูปกลับเข้าตัวเอง
เส้นเชื่อมสามารถวนกลับไปยังโหนดเดิมได้ ซึ่งใช้สำหรับการลองใหม่:
graph.add_conditional_edges(
'validator',
lambda s: 'retry' if not s['valid'] else 'done',
{'retry': 'planner', 'done': END}
)แขนงแบบขนาน
ส่งคืนรายการชื่อโหนดเพื่อเรียกใช้โหนดปลายทางหลายโหนดแบบขนาน:
def fan_out(state):
return ['search_news', 'search_arxiv', 'search_github']
graph.add_conditional_edges('planner', fan_out)การรวมแขนงแบบขนาน
แขนงแบบขนานจะกลับมารวมกันที่โหนดปลายทางร่วม สถานะที่รวมกันจะผสานผลลัพธ์ของแต่ละแขนง (ใช้ตัวลดรูปสำหรับรายการหรือพจนานุกรม)
การกำหนดเส้นทางตามการเรียกใช้เครื่องมือ
รูปแบบคลาสสิก: หลังจาก LLM ตอบกลับ ให้ตรวจสอบ tool_calls แล้วกำหนดเส้นทางตามนั้น:
def should_use_tool(state):
last_msg = state['messages'][-1]
if last_msg.tool_calls:
return 'tools'
return END
graph.add_conditional_edges('agent', should_use_tool, {'tools': 'tools', END: END})การกำหนดเส้นทางหลายทางเลือก
ตรรกะ switch-case:
def route_by_intent(state):
intent = classify(state['messages'][-1])
return {'q': 'qa_agent', 'order': 'order_agent', 'support': 'support_agent'}.get(intent, 'fallback')การกำหนดเส้นทางด้วยการเรียกใช้ LLM
คุณสามารถใช้ LLM เพื่อตัดสินใจว่าจะไปที่ใดต่อไป:
def llm_router(state):
decision = llm.invoke(f'Route this to: search, calculate, or end?\nState: {state}').content.strip()
return decision # 'search' / 'calculate' / ENDหลีกเลี่ยงลูปไม่สิ้นสุด
หากไม่มีตัวนับขั้นตอน เอเจนต์อาจวนลูปตลอดไป ให้เพิ่มตัวนับลงในสถานะ:
class State(TypedDict):
step: int
...
def route(state):
if state['step'] >= MAX_STEPS:
return END
return 'continue'Increment Counter Reducer
def add(old: int, new: int) -> int:
return old + new
class State(TypedDict):
step: Annotated[int, add]
def any_node(state):
return {'step': 1} # increments by 1การแสดงภาพแขนง
ไดอะแกรม Mermaid ของกราฟที่มีเส้นเชื่อมแบบมีเงื่อนไขจะแสดงรูปสี่เหลี่ยมข้าวหลามตัดสำหรับการตัดสินใจ ซึ่งมีประโยชน์สำหรับการทบทวน:
print(app.get_graph().draw_mermaid())เส้นเชื่อมแบบมีเงื่อนไข
ฟังก์ชันกำหนดเส้นทางใน add_conditional_edges ส่งคืนอะไร
สรุปทบทวน
เส้นเชื่อมแบบมีเงื่อนไขคือวิธีที่เอเจนต์ใช้ตัดสินใจ เพิ่มตัวนับขั้นตอนเพื่อหลีกเลี่ยงลูป และแสดงภาพกราฟเพื่อให้ตรวจสอบได้ง่าย
คำถามที่พบบ่อย
บทเรียน “การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข”
ใช้ add_conditional_edges เพื่อส่งงานตามสถานะ โดยเอเจนต์จะตัดสินใจว่าจะไปที่ใดต่อ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุใดกราฟจึงเหนือกว่าสายงานแบบแบน
- โหนด ขอบ และสถานะ
- การกำหนดเส้นทางและการแตกแขนงตามเงื่อนไข
- การคงอยู่ของสถานะกราฟ (จุดตรวจสอบ)